%%
%% This is file `microtype.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% microtype.dtx  (with options: `package')
%% 
%% ------------------------------------------------------------------------
%% 
%%                       The `microtype' package
%%         Subliminal refinements towards typographical perfection
%%           Copyright (c) 2004--2025 R Schlicht <w.m.l@gmx.net>
%% 
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License, either version 1.3c of this license or (at
%% your option) any later version. The latest version of this license is in:
%% https://www.latex-project.org/lppl.txt, and version 1.3c or later is part
%% of all distributions of LaTeX version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status `maintained'.
%% 
%% This work consists of the files microtype.dtx, microtype-utf.dtx and
%% microtype.ins and the derived files microtype.sty, microtype-pdftex.def,
%% microtype-luatex.def, microtype-xetex.def, microtype.lua, letterspace.sty
%% and microtype-show.sty.
%% 
%% ------------------------------------------------------------------------
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage
  {microtype}
  [2025/02/11 v3.2a
   Micro-typographical refinements
   (RS)]
\def\MT@MT
  {microtype}
\let\MT@restore@catcodes\@empty
\def\MT@fix@catcode#1#2{%
  \edef\MT@restore@catcodes{%
    \MT@restore@catcodes
    \catcode#1=\the\catcode#1\relax
  }%
  \catcode#1=#2\relax
}
\MT@fix@catcode{17}{14}% ^^Q (comment)
\MT@fix@catcode{24} {9}% ^^X (ignore)
\MT@fix@catcode{33}{12}% !
\MT@fix@catcode{34}{12}% "
\MT@fix@catcode{36} {3}% $ (math shift)
\MT@fix@catcode{39}{12}% '
\MT@fix@catcode{42}{12}% *
\MT@fix@catcode{43}{12}% +
\MT@fix@catcode{44}{12}% ,
\MT@fix@catcode{45}{12}% -
\MT@fix@catcode{58}{12}% :
\MT@fix@catcode{60}{12}% <
\MT@fix@catcode{61}{12}% =
\MT@fix@catcode{62}{12}% >
\MT@fix@catcode{63}{12}% ?
\MT@fix@catcode{94} {7}% ^ (superscript)
\MT@fix@catcode{96}{12}% `
\MT@fix@catcode{124}{12}% |
\newcommand*\DeclareMicrotypeSet[3][]{}
\newcommand*\UseMicrotypeSet[2][]{}
\newcommand*\DeclareMicrotypeSetDefault[2][]{}
\newcommand*\SetProtrusion[3][]{}
\newcommand*\SetExpansion[3][]{}
\newcommand*\SetTracking[3][]{}
\newcommand*\SetExtraKerning[3][]{}
\newcommand*\SetExtraSpacing[3][]{}
\newcommand*\DisableLigatures[2][]{}
\newcommand*\DeclareCharacterInheritance[3][]{}
\newcommand*\DeclareMicrotypeVariants[1]{}
\newcommand*\DeclareMicrotypeAlias[2]{}
\newcommand*\LoadMicrotypeFile[1]{}
\newcommand*\DeclareMicrotypeFilePrefix[1]{}
\newcommand*\DeclareMicrotypeBabelHook[2]{}
\newcommand*\microtypesetup[1]{}
\newcommand*\microtypecontext[1]{}
\newcommand*\textmicrotypecontext[2]{#2}
\newcommand\leftprotrusion[1]{#1}
\newcommand\rightprotrusion[1]{#1}
\providecommand*\noprotrusion{}
\newcommand*\noprotrusionifhmode{}
\@ifpackageloaded{letterspace}{\let\MT@textls\relax}{%
\newcommand*\lsstyle{}
\newcommand\textls[2][]{}
\def\textls#1#{}
\newcommand*\lslig[1]{#1}
}
\def\DeclareMicrotypeSet#1#{\@gobbletwo}
\def\DeclareMicrotypeVariants#1#{\@gobble}
\@onlypreamble\DeclareMicrotypeSet
\@onlypreamble\UseMicrotypeSet
\@onlypreamble\DeclareMicrotypeSetDefault
\@onlypreamble\DisableLigatures
\@onlypreamble\DeclareMicrotypeVariants
\@onlypreamble\DeclareMicrotypeBabelHook
\@onlypreamble\DeclareMicrotypeFilePrefix
\expandafter\let\csname ver@letterspace.sty\endcsname\@empty
\def\MT@old@cmd#1#2{%
  \newcommand*#1{\MT@error{%
    \string#1 is deprecated. Please use\MessageBreak
    \string#2 instead}{As I said}%
    \let #1#2#2}}
\MT@old@cmd\DeclareMicroTypeAlias\DeclareMicrotypeAlias
\MT@old@cmd\DeclareMicroTypeSet  \DeclareMicrotypeSet
\MT@old@cmd\UseMicroTypeSet      \UseMicrotypeSet
\MT@old@cmd\LoadMicroTypeFile    \LoadMicrotypeFile
\def\MT@warning{\PackageWarning\MT@MT}
\def\MT@warning@nl#1{\MT@warning{#1\@gobble}}
\def\MT@info{\PackageInfo\MT@MT}
\def\MT@info@nl#1{\MT@info{#1\@gobble}}
\let\MT@vinfo\@gobble
\def\MT@error{\PackageError\MT@MT}
\def\MT@warn@err#1{\MT@error{#1}{%
  This error message appears because you loaded the `\MT@MT'\MessageBreak
  package with the option `verbose=errors'. Consult the documentation\MessageBreak
  in \MT@MT.pdf to find out what went wrong.}}
\ifcase 0%
  \ifx\eTeXversion\@undefined 1\else
    \ifx\eTeXversion\relax    1\else
      \ifcase\eTeXversion     1\fi
    \fi
  \fi
\else
  \catcode`\^^Q=9 \catcode`\^^X=14
\fi
\def\MT@clear@options{%
  \AtEndOfPackage{\let\@unprocessedoptions\relax\MT@restore@catcodes}%
  \let\CurrentOption\@empty
}
\ifx\normalpdftexversion\@undefined \else
  \let\pdftexversion \normalpdftexversion
  \let\pdftexrevision\normalpdftexrevision
  \let\pdfoutput     \normalpdfoutput
\fi
\let\MT@engine\relax
\newif\ifMT@engine@unfit
\MT@engine@unfittrue
\ifx\pdftexversion\@undefined \else
  \ifx\pdftexversion\relax \else
    \def\MT@engine{pdf}
    \def\MT@engine@minversion{0.14f}
    \ifnum\pdftexversion
        > 13
      \MT@engine@unfitfalse
      \ifnum \pdftexversion=14
        \ifnum \expandafter`\pdftexrevision < `f
          \MT@engine@unfittrue
        \fi
      \fi
    \fi
  \fi
\fi
\ifx\directlua\@undefined \else
  \ifx\directlua\relax \else
    \def\MT@engine{lua}
    \MT@engine@unfitfalse
  \fi
\fi
\ifx\MT@engine\relax
  \ifx\XeTeXversion\@undefined \else
    \ifx\XeTeXversion\relax \else
      \def\MT@engine{xe}
      \def\MT@engine@minversion{0.9997}
      \ifdim 0\XeTeXrevision pt > 0.9996pt
        \MT@engine@unfitfalse
      \fi
    \fi
  \fi
\fi
\ifMT@engine@unfit
  \MT@warning@nl{You
    \ifx\MT@engine\relax
      don't seem to be using pdftex%
      , luatex or xetex%
     .\MessageBreak `\MT@MT' only works with these engines.%
    \else
      are using a \MT@engine tex version older than
       \MT@engine@minversion
     .\MessageBreak `\MT@MT' does not work with this version.%
      \MessageBreak Please install a newer version of \MT@engine tex.%
    \fi
    \MessageBreak I will quit now}
  \MT@clear@options
\endinput\fi
\RequirePackage{keyval}[1997/11/10]
^^X\RequirePackage{etoolbox}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\newtoks\MT@toks
\newbox\MT@tempbox
\newif\ifMT@if@
\newif\ifMT@protrusion
\newif\ifMT@expansion
\newif\ifMT@auto
\newif\ifMT@selected
\newif\ifMT@noligatures
\newif\ifMT@draft
\newif\ifMT@disable
\newif\ifMT@spacing
\newif\ifMT@kerning
\newif\ifMT@tracking
\newif\ifMT@babel
\let\MT@pr@level\tw@
\let\MT@ex@level\tw@
\let\MT@pr@factor\@m
\let\MT@ex@factor\@m
\let\MT@sp@factor\@m
\let\MT@kn@factor\@m
\let\MT@pr@unit\@empty
\let\MT@sp@unit\m@ne
\def\MT@kn@unit{1em}
\let\MT@stretch\m@ne
\let\MT@shrink \m@ne
\let\MT@step   \m@ne
\def\MT@pr@min{-\@m}
\let\MT@pr@max\@m
\let\MT@ex@min\z@
\let\MT@ex@max\@m
\def\MT@sp@min{-\@m}
\let\MT@sp@max\@m
\def\MT@kn@min{-\@m}
\let\MT@kn@max\@m
\def\MT@tr@min{-\@m}
\let\MT@tr@max\@m
\def\MT@factor@default{1000 }
\def\MT@stretch@default{20 }
\def\MT@shrink@default{20 }
\let\MT@letterspace\m@ne
\def\MT@letterspace@default{50}
\newif\ifMT@document
\def\MT@glet{\global\let}
\def\MT@exp@cs#1#2{\expandafter#1\csname#2\endcsname}
\def\MT@exp@gcs#1#2{\begingroup\expandafter\endgroup\expandafter#1\csname#2\endcsname}
\def\MT@def@n{\MT@exp@cs\def}
\def\MT@gdef@n{\MT@exp@gcs\gdef}
\def\MT@edef@n{\MT@exp@cs\edef}
\def\MT@xdef@n{\MT@exp@gcs\xdef}
\def\MT@let@nc{\MT@exp@cs\let}
\def\MT@glet@nc{\MT@exp@gcs\MT@glet}
\def\MT@let@cn#1#2{\expandafter\let\expandafter#1\csname #2\endcsname}
\def\MT@let@nn{\MT@exp@cs\MT@let@cn}
\def\MT@glet@nn{\MT@exp@gcs{\global\expandafter\MT@let@cn}}
\def\MT@@font{\expandafter\string\MT@font}
\def\MT@exp@one@n#1#2{\expandafter#1\expandafter{#2}}
\def\MT@exp@two@c#1{\expandafter\expandafter\expandafter#1\expandafter}
\def\MT@exp@two@n#1#2#3{%
  \expandafter\expandafter\expandafter
    #1\expandafter\expandafter\expandafter
      {\expandafter#2\expandafter}\expandafter{#3}}
\def\MT@ifdefined@c@T#1{%
^^X  \ifdefined#1\expandafter\@firstofone\else\expandafter\@gobble\fi
^^Q  \ifx#1\@undefined\expandafter\@gobble\else\expandafter\@firstofone\fi
}
\def\MT@ifdefined@c@TF#1{%
^^X  \ifdefined#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
^^Q  \ifx#1\@undefined
^^Q    \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
}
\def\MT@ifdefined@n@T#1{%
^^X  \ifcsname#1\endcsname\expandafter\@firstofone\else\expandafter\@gobble\fi
^^Q  \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
^^Q    \expandafter\@gobble\else\expandafter\@firstofone\fi
}
\def\MT@ifdefined@n@TF#1{%
^^X  \ifcsname#1\endcsname\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
^^Q  \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
^^Q    \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
}
\def\MT@if@expanding@F{\let\MT@if@expanding@F@\MT@if@expanding@F@\@firstofone}
\def\MT@if@expanding@F@#1#2#3{\relax\relax}
\def\MT@detokenize@n#1{%
^^X  \expandafter\MT@rem@last@space\detokenize{#1} \@nil
^^Q  \string#1%
}
\def\MT@detokenize@c#1{%
^^X  \MT@exp@one@n\MT@detokenize@n#1%
^^Q  \MT@exp@two@c\MT@rem@last@space\strip@prefix\meaning#1 \@nil
}
\def\MT@rem@last@space#1 #2{#1%
  \ifx\@nil#2\else \space
  \expandafter\MT@rem@last@space\expandafter#2\fi
}
\begingroup
\catcode`\%=12
\catcode`\&=14
\gdef\MT@ifempty#1{&
  \if %#1%&
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\endgroup
\def\MT@ifdim#1#2#3{%
  \ifdim #1\p@ #2 #3\p@
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\def\MT@xadd#1#2{%
  \ifx#1\relax
    \xdef#1{#2}%
  \else
    \xdef#1{#1#2}%
  \fi
}
\def\MT@xaddb#1#2{%
  \ifx#1\relax
    \xdef#1{#2}%
  \else
    \xdef#1{#2#1}%
  \fi
}
\def\MT@map@clist@n#1#2{%
  \ifx\@empty#1\else
    \def\MT@clist@function##1{#2}%
    \MT@map@clist@#1,\@nil,\@nnil
  \fi
}
\def\MT@map@clist@c#1{\MT@exp@one@n\MT@map@clist@n#1}
\def\MT@map@clist@#1,{%
  \ifx\@nil#1%
    \expandafter\MT@clist@break
  \fi
  \MT@clist@function{#1}%
  \MT@map@clist@
}
\let\MT@clist@function\@gobble
\def\MT@clist@break#1\@nnil{}
\def\MT@map@tlist@n#1#2{\MT@map@tlist@#2#1\@nnil}
\def\MT@map@tlist@c#1#2{\expandafter\MT@map@tlist@\expandafter#2#1\@nnil}
\def\MT@map@tlist@#1#2{%
  \ifx\@nnil#2\else
    #1{#2}%
    \expandafter\MT@map@tlist@
    \expandafter#1%
  \fi
}
\def\MT@tlist@break#1\@nnil{\fi}
\newif\ifMT@inlist@
\def\MT@in@clist#1#2{%
  \def\MT@res@a##1,#1,##2##3\@nnil{%
    \ifx##2\@empty
      \MT@inlist@false
    \else
      \MT@inlist@true
    \fi
  }%
  \expandafter\MT@res@a\expandafter,#2,#1,\@empty\@nnil
}
\def\MT@rem@from@clist#1#2{%
  \def\MT@res@a##1,#1,##2\MT@res@a{##1,##2\MT@res@b}%
  \def\MT@res@b##1,\MT@res@b##2\MT@res@b{\ifx,##1\@empty\else##1\fi}%
  \xdef#2{\MT@exp@two@c\MT@res@b\MT@res@a\expandafter,#2,\MT@res@b,#1,\MT@res@a}%
}
\def\MT@in@tlist#1#2{%
  \MT@inlist@false
  \def\MT@res@a{#1}%
  \MT@map@tlist@c#2\MT@in@tlist@
}
\def\MT@in@tlist@#1{%
  \edef\MT@res@b{#1}%
  \ifx\MT@res@a\MT@res@b
    \MT@inlist@true
    \expandafter\MT@tlist@break
  \fi
}
\def\MT@in@rlist#1{%
  \MT@inlist@false
  \MT@map@tlist@c#1\MT@in@rlist@
}
\def\MT@in@rlist@#1{\expandafter\MT@in@rlist@@#1}
\def\MT@in@rlist@@#1#2#3{%
  \MT@ifdim{#2}=\m@ne{%
    \MT@ifdim{#1}=\MT@size
      \MT@inlist@true
      \relax
  }{%
    \MT@ifdim\MT@size<{#1}\relax{%
      \MT@ifdim\MT@size<{#2}%
        \MT@inlist@true
        \relax
    }%
  }%
  \ifMT@inlist@
    \def\MT@size@name{#3}%
    \expandafter\MT@tlist@break
  \fi
}
\def\MT@loop#1\MT@repeat{%
  \def\MT@iterate{#1\relax\expandafter\MT@iterate\fi}%
  \MT@iterate \let\MT@iterate\relax
}
\let\MT@repeat\fi
\def\MT@while@num#1#2#3{%
  \@tempcnta#1\relax
  \MT@loop #3%
    \advance\@tempcnta \@ne
    \ifnum\@tempcnta < #2\MT@repeat
}
\newcount\MT@count
\def\MT@increment#1{%
^^X  \edef#1{\number\numexpr #1 + 1\relax}%
^^Q  \MT@count=#1\relax
^^Q  \advance\MT@count \@ne
^^Q  \edef#1{\number\MT@count}%
}
\def\MT@scale#1#2#3{%
^^Q  \multiply #1 #2\relax
  \ifnum #3 = \z@
^^X    #1=\numexpr #1 * #2\relax
  \else
^^X    #1=\numexpr #1 * #2 / #3\relax
^^Q    \divide #1 #3\relax
  \fi
}
\def\MT@abbr@pr{protrusion}
\def\MT@abbr@ex{expansion}
\def\MT@abbr@pr@c{protrusion codes}
\def\MT@abbr@ex@c{expansion codes}
\def\MT@abbr@pr@inh{protrusion inheritance}
\def\MT@abbr@ex@inh{expansion inheritance}
\def\MT@abbr@nl{noligatures}
\def\MT@abbr@sp{spacing}
\def\MT@abbr@sp@c{interword spacing codes}
\def\MT@abbr@sp@inh{interword spacing inheritance}
\def\MT@abbr@kn{kerning}
\def\MT@abbr@kn@c{kerning codes}
\def\MT@abbr@kn@inh{kerning inheritance}
\def\MT@abbr@tr{tracking}
\def\MT@abbr@tr@c{tracking amount}
\def\MT@rbba@protrusion{pr}
\def\MT@rbba@expansion{ex}
\def\MT@rbba@spacing{sp}
\def\MT@rbba@kerning{kn}
\def\MT@rbba@tracking{tr}
\def\MT@features{pr,ex,sp,kn,tr}
\def\MT@features@long{protrusion,expansion,spacing,kerning,tracking}
\def\MT@is@feature#1#2{%
  \MT@in@clist{#1}\MT@features@long
  \ifMT@inlist@
    \expandafter\@firstofone
  \else
    \MT@error{`#1' is not an available micro-typographic\MessageBreak
      feature. Ignoring #2}{Available features are: `\MT@features@long'.}%
    \expandafter\@gobble
  \fi
}
\@ifl@aded{tex}{wordcount}{%
  \MT@warning@nl{Detected the `wordcount' utility.\MessageBreak
    Disabling `\MT@MT', since it wouldn't work}%
  \MT@clear@options\endinput}\relax
\@ifclassloaded{minimal}{%
  \MT@warning@nl{Detected the `minimal' class.\MessageBreak
    Expect lots of warnings and some malfunctions.\MessageBreak
    You might want to use a proper class instead}%
}\relax
\let\MT@setup@\@empty
\def\MT@addto@setup{\g@addto@macro\MT@setup@}
\def\MT@with@package@T#1{\@ifpackageloaded{#1}\@firstofone\@gobble}
\def\MT@with@babel@and@T#1{%
  \MT@ifdefined@n@T{opt@babel.sty}{%
    \@expandtwoargs\MT@in@clist{#1}
      {\csname opt@babel.sty\endcsname,\@classoptionslist}%
    \ifMT@inlist@\expandafter\@secondoftwo\else\expandafter\@firstofone\fi
  }\@gobble
}
\def\MT@restore@p@h{\chardef\%`\% \chardef\#`\# }
\newif\ifMT@fontspec
\MT@with@package@T{fontspec}\MT@fontspectrue
\newif\ifMT@xunicode
\MT@with@package@T{xunicode}\MT@xunicodetrue
\IfFormatAtLeastTF{2020/10/01}
  {\IfFormatAtLeastTF{2021/11/15}
    {\AddToHook{package/fontspec/after}{\MT@fontspectrue}}
    {\AddToHook{package/after/fontspec}{\MT@fontspectrue}}}\relax
\let\MT@maybe@gobble@with@tikz\@firstofone
\def\MT@tikz@setup{%
  \def\MT@maybe@gobble@with@tikz{%
    \ifnum\tikz@expandcount>\z@
      \expandafter\@gobble
    \else
      \expandafter\@firstofone
    \fi}}
\def\MT@setupfont@hook{%
  \MT@if@false
  \MT@with@babel@and@T{spanish} \MT@if@true
  \MT@with@babel@and@T{galician}\MT@if@true
  \MT@with@babel@and@T{mexican} \MT@if@true
  \ifMT@if@\MT@ifdefined@c@T\percentsign{\let\%\percentsign}\fi
  \MT@with@package@T{csquotes}{%
    \@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax}%
  \MT@if@false
  \MT@with@package@T{hyperref}  \MT@if@true
  \MT@with@package@T{tex4ht}    \MT@if@true
  \MT@with@package@T{mathastext}\MT@if@true
  \ifMT@if@\MT@restore@p@h\fi
  \MT@with@package@T{tikz}\MT@tikz@setup
}
\MT@addto@setup{%
  \MT@with@package@T{pdfcprot}{%
    \MT@error{Detected the `pdfcprot' package!\MessageBreak
              `\MT@MT' and `pdfcprot' may not be used together}{%
The `pdfcprot' package provides an interface to character protrusion.\MessageBreak
So does the `\MT@MT' package. Using both packages at the same\MessageBreak
time will almost certainly lead to undesired results. Have your choice!}%
  }%
  \MT@with@package@T  {ledmac}\MT@ledmac@setup
  \MT@with@package@T {eledmac}\MT@ledmac@setup
  \MT@with@package@T{reledmac}\MT@ledmac@setup
  \MT@with@package@T{varwidth}\MT@varwidth@setup
  \MT@with@package@T{xunicode}\MT@xunicodetrue
  \MT@with@package@T{fontspec}\MT@fontspectrue
  \MT@glet\MT@setupfont@hook\@empty
 %\gdef\MT@setupfont@hook{\ifnum\tracingmacros>\z@\tracingnone
 %  \MT@info{->Silently doing my `magic' (Mittelbach) for font\MessageBreak->\MT@@font}\fi}%
  \MT@if@false
  \MT@with@babel@and@T{spanish} \MT@if@true
  \MT@with@babel@and@T{galician}\MT@if@true
  \MT@with@babel@and@T{mexican} \MT@if@true
  \ifMT@if@
    \g@addto@macro\MT@setupfont@hook{%
      \MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
  \fi
  \MT@with@package@T{csquotes}{%
    \@ifpackagelater{csquotes}{2005/05/11}{%
      \g@addto@macro\MT@setupfont@hook\@disablequotes
      \g@addto@macro\MT@prot@hook{%
        \def\csq@bqgroup{\begingroup\leavevmode
          \let\MT@csq@eqgroup\endgroup}%
        \let\csq@eqgroup\endgroup}%
    }{%
      \MT@warning@nl{%
        Should you receive warnings about unknown slot\MessageBreak
        numbers, try upgrading the `csquotes' package}%
    }%
  }%
  \MT@if@false
  \MT@with@package@T{hyperref}{%
    \pdfstringdefDisableCommands{%
      \MT@ltx@pickupfont
      \let\textmicrotypecontext\@secondoftwo
      \let\microtypecontext\@gobble
      \def\lsstyle{\pdfstringdefWarn\lsstyle}%
      \def\textls#1#{\pdfstringdefWarn\textls}%
    }%
    \MT@if@true
  }%
  \MT@with@package@T{tex4ht}{%
    \def\MT@apply@patch#1{\MT@info{Not applying patch `#1' (for tex4ht)}}%
    \def\MT@undo@patch#1{\MT@info{Not undoing patch `#1' (for tex4ht)}}%
    \MT@if@true
  }%
  \MT@with@package@T{mathastext}\MT@if@true
  \ifMT@if@\g@addto@macro\MT@setupfont@hook\MT@restore@p@h\fi
  \MT@with@package@T{listings}{%
    \g@addto@macro\MT@cfg@catcodes{%
      \MT@while@num{"30}{"3A}{\catcode\@tempcnta=12\relax}%
      \MT@while@num{"41}{"5B}{\catcode\@tempcnta=11\relax}%
      \MT@while@num{"61}{"7B}{\catcode\@tempcnta=11\relax}%
    }%
    \g@addto@macro\MT@setupfont@hook{%
      \catcode`\\=\z@
      \def\space{ }%
      \let\lst@ProcessLetter\@empty
    }%
  }%
  \ifx\SOUL@\@undefined\else
    \soulregister\lsstyle 0%
    \soulregister\textls  1%
    \ifx\XeTeXrevision\@undefined
      \let\MT@SOUL@doword\SOUL@doword
      \def\SOUL@doword{\pdfadjustspacing=\z@ \MT@SOUL@doword}%
    \fi
  \fi
  \MT@with@package@T{tikz}\MT@tikz@setup
  \MT@with@package@T{pinyin}{%
    \let\MT@orig@py@macron\py@macron
    \@ifpackagelater{pinyin}{2005/08/11}{% 4.6.0
      \def\py@macron#1#2{%
        \MT@ltx@pickupfont
        \MT@orig@py@macron{#1}{#2}%
        \MT@MT@pickupfont}%
    }{%
      \def\py@macron#1{%
        \MT@ltx@pickupfont
        \MT@orig@py@macron{#1}%
        \MT@MT@pickupfont}%
    }%
  }%
  \MT@with@package@T{unicode-math}{%
    \MT@let@nc{__um_sub_or_super:n}\relax
  }%
}
\newif\ifMT@patch@ok
\def\MT@patch@info#1{\MT@info{Applying patch `#1'}}
\def\MT@patch@warn#1{\MT@warning{Unable to apply patch `#1'}}
\def\MT@patch@undef#1{\MT@warning{Patch `#1' undefined.\MessageBreak Cannot apply it}}
\def\MT@patch@info@undo#1{\MT@info{Reverting patch `#1'}}
\let\MT@patches@def\@gobble
\def\MT@define@patch#1#2#3{%
  \MT@ifdefined@n@TF{MT@patch@@#1}{%
    \MT@warning{Patch `#1' already defined.\MessageBreak Cannot define it}%
  }{%
    \g@addto@macro\MT@patches@def{,#1}%
    \MT@gdef@n{MT@patch@@#1}{#2}%
    \MT@gdef@n{MT@patch@undo@@#1}{#3}%
  }%
}
\let\MT@redefined@patches\@empty
\def\MT@redefine@patch#1#2#3{%
  \g@addto@macro\MT@redefined@patches{%
    \MT@ifdefined@n@TF{MT@patch@@#1}{%
      \MT@gdef@n{MT@patch@@#1}{#2}%
      \MT@gdef@n{MT@patch@undo@@#1}{#3}%
    }{%
      \MT@warning{Patch `#1' undefined.\MessageBreak Cannot redefine it}%
    }%
  }%
}
\@onlypreamble\MT@define@patch
\@onlypreamble\MT@redefine@patch
\def\MT@append@patch#1#2{%
  \MT@remember@patch{#1}%
  \apptocmd#1{#2}\relax\MT@patch@okfalse
}
\def\MT@patch@patch#1#2#3{%
  \MT@remember@patch{#1}%
  \patchcmd#1{#2}{#3}\relax\MT@patch@okfalse
}
\def\MT@patch@patch@app#1#2#3{%
  \MT@patch@patch#1{#2}{#2#3}%
}
\def\MT@remember@patch#1{%
  \MT@ifdefined@n@TF{MT@patch@saved@\string#1}\relax
    {\MT@let@nc{MT@patch@saved@\string#1}#1%
     \MT@exp@cs\g@addto@macro{MT@patch@undo@@\MT@patch@name}%
       {\MT@let@cn#1{MT@patch@saved@\string#1}}}%
}
\let\MT@patches@applied\@gobble
\def\MT@apply@patch#1{%
  \MT@patch@oktrue
  \MT@ifdefined@n@TF{MT@patch@@#1}
    {\MT@in@clist{#1}\MT@patches@applied
     \ifMT@inlist@
       \MT@warning{Patch `#1' has already been applied,\MessageBreak
                   cannot reapply it}%
     \else
       \let\MT@restore@catcodes\@empty
       \MT@with@babel@and@T{spanish} {\MT@fix@catcode{62}{12}}% >
       \MT@with@babel@and@T{galician}{\MT@fix@catcode{62}{12}}% >
       \def\MT@patch@name{#1}%
       \g@addto@macro\MT@patches@applied{,#1}%
       \@nameuse{MT@patch@@#1}%
       \@nameuse{MT@patch@\ifMT@patch@ok info\else warn\fi}{#1}%
       \MT@restore@catcodes
     \fi}
    {\MT@patch@undef{#1}}%
}
\def\MT@undo@patch#1{%
  \MT@in@clist{#1}\MT@patches@applied
  \ifMT@inlist@
    \MT@rem@from@clist{#1}\MT@patches@applied
    \@nameuse{MT@patch@undo@@#1}%
    \MT@patch@info@undo{#1}%
  \else
    \MT@warning{Patch `#1' hasn't been applied,\MessageBreak cannot revert it}%
  \fi
}
{\catcode`\#=12
\MT@addto@setup{%
  \MT@define@patch{item}{%
    \MT@append@patch\@item\leftprotrusion
    \MT@patch@patch\@item{\everypar{}}{\everypar{\leftprotrusion}}%
    \@ifclassloaded{beamer}
      {\MT@append@patch\beamer@@callorigitem\leftprotrusion
       \MT@patch@patch@app\beamer@callorigitem\ignorespaces\leftprotrusion}
      {\@ifclassloaded{simplecv}
        {\MT@append@patch\@topic@item\leftprotrusion}
        {}}%
  }{}%
  \MT@define@patch{toc}{%
    \MT@append@patch\numberline\leftprotrusion
    \@ifclassloaded{memoir}
      {\MT@append@patch\booknumberline\leftprotrusion
       \MT@append@patch\partnumberline\leftprotrusion
       \MT@append@patch\chapternumberline\leftprotrusion
       \MT@append@patch\cftbookafterpnum\noprotrusion
       \MT@append@patch\cftpartafterpnum\noprotrusion
       \MT@append@patch\cftchapterafterpnum\noprotrusion
       \MT@append@patch\cftsectionafterpnum\noprotrusion
       \MT@append@patch\cftsubsectionafterpnum\noprotrusion
       \MT@append@patch\cftsubsubsectionafterpnum\noprotrusion
       \MT@append@patch\cftparagraphafterpnum\noprotrusion
       \MT@append@patch\cftsubparagraphafterpnum\noprotrusion
       \MT@append@patch\cftfigureafterpnum\noprotrusion
       \MT@append@patch\cfttableafterpnum\noprotrusion}
      {}%
  }{}%
  \MT@define@patch{eqnum}{%
    \@ifclassloaded{IEEEtran}
      {\MT@patch@patch\theequationdis{(}{\leftprotrusion{(}}%
       \MT@patch@patch\theequationdis{)}{\rightprotrusion{)}}%
       \MT@patch@patch\theIEEEsubequationdis{(}{\leftprotrusion{(}}%
       \MT@patch@patch\theIEEEsubequationdis{)}{\rightprotrusion{)}}}
      {}%
    \@ifpackageloaded{amsmath}
      {\MT@ifdefined@c@TF\SK@tagform@
        {\MT@patch@patch\SK@tagform@{(}{\leftprotrusion{(}}%
         \MT@patch@patch\SK@tagform@{)}{\rightprotrusion{)}}}
        {\MT@patch@patch\tagform@{(}{\leftprotrusion{(}}%
         \MT@patch@patch\tagform@{)}{\rightprotrusion{)}}}%
       \MT@ifdefined@n@TF{eqref }
         {\MT@exp@cs\MT@patch@patch{eqref }}{\MT@patch@patch\eqref}
           {\tagform@}{\@nameuse{MT@patch@saved@\string\tagform@}}%
       \MT@with@package@T{mathtools}{%
         \ifMT@patch@ok\else \MT@patch@oktrue
           \MT@info@nl{The `eqnum' patch may not be effective because you are\MessageBreak
               using the mathtools package. Make sure to insert\MessageBreak
               `\@backslashchar leftprotrusion' and
               `\@backslashchar rightprotrusion' as\MessageBreak
               appropriate in mathtools's `\@backslashchar newtagform' command}%
         \fi}}
      {\@ifclassloaded{IEEEtran}{}
        {\MT@ifdefined@c@TF\SK@eqnnum
          {\MT@patch@patch\SK@eqnnum{(}{\leftprotrusion{(}}%
           \MT@patch@patch\SK@eqnnum{)}{\rightprotrusion{)}}}%
          {\MT@patch@patch\@eqnnum{(}{\leftprotrusion{(}}%
           \MT@patch@patch\@eqnnum{)}{\rightprotrusion{)}}}}}%
  }{}%
  \MT@define@patch{footnote}{%
    \MT@ifdefined@n@TF{fnote_footnotetext:n}
      {\ExplSyntaxOn
       \MT@patch@patch@app\@footnotetext\ignorespaces\leftprotrusion
       \MT@exp@cs\MT@patch@patch@app{fnote_footnotetext:n}\ignorespaces\leftprotrusion
       \MT@patch@patch@app\@mpfootnotetext\ignorespaces\leftprotrusion
       \ExplSyntaxOff}
      {\@ifpackageloaded{fnbreak}
        {\MT@ifdefined@c@TF\fnb@orig@footnotetext
          {\MT@patch@patch@app\@footnotetext\fnb@fnstart\leftprotrusion}
          {\MT@warning{Unable to apply patch `footnote'.\MessageBreak
                       Load package `fnbreak' before `microtype'}}}%
        {\@ifpackageloaded{hyperref}
          {\MT@if@false
           \ifHy@implicit
             \ifHy@hyperfootnotes
               \MT@ifdefined@c@TF\hyper@nopatch@footnote\relax
                 \MT@if@true
             \fi
           \fi
           \ifMT@if@\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
          \@secondoftwo
        {\MT@patch@patch@app\@footnotetext\ignorespaces\leftprotrusion
         \MT@patch@patch@app\@footnotetext{\@empty\ignorespaces}\leftprotrusion
         \MT@patch@patch@app\@mpfootnotetext\ignorespaces\leftprotrusion
         \MT@patch@patch@app\@mpfootnotetext{{\expandafter\hyper@@anchor
                 \expandafter{\Hy@footnote@currentHref}{\relax}}\ignorespaces}
             \leftprotrusion}
        {\@ifclassloaded{memoir}
          {\MT@patch@patch\@footnotetext{\foottextfont #1}{\foottextfont\leftprotrusion #1}%
           \MT@patch@patch\@mpfootnotetext{\foottextfont #1}{\foottextfont\leftprotrusion #1}}
          {\@ifclassloaded{beamer}
            {\MT@exp@cs\MT@patch@patch@app{beamerx@\string\beamer@framefootnotetext}
                 \ignorespaces\leftprotrusion
             \MT@exp@cs\MT@patch@patch@app{beamerx@\string\@mpfootnotetext}
                 \ignorespaces\leftprotrusion}
            {\MT@ifdefined@c@TF\KOMAClassName
              {\MT@patch@patch@app\scr@saved@footnotetext\ignorespaces\leftprotrusion
               \MT@patch@patch@app\@mpfootnotetext\ignorespaces\leftprotrusion}
              {\@ifpackageloaded{changebar}
                {\MT@patch@patch\@footnotetext{#1}{\leftprotrusion#1}%
                 \MT@patch@patch\@footnotetext{#1\cb@end}{\leftprotrusion#1\cb@end}%
                 \MT@patch@patch\@mpfootnotetext{#1}{\leftprotrusion#1}%
                 \MT@patch@patch\@mpfootnotetext{#1\cb@end}{\leftprotrusion#1\cb@end}}
                {\MT@patch@patch@app\@footnotetext\ignorespaces\leftprotrusion
                 \MT@patch@patch@app\@mpfootnotetext\ignorespaces\leftprotrusion}}}}}}}%
  }{}%
  \MT@define@patch{verbatim}{%
    \MT@append@patch\@verbatim{\microtypesetup{activate=false}}%
    \MT@with@package@T{alltt}{\MT@append@patch\alltt{\microtypesetup{activate=false}}}%
  }{}
  \MT@redefined@patches
}}
\expandafter\ifx\the\font\nullfont\normalfont\fi
\def\MT@split@name#1/#2/#3/#4/#5/#6\@nil{%
  \def\MT@encoding{#1}%
  \ifMT@fontspec
    \edef\MT@family{\MT@scrubfeature#2()\relax}%
  \else
    \def\MT@family{#2}%
  \fi
  \def\MT@series  {#3}%
  \def\MT@shape   {#4}%
  \def\MT@size    {#5}%
  \MT@fix@fontdimen@six
  \MT@ifdefined@n@TF{MT@\MT@family @alias}%
    {\MT@let@cn\MT@familyalias{MT@\MT@family @alias}}%
    {\let\MT@familyalias\@empty}%
}
\def\MT@scrubfeature#1(#2)#3\relax{#1}
\def\MT@scrubfeatures#1(#2)#3\relax{%
  #1%
  \ifx\relax#3\relax\else
    \MT@scrubfeatures#3\relax
  \fi
}
\newif\ifMT@do
\def\MT@maybe@do#1{%
  \csname ifMT@\csname MT@abbr@#1\endcsname\endcsname
    \MT@dotrue
    \edef\@tempa{\csname MT@#1@setname\endcsname}%
    \MT@map@clist@n{font,encoding,family,series,shape,size}{%
      \MT@ifdefined@n@TF{MT@checklist@##1}%
        {\csname MT@checklist@##1\endcsname}%
        {\MT@checklist@{##1}}%
      {#1}%
    }%
  \else
    \MT@dofalse
  \fi
  \ifMT@do
    \def\MT@feat{#1}%
    \csname MT@set@#1@codes\endcsname
  \else
    \MT@ifstreq{#1}{tr}%
      {\let\MT@info@notracking\MT@info@notracking@}%
      {\MT@vinfo{... No \@nameuse{MT@abbr@#1}}}%
  \fi
}
\let\MT@info@notracking\relax
\def\MT@info@notracking@{\MT@vinfo{... No tracking}}
\def\MT@checklist@#1#2{%
  \MT@ifdefined@n@T
      {MT@#2list@#1@\@tempa}{%
    \expandafter\MT@exp@one@n\expandafter\MT@in@clist
      \csname MT@#1\expandafter\endcsname
      \csname MT@#2list@#1@\@tempa\endcsname
    \ifMT@inlist@
      \MT@dotrue
    \else
      \MT@dofalse
      \expandafter\MT@clist@break
    \fi
  }%
}
\def\MT@checklist@family#1{%
  \MT@ifdefined@n@T
      {MT@#1list@family@\@tempa}{%
    \MT@exp@two@n\MT@in@clist
        \MT@family{\csname MT@#1list@family@\@tempa\endcsname}%
    \ifMT@inlist@
      \MT@dotrue
    \else
      \MT@dofalse
      \ifx\MT@familyalias\@empty \else
        \MT@exp@two@n\MT@in@clist
            \MT@familyalias{\csname MT@#1list@family@\@tempa\endcsname}%
        \ifMT@inlist@
          \MT@dotrue
        \fi
      \fi
    \fi
    \ifMT@do \else
      \expandafter\MT@clist@break
    \fi
  }%
}
\def\MT@checklist@size#1{%
  \MT@ifdefined@n@T
      {MT@#1list@size@\@tempa}{%
    \MT@exp@cs\MT@in@rlist{MT@#1list@size@\@tempa}%
    \ifMT@inlist@
      \MT@dotrue
    \else
      \MT@dofalse
      \expandafter\MT@clist@break
    \fi
  }%
}
\def\MT@checklist@font#1{%
  \MT@ifdefined@n@T
      {MT@#1list@font@\@tempa}{%
    \edef\@tempb{\MT@encoding/\MT@family/\MT@series/\MT@shape/\MT@size}%
    \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter
      \@tempb \csname MT@#1list@font@\@tempa\endcsname
    \ifMT@inlist@
      \expandafter\MT@clist@break
    \else
      \MT@dofalse
    \fi
  }%
}
\newif\ifMT@nofamily
\def\MT@protrusion{\MT@maybe@do{pr}}
\def\MT@get@font@dimen#1{%
  \ifnum\fontdimen#1\MT@font=\z@
    \MT@warning@nl{Font `\MT@@font' does not specify its\MessageBreak
      \@backslashchar fontdimen #1 (it's zero)!\MessageBreak
      You should use a different `unit' for \MT@curr@list@name}%
  \else
    \MT@count=\fontdimen#1\MT@font
  \fi
}
\def\MT@info@missing@char{%
  \MT@info@nl{Character `\the\MT@toks'
^^X   \ifnum\MT@char@<\z@ is missing\else
^^X     \iffontchar\MT@font\MT@char@
               has a width of 0pt
^^X      \else is missing\fi\fi
^^Q    \MessageBreak (it's probably missing)
    \MessageBreak in font `\MT@@font'.\MessageBreak
    Ignoring protrusion settings for this character}%
}
\def\MT@scale@factor{%
  \ifnum\csname MT@\MT@feat @factor@\endcsname=\@m \else
    \expandafter\MT@scale\expandafter \@tempcntb
      \csname MT@\MT@feat @factor@\endcsname \@m
  \fi
  \ifnum\@tempcntb>\csname MT@\MT@feat @max\endcsname\relax
    \MT@exp@cs\MT@warn@code@too@large{MT@\MT@feat @max}%
  \else
    \ifnum\@tempcntb<\csname MT@\MT@feat @min\endcsname\relax
      \MT@exp@cs\MT@warn@code@too@large{MT@\MT@feat @min}%
    \fi
  \fi
}
\def\MT@warn@code@too@large#1{%
  \@tempcnta=#1\relax
  \ifnum\csname MT@\MT@feat @factor@\endcsname=\@m \else
    \expandafter\MT@scale\expandafter\@tempcnta\expandafter
      \@m \csname MT@\MT@feat @factor@\endcsname
  \fi
  \MT@scale\@tempcnta \MT@dimen@six \MT@count
  \MT@warning@nl{The \@nameuse{MT@abbr@\MT@feat} code \@tempb\space
    is too large for character\MessageBreak
    `\the\MT@toks' in \MT@curr@list@name.\MessageBreak
    Setting it to the maximum of \number\@tempcnta}%
  \@tempcntb=#1\relax
}
\def\MT@get@opt{%
  \MT@set@listname
  \MT@ifdefined@n@TF{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @factor}{%
    \MT@let@nn{MT@\MT@feat @factor@}
        {MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @factor}%
    \MT@vinfo{... : Multiplying \@nameuse{MT@abbr@\MT@feat} codes by
                    \number\csname MT@\MT@feat @factor@\endcsname/1000}%
  }{%
    \MT@let@nn{MT@\MT@feat @factor@}{MT@\MT@feat @factor}%
  }%
  \MT@ifdefined@n@TF{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @unit}{%
    \MT@let@nn{MT@\MT@feat @unit@}%
        {MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @unit}%
    \MT@exp@cs\ifx{MT@\MT@feat @unit@}\@empty
      \MT@vinfo{... : Setting \@nameuse{MT@abbr@\MT@feat} codes
                      relative to character widths}%
    \else
      \MT@exp@cs\ifx{MT@\MT@feat @unit@}\m@ne
        \MT@vinfo{... : Setting \@nameuse{MT@abbr@\MT@feat} codes
                        relative to width of space}%
      \fi
    \fi
  }{%
    \MT@let@nn{MT@\MT@feat @unit@}{MT@\MT@feat @unit}%
  }%
  \let\MT@get@char@unit\relax
  \let\MT@get@space@unit\@gobble
  \MT@exp@cs\ifx{MT@\MT@feat @unit@}\@empty
    \let\MT@get@char@unit\MT@get@charwd
  \else
    \MT@exp@cs\ifx{MT@\MT@feat @unit@}\m@ne
      \let\MT@get@space@unit\MT@get@font@dimen
    \else
      \MT@exp@cs\MT@get@unit{MT@\MT@feat @unit@}%
    \fi
  \fi
  \MT@ifdefined@n@T{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @preset}{%
    \csname MT@preset@\MT@feat\endcsname
    \MT@let@nc{MT@reset@\MT@feat @codes}\relax
  }%
}
\def\MT@get@unit#1{%
  \expandafter\MT@get@unit@#1 e!\@nil
  \ifx\x\@empty\else\let#1\x\fi
  \@defaultunits\@tempdima#1 pt\relax\@nnil
  \ifdim\@tempdima=\z@
    \MT@warning@nl{%
      Cannot set \@nameuse{MT@abbr@\MT@feat} factors relative to zero\MessageBreak
      width. Setting factors of list `\@nameuse{MT@\MT@feat @c@name}'\MessageBreak
      relative to character widths instead}%
    \let#1\@empty
    \let\MT@get@char@unit\MT@get@charwd
  \else
    \MT@vinfo{... : Setting \@nameuse{MT@abbr@\MT@feat} factors relative
                    to \the\@tempdima}%
    \MT@count=\@tempdima\relax
  \fi
}
\def\MT@get@unit@#1e#2#3\@nil{%
  \ifx\\#3\\\let\x\@empty \else
    \if m#2%
      \edef\x{#1\fontdimen6\MT@font}%
    \else
      \if x#2%
        \edef\x{#1\fontdimen5\MT@font}%
      \fi
    \fi
  \fi
}
\def\MT@set@inputenc#1{%
  \def\MT@cat{#1}%
  \edef\@tempa{MT@\MT@feat @#1@\csname MT@\MT@feat @#1@name\endcsname @inputenc}%
  \MT@ifdefined@n@T\@tempa\MT@set@inputenc@
}
\MT@addto@setup{%
  \@ifpackageloaded{inputenc}{%
    \@ifpackagelater{inputenc}{2006/02/22}{%
      \def\MT@set@inputenc@{%
        \MT@ifstreq\inputencodingname{\csname\@tempa\endcsname}\relax
          \MT@load@inputenc
      }%
    }{%
      \let\MT@set@inputenc@\MT@load@inputenc
    }%
  }{%
    \def\MT@set@inputenc@{%
      \MT@warning@nl{Key `inputenc' used in \MT@curr@list@name, but the `inputenc'
          \MessageBreak package isn't loaded. Ignoring input encoding}%
    }%
  }%
}
\def\MT@load@inputenc{%
  \MT@cfg@catcodes
  \inputencoding{\@nameuse{\@tempa}}%
}
\def\MT@set@pr@heirs#1{%
  \lpcode\MT@font #1=\lpcode\MT@font\MT@char\relax
  \rpcode\MT@font #1=\rpcode\MT@font\MT@char\relax
}
\def\MT@set@pr@prefixheirs{%
  \MT@ifdefined@c@T\MT@pr@inh@name{%
    \MT@ifdefined@n@T{MT@inh@\MT@pr@inh@name @prefixes}{%
      \MT@exp@cs\MT@map@tlist@c
        {MT@inh@\MT@pr@inh@name @prefixes}%
        \MT@set@pr@prefixes
    }%
  }%
}
\def\MT@preset@pr{%
  \expandafter\expandafter\expandafter\MT@preset@pr@
    \csname MT@pr@c@\MT@pr@c@name @preset\endcsname\@nil
}
\def\MT@preset@pr@#1,#2\@nil{%
  \ifx\MT@pr@unit@\@empty
    \MT@warn@preset@towidth{pr}%
    \let\MT@preset@aux\MT@preset@aux@factor
  \else
    \def\MT@preset@aux{\MT@preset@aux@space2}%
  \fi
  \MT@ifempty{#1}{\let\@tempa\@empty}{\MT@preset@aux{#1}\@tempa}%
  \MT@ifempty{#2}{\let\@tempb\@empty}{\MT@preset@aux{#2}\@tempb}%
  \MT@set@all@pr\@tempa\@tempb
}
\def\MT@preset@aux@factor#1#2{%
  \@tempcntb=#1\relax
  \MT@scale@factor
  \edef#2{\number\@tempcntb}%
}
\def\MT@preset@aux@space#1#2#3{%
  \def\@tempb{#2}%
  \MT@get@space@unit#1%
  \MT@scale@to@em
  \edef#3{\number\@tempcntb}%
}
\def\MT@warn@preset@towidth#1{%
  \MT@warning@nl{%
    Cannot preset characters relative to their widths\MessageBreak
    for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'.
    Presetting them\MessageBreak relative to 1em instead}%
}
\MT@ifdefined@c@TF\noprotrusion\relax{
  \DeclareRobustCommand\noprotrusion{\leavevmode\kern-\p@\kern\p@}
}
\DeclareRobustCommand\noprotrusionifhmode{\relax\ifhmode\kern-\p@\kern\p@\fi}
\DeclareRobustCommand\leftprotrusion{%
  \MT@toks{}%
  \MT@prot@toks{}%
  \let\MT@prot@l\MT@prot@l@
  \let\MT@prot@get@first@group\MT@prot@get@first@group@
  \let\MT@maybe@textcmd\@firstofone
  \MT@prot@get@firstgroup
}
\def\MT@prot@l@#1{%
  \MT@get@prot{#1}{left}%
  #1%
}
\newtoks\MT@prot@toks
\def\MT@prot@l@tc#1{%
  \MT@get@prot{\MT@maybe@textcmd{#1}}{left}%
  \the\MT@prot@toks
  \MT@gobble@to@nil
}
\def\MT@gobble@to@nil#1\MT@nil{}
\DeclareRobustCommand\rightprotrusion{\MT@prot@r}
\def\MT@prot@r#1{%
  {#1}%
  \MT@get@prot{#1}{right}%
}
\let\MT@prot@hook\@empty
\let\MT@csq@eqgroup\relax
\IfFormatAtLeastTF{2021/11/15}
  {\let\MT@noindent\RawNoindent}
  {\let\MT@noindent\noindent}
\def\MT@get@prot#1#2{%
  \begingroup
    \setbox\MT@tempbox\vbox{%
      \everypar{}%
      \parfillskip=\z@skip
      \hbadness\@M
      \clubpenalty\z@
      \widowpenalty\z@
      \interlinepenalty\z@
      \@newlistfalse
      \MT@prot@hook
      \begingroup
        \MT@noindent #1\relax\MT@csq@eqgroup
      \endgroup}%
    \vbadness=\@M
    \splittopskip=\z@
    \vfuzz=\maxdimen
    \setbox\MT@tempbox\vbox{%
      \ifvbox\MT@tempbox
        \global\setbox\MT@tempbox=\vsplit\MT@tempbox to \normalbaselineskip
        \unvbox\MT@tempbox
        \global\setbox\MT@tempbox=\lastbox
      \fi
    }%
  \endgroup
  \ifhbox\MT@tempbox
    \@tempdima=\@nameuse{#2marginkern}\MT@tempbox\relax
    \expandafter\ifdim\@tempdima=\z@ \else
      \leavevmode
      \MT@vinfo{|<< adding #2 margin kern for `#1':\MessageBreak
        \the\@tempdima \on@line}%
      \kern\@tempdima
    \fi
  \fi
}
\def\MT@prot@ifx#1{%
  \ifx\MT@prot@next#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}
\def\MT@prot@ifcat#1{%
  \ifcat#1\noexpand\MT@prot@next\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}
^^X\def\MT@prot@ifmacro@{%
^^X  \ifdefmacro\MT@prot@next{\ifdefparam\MT@prot@next\@gobble\@firstofone}\@gobble}
^^Q\let\MT@prot@ifmacro\@gobble
\def\MT@prot@iffirstcmd#1{%
  \ifx\relax#1\expandafter\@secondoftwo\else
    \MT@exp@two@c\ifx\MT@car\MT@prot@next\relax\@nil#1%
      \expandafter\expandafter\expandafter\@firstoftwo
    \else
      \expandafter\expandafter\expandafter\@secondoftwo
    \fi
  \fi
}
\long\def\MT@car#1#2\@nil{#1}
\def\MT@getthird#1#2#3#4\@nil{#3}
\def\MT@prot@iflicrcmd{%
  \MT@prot@iffirstcmd\@current@cmd\@secondoftwo\@firstofone
    {\MT@prot@iffirstcmd\@changed@cmd\@firstofone\@gobble}%
  {\expandafter\expandafter\expandafter\let
      \expandafter\expandafter\expandafter\@tempa
      \expandafter\MT@getthird\MT@prot@next\relax\@nil
    \MT@exp@two@c\ifx\@car\@tempa\relax\@nil\@text@composite
      \def\MT@temp*##1##2{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2}}%
    \else
      \def\MT@temp*##1{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1}}%
    \fi
  }%
}
\def\MT@prot@addgroup{\bgroup\afterassignment\MT@prot@get@firstgroup\let\MT@temp= }
\def\MT@prot@get@firstgroup{\futurelet\MT@prot@next\MT@prot@get@first@group}
\def\MT@prot@get@firstgroup@tc{\futurelet\MT@prot@next\MT@prot@get@first@group@tc}
\def\MT@prot@get@firsttoken{\futurelet\MT@prot@next\MT@prot@get@first@token}
\def\MT@prot@get@nexttoken{\futurelet\MT@prot@next\MT@prot@get@next@token}
\def\MT@prot@get@first@group@{%
  \MT@prot@ifcat\bgroup{%
    \def\MT@temp*{\MT@prot@addgroup}%
  }{%
    \def\MT@temp*{\MT@prot@get@first@token}%
  }%
  \MT@temp*%
}
\def\MT@prot@get@first@group@tc{%
  \MT@prot@ifcat\bgroup{%
    \def\MT@temp*##1##2\MT@nil{\MT@ifempty{##1}\relax
          {{\MT@prot@get@firstgroup@tc##1\MT@nil}}}%
  }{%
    \def\MT@temp*{\MT@prot@get@first@token}%
  }%
  \MT@temp*%
}
\def\MT@prot@get@first@token{%
  \def\MT@temp*{\MT@exp@one@n\MT@ifempty{\the\MT@toks}
      {\MT@exp@one@n\MT@ifempty{\the\MT@prot@toks}\relax{\the\MT@prot@toks\MT@gobble@to@nil}}
      {\MT@exp@one@n\MT@prot@l{\the\MT@toks}}}%
  \MT@prot@ifcat{a}{%
    \def\MT@temp*{\MT@prot@addtoken@first}%
  }{%
    \MT@prot@ifcat{!}{%
      \def\MT@temp*{\MT@prot@addtoken@first}%
    }{%
      \MT@prot@ifx\@sptoken{%
        \def\MT@temp* {\MT@prot@get@firstgroup}%
      }{%
        \let\MT@prot@ifmacro\MT@prot@ifmacro@
        \MT@map@tlist@c\MT@prot@check@cmds\MT@prot@check
        \MT@prot@ifmacro{%
          \MT@prot@iffirstcmd\UTFviii@two@octets{%
            \def\MT@temp*##1##2{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2}}%
          }{%
            \MT@prot@iffirstcmd\UTFviii@three@octets{%
              \def\MT@temp*##1##2##3{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2##3}}%
            }{%
              \MT@prot@iffirstcmd\UTFviii@four@octets{%
                \def\MT@temp*##1##2##3##4{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2##3##4}}%
              }{%
                \MT@prot@iffirstcmd\csqQQ{\def\MT@temp*##1{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1}}}{%
                  \MT@prot@iflicrcmd
                }%
              }%
            }%
          }%
        }%
      }%
    }%
  }%
  \MT@temp*%
}
\def\MT@prot@addtoken@first#1{%
  \MT@toks\expandafter{\the\MT@toks#1}%
  \MT@prot@get@nexttoken
}
\def\MT@prot@get@next@token{%
  \def\MT@temp*{\MT@prot@addtoken@next}%
  \MT@prot@ifcat{a}\relax{%
    \MT@prot@ifcat{!}\relax{%
      \def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
    }%
  }%
  \MT@temp*%
}
\def\MT@prot@check#1{\MT@prot@check@#1\relax\@nil}
\def\MT@prot@check@#1#2#3\@nil{%
  \ifx\MT@prot@next#2%
    \csname MT@prot@check@#1\endcsname #3%
    \let\MT@prot@ifmacro\@gobble
    \expandafter\MT@tlist@break
  \fi
}
\def\MT@prot@check@I{%
  \def\MT@temp*##1{\MT@prot@get@firstgroup}%
}
\def\MT@prot@check@S{%
  \def\MT@temp*##1{\MT@toks\expandafter{\the\MT@toks##1}\MT@prot@get@firstgroup}%
}
\def\MT@prot@check@O{%
  \def\MT@temp*##1##2{\MT@toks\expandafter{\the\MT@toks##1{##2}}\MT@prot@get@firstgroup}%
}
\def\MT@prot@check@o{%
  \def\MT@temp*##1{\@ifnextchar[{\MT@prot@check@o@##1}{\MT@prot@check@o@##1[]}}%
}
\def\MT@prot@check@o@#1[#2]#3{%
  \MT@ifempty{#2}
    {\MT@toks\expandafter{\the\MT@toks#1{#3}}}
    {\MT@toks\expandafter{\the\MT@toks#1[#2]{#3}}}%
  \MT@prot@get@firstgroup
}
\def\MT@prot@check@T{%
  \def\MT@temp*##1##2##3{\MT@toks\expandafter{\the\MT@toks##1{##2}{##3}}\MT@prot@get@firstgroup}%
}
\def\MT@prot@check@E{%
  \the\MT@toks
  \def\MT@temp*##1{\MT@prot@l{##1}}%
}
\def\MT@prot@check@e{%
  \the\MT@toks
  \def\MT@temp*##1{\@ifstar{\MT@prot@l{##1*}}{\MT@prot@l{##1}}}%
}
\def\MT@prot@check@eX#1{%
  \the\MT@toks
  \def\MT@temp*##1{\@ifstar
    {\MT@get@prot{#1*}{left}##1*}
    {\MT@get@prot{#1}{left}##1}}%
}
\def\MT@prot@check@l{%
  \def\MT@temp*##1{\@ifstar{\MT@prot@check@l@{##1*}}{\MT@prot@check@l@{##1}}}%
}
\def\MT@prot@check@l@#1#2{%
  \the\MT@toks
  \MT@prot@l{#1{#2}}%
}
\def\MT@prot@check@lX#1{%
  \def\MT@temp*##1{\@ifstar
    {\def\MT@temp{##1*}\MT@prot@check@lX@{#1*}}
    {\def\MT@temp{##1}\MT@prot@check@lX@{#1}}}%
}
\def\MT@prot@check@lX@#1#2{%
  \the\MT@toks
  \MT@get@prot{#1{#2}}{left}\MT@temp{#2}%
}
\def\MT@prot@check@F{%
  \ifx\MT@prot@l\MT@prot@l@tc
    \def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
  \else
    \let\MT@prot@l\MT@prot@l@tc
    \let\MT@prot@get@first@group\MT@prot@get@first@group@tc
    \def\MT@temp*##1{%
      \the\MT@toks
      \MT@toks{}%
      \MT@prot@check@F@##1%
    }%
  \fi
}
\def\MT@prot@check@F@@#1#2{%
  \let\MT@maybe@textcmd#1%
  \MT@prot@toks{#1{#2}}%
  \MT@prot@get@firstgroup@tc#2\@empty\MT@nil
}
\def\MT@prot@check@F@beamer#1{%
  \@ifnextchar<%
    {\MT@prot@check@F@beamer@#1}%
    {\MT@prot@check@F@@#1}%
}
\def\MT@prot@check@F@beamer@#1<#2>#3{%
  \def\MT@maybe@textcmd{#1<#2>}%
  \MT@prot@toks{#1<#2>{#3}}%
  \MT@prot@get@firstgroup@tc#3\@empty\MT@nil
}
\@ifclassloaded{beamer}
  {\let\MT@prot@check@F@\MT@prot@check@F@beamer}
  {\let\MT@prot@check@F@\MT@prot@check@F@@}
\def\MT@prot@check@C{%
  \ifx\MT@prot@l\MT@prot@l@tc
    \def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
  \else
    \let\MT@prot@l\MT@prot@l@tc
    \let\MT@prot@get@first@group\MT@prot@get@first@group@tc
    \def\MT@temp*##1{%
      \the\MT@toks
      \MT@toks{}%
      \@ifnextchar[%
        {\MT@prot@check@C@##1}%
        {\MT@prot@check@C@##1[]}%
    }%
  \fi
}
\def\MT@prot@check@C@#1[#2]#3{%
  \def\MT@maybe@textcmd{#1[#2]}%
  \MT@prot@toks{#1[#2]{#3}}%
  \MT@prot@get@firstgroup@tc#3\@empty\MT@nil
}
\def\MT@prot@check@cmds{%
  {I\ignorespaces}{I\relax}{I\@empty}%
  {S\rmfamily}{S\sffamily}{S\ttfamily}{S\mdseries}{S\bfseries}%
  {S\upshape}{S\itshape}{S\slshape}{S\scshape}{S\em}%
  {S\normalfont}{S\selectfont}%
  {S\lsstyle}%
  {S\tiny}{S\scriptsize}{S\footnotesize}{S\small}{S\normalsize}%
  {S\large}{S\Large}{S\LARGE}{S\huge}{S\Huge}%
  {O\fontencoding}{O\fontfamily}{O\fontseries}{O\fontshape}%
  {O\microtypesetup}{O\microtypecontext}%
  {T\fontsize}%
  {F\textrm}{F\textsf}{F\texttt}{F\textnormal}%
  {F\textbf}{F\textmd}{F\textit}{F\textsl}{F\textsc}{F\textup}{F\emph}%
}
\IfFormatAtLeastTF{2020/02/02}
  {\g@addto@macro\MT@prot@check@cmds{%
    {S\swshape}{S\ulcshape}{S\sscshape}{S\normalshape}%
    {F\textulc}{F\textsw}{F\textssc}%
    {O\fontseriesforce}{O\fontshapeforce}}}
  \relax
\IfFormatAtLeastTF{2022/11/01}
  {\g@addto@macro\MT@prot@check@cmds{{C\MakeUppercase}{C\MakeLowercase}{C\MakeTitlecase}}}
  {\g@addto@macro\MT@prot@check@cmds{{F\MakeUppercase}{F\MakeLowercase}}}
\@ifclassloaded{ltxdoc}
  {\g@addto@macro\MT@prot@check@cmds{{E\enquote}{E\marg}{E\oarg}{E\parg}{E\cs}}}\relax
\MT@addto@setup{%
  \MT@with@package@T{color}
    {\@ifclassloaded{beamer}\relax{\g@addto@macro\MT@prot@check@cmds{{o\color}}}}%
  \MT@with@package@T{csquotes}
    {\@ifclassloaded{ltxdoc}
      {\patchcmd\MT@prot@check@cmds{E\enquote}{e\enquote}\relax\relax}
      {\g@addto@macro\MT@prot@check@cmds{{e\enquote}}}%
     \g@addto@macro\MT@prot@check@cmds{{e\textquote}%
       {l\foreignquote}{l\hyphenquote}{l\foreigntextquote}{l\hyphentextquote}%
       {{eX}\textcquote\textquote}%
       {{lX}\foreigntextcquote\foreigntextquote}%
       {{lX}\hyphentextcquote\hyphentextquote}}}%
  \MT@with@package@T{doc}
    {\g@addto@macro\MT@prot@check@cmds{{E\meta}}}%
  \MT@with@package@T{fontaxes}
    {\g@addto@macro\MT@prot@check@cmds{%
      {S\txfigures}{S\lnfigures}{S\tbfigures}{S\prfigures}%
      {O\fontfigurestyle}{O\fontfigurealignment}{O\fontbasefamily}%
      {O\figureversion}%
      {F\textfigures}{F\liningfigures}{F\tabularfigures}{F\proportionalfigures}}%
      \IfFormatAtLeastTF{2020/02/02}\relax
        {\g@addto@macro\MT@prot@check@cmds{%
          {S\swshape}{S\ulcshape}{S\sscshape}%
          {F\textulc}{F\textsw}{F\textssc}}}}%
  \MT@with@package@T{fontspec}
    {\g@addto@macro\MT@prot@check@cmds{%
      {O\addfontfeature}{O\addfontfeatures}{F\strong}}}%
  \MT@with@package@T{nfssext-cfr}
    {\g@addto@macro\MT@prot@check@cmds{%
      {S\tistyle}{S\ltstyle}{S\ofstyle}{S\altstyle}{S\regstyle}{S\embossstyle}%
      {S\ornamentalstyle}{S\qtstyle}{S\shstyle}{S\tmstyle}{S\tvstyle}{S\swashstyle}%
      {S\lnstyle}{S\osstyle}{S\instyle}{S\sustyle}{S\lstyle}{S\ostyle}%
      {S\pstyle}{S\tstyle}{S\plstyle}{S\postyle}{S\tlstyle}{S\tostyle}%
      {S\scolshape}{S\olshape}{S\sishape}{S\ushape}{S\scushape}%
      {S\uishape}{S\rishape}{S\dfshape}{S\swstyle}%
      {S\nwwidth}{S\cdwidth}{S\ecwidth}{S\ucwidth}%
      {S\etwidth}{S\epwidth}{S\exwidth}{S\uxwidth}{S\regwidth}%
      {S\mbweight}{S\dbweight}{S\sbweight}{S\ebweight}%
      {S\ubweight}{S\lgweight}{S\elweight}{S\ulweight}%
      {F\textti}{F\textlt}{F\textof}{F\textalt}{F\textreg}{F\emboss}%
      {F\textorn}{O\ornament}{F\textqt}{F\textsh}{F\texttm}{F\texttv}{F\textswash}%
      {F\textln}{F\textos}{F\textin}{F\textsu}{F\textl}{F\texto}%
      {F\textp}{F\textt}{F\textpl}{F\textpo}{F\texttl}{F\textto}%
      {F\textol}{F\textsi}{F\textu}{F\textscu}%
      {F\textui}{F\textri}{F\textdf}%
      {F\textnw}{F\textcd}{F\textec}{F\textuc}%
      {F\textet}{F\textep}{F\textex}{F\textux}{F\textrw}%
      {F\textmb}{F\textdb}{F\textsb}{F\texteb}%
      {F\textub}{F\textlg}{F\textel}{F\textul}}%
      \IfFormatAtLeastTF{2020/02/02}\relax
        {\g@addto@macro\MT@prot@check@cmds{{S\swshape}{F\textsw}}}}%
  \MT@with@package@T{yfonts}
    {\g@addto@macro\MT@prot@check@cmds{%
      {S\frakfamily}{S\swabfamily}{S\gothfamily}%
      {F\textfrak}{F\textswab}{F\textgoth}}}%
}
\newif\ifMT@nonselected
\DeclareRobustCommand\textls{%
  \@ifstar{\let\MT@ls@adjust@\MT@ls@adjust@empty\MT@textls}%
          {\let\MT@ls@adjust@\MT@ls@adjust@relax\MT@textls}%
}
\newcommand\MT@textls[2][]{%
  \ifmmode
    \nfss@text{\MT@ls@set@ls{#1}\lsstyle#2}%
  \else
    \hmode@bgroup
      \MT@ls@set@ls{#1}%
      \lsstyle #2%
      \expandafter
    \egroup
  \fi
}
\def\MT@ls@adjust@empty{\let\MT@ls@adjust\@empty}
\def\MT@ls@adjust@relax{\let\MT@ls@adjust\relax}
\def\MT@ls@set@ls#1{%
  \MT@ifempty{#1}%
    {\let\MT@letterspace@\@undefined}%
    {\KV@@sp@def\MT@letterspace@{#1}%
     \edef\MT@letterspace@{\number\MT@letterspace@}%
     \MT@ls@too@large\MT@letterspace@}%
  \MT@ls@adjust@
}
\def\MT@ls@too@large#1{%
  \ifnum#1>\MT@tr@max
    \MT@warning{Maximum for option `letterspace' is \number\MT@tr@max}%
    \edef#1{\number\MT@tr@max}%
  \else
    \ifnum#1<\MT@tr@min
      \MT@warning{Minimum for option `letterspace' is \number\MT@tr@min}%
      \edef#1{\number\MT@tr@min}%
    \fi
  \fi
}
\newdimen\MT@outer@kern
\def\MT@load@list#1%
  {\edef\@tempa{#1}%
  \MT@let@cn\@tempb{MT@\MT@feat @c@\@tempa @load}%
  \MT@ifstreq\@tempa\@tempb{%
    \MT@error{\@nameuse{MT@abbr@\MT@feat} list `\@tempa' cannot load itself}{}%
  }{%
    \ifx\@tempb\relax
    \else
      \MT@ifdefined@n@TF{MT@\MT@feat @c@\@tempb}{%
        \MT@vinfo{... : First loading \@nameuse{MT@abbr@\MT@feat} list `\@tempb'}%
        \begingroup
          \MT@load@list\@tempb
        \endgroup
        \edef\MT@curr@list@name{%
                  \@nameuse{MT@abbr@\MT@feat} list \noexpand\MessageBreak
                  `\@tempb'}%
        \MT@let@cn\@tempc{MT@\MT@feat @c@\@tempb}%
        \expandafter\MT@set@codes\@tempc,\relax,%
      }{%
        \MT@error{\@nameuse{MT@abbr@\MT@feat} list `\@tempb' undefined.\MessageBreak
                    Cannot load it from list `\@tempa'}{}%
      }%
    \fi
  }%
}
\let\MT@file@list\@empty
\def\MT@find@file#1{%
  \MT@in@clist{#1}\MT@file@list
  \ifMT@inlist@ \else
    \MT@begin@catcodes
      \let\MT@begin@catcodes\relax
      \let\MT@end@catcodes\relax
      \MT@xadd\MT@file@list{#1,}%
      \InputIfFileExists{\MT@cfg@prefix-#1.cfg}{%
        \edef\MT@curr@file{\MT@cfg@prefix-#1.cfg}%
        \MT@vinfo{... Loading configuration file \MT@curr@file}%
      }{%
        \MT@get@basefamily#1\@empty\@empty\@empty\@nil
        \MT@exp@one@n\MT@in@clist\@tempa\MT@file@list
        \ifMT@inlist@ \else
          \InputIfFileExists{\MT@cfg@prefix-\@tempa.cfg}{%
            \edef\MT@curr@file{\MT@cfg@prefix-\@tempa.cfg}%
            \MT@vinfo{... Loading configuration file \MT@curr@file}%
            \MT@xadd\MT@file@list{\@tempa,}%
          }{%
            \MT@vinfo{... No configuration file \MT@cfg@prefix-#1.cfg}%
          }%
        \fi
      }%
    \endgroup
  \fi
}
\def\MT@cfg@catcodes{%
  \makeatletter
  \catcode`\^7%
  \catcode`\ 9%
  \catcode`\^^I9%
  \catcode`\^^M9%
  \catcode`\\\z@
  \catcode`\{\@ne
  \catcode`\}\tw@
  \catcode`\#6%
  \catcode`\%14%
  \MT@map@tlist@n
    {\!\"\$\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\[\]\_\`\|\~}%
    \@makeother
}
\def\MT@begin@catcodes{%
  \begingroup
  \MT@cfg@catcodes
}
\let\MT@end@catcodes\endgroup
\def\MT@get@basefamily#1#2#3#4\@nil{%
  \ifx\@empty#4%
    \def\@tempa{#1#2#3}%
  \else
    \let\@tempa\@empty
    \edef\@tempb{#1#2#3#4}%
    \expandafter\MT@get@basefamily@\@tempb\@nil
  \fi
}
\def\MT@get@basefamily@#1#2\@nil{%
  \edef\@tempa{\@tempa#1}%
  \ifx\\#2\\\expandafter\@gobble\else\expandafter\@firstofone\fi
  {\MT@in@tlist{#2}\MT@variants
   \ifMT@inlist@\else\MT@get@basefamily@#2\@nil\fi}%
}
\def\MT@get@listname#1{%
  \let\MT@listname\@undefined
  \def\@tempb{#1}%
  \MT@map@tlist@c\MT@try@order\MT@get@listname@
}
\def\MT@get@listname@#1{%
  \expandafter\MT@next@listname#1%
  \ifx\MT@listname\@undefined \else
    \expandafter\MT@tlist@break
  \fi
}
\def\MT@try@order{%
  {1111}{1110}{1101}{1100}{1011}{1010}{1001}{1000}%
  {0111}{0110}{0101}{0100}{0011}{0010}{0001}{0000}%
}
\def\MT@next@listname#1#2#3#4{%
  \ifnum#1=\z@\MT@nofamilytrue\fi
  \edef\@tempa{\MT@encoding
/\ifnum#1=\@ne \MT@family  \fi
/\ifnum#2=\@ne \MT@series  \fi
/\ifnum#3=\@ne \MT@shape   \fi
/\ifnum#4=\@ne *\fi
               \MT@context}%
  \MT@ifdefined@n@TF{MT@\@tempb @\@tempa}{%
    \MT@next@listname@#4%
  }{%
    \ifnum#1=\@ne
      \ifx\MT@familyalias\@empty \else
        \edef\@tempa{\MT@encoding
                    /\MT@familyalias
      /\ifnum#2=\@ne \MT@series\fi
      /\ifnum#3=\@ne \MT@shape\fi
      /\ifnum#4=\@ne *\fi
                     \MT@context}%
        \MT@ifdefined@n@T{MT@\@tempb @\@tempa}{%
          \MT@next@listname@#4%
        }%
      \fi
    \fi
  }%
}
\def\MT@next@listname@#1{%
  \ifnum#1=\@ne
    \MT@exp@cs\MT@in@rlist{MT@\@tempb @\@tempa @sizes}%
    \ifMT@inlist@
      \let\MT@listname\MT@size@name
    \fi
  \else
    \MT@let@cn\MT@listname{MT@\@tempb @\@tempa}%
  \fi
}
\def\MT@if@list@exists{%
  \MT@let@cn\MT@context{MT@\MT@feat @context}%
  \MT@ifstreq{@}\MT@context{\let\MT@context\@empty}\relax
  \MT@get@listname{\MT@feat @c}%
  \MT@ifdefined@c@TF\MT@listname{%
    \MT@edef@n{MT@\MT@feat @c@name}{\MT@listname}%
    \ifMT@nonselected
      \MT@vinfo{... Applying non-selected expansion (list `\MT@listname')}%
    \else
      \MT@vinfo{... Loading \@nameuse{MT@abbr@\MT@feat} list `\MT@listname'}%
    \fi
    \@firstoftwo
  }{%
    \MT@let@nc{MT@\MT@feat @c@name}\@empty
    \ifMT@nonselected
      \MT@vinfo{... Applying non-selected expansion (no list)}%
    \else
      \MT@ifstreq\MT@feat{tr}\relax{%
        \MT@warning{I cannot find a \@nameuse{MT@abbr@\MT@feat} list
          for font\MessageBreak`\MT@@font'%
            \ifx\MT@context\@empty\else\space(context: `\MT@context')\fi.
          Switching off\MessageBreak\@nameuse{MT@abbr@\MT@feat} for this font}%
      }%
    \fi
    \@secondoftwo
  }%
}
\def\MT@get@inh@list{%
  \let\MT@context\@empty
  \MT@get@listname{\MT@feat @inh}%
  \MT@ifdefined@c@TF\MT@listname{%
    \MT@edef@n{MT@\MT@feat @inh@name}{\MT@listname}%
    \MT@let@cn\@tempc{MT@\MT@feat @inh@\MT@listname}%
    \ifx\@tempc\@empty \else
      \begingroup
      \edef\MT@curr@list@name{inheritance list\noexpand\MessageBreak`\MT@listname'}%
      \MT@set@inputenc{inh}%
      \expandafter\MT@inh@do\@tempc,\relax,%
      \MT@glet@nc{MT@\MT@feat @inh@\MT@listname}\@empty
      \endgroup
    \fi
  }{%
    \MT@let@nc{MT@\MT@feat @inh@name}\@undefined
  }%
}
\def\MT@get@slot{%
  \escapechar`\\
  \let\MT@char@\m@ne
  \MT@noresttrue
  \MT@toks=\expandafter{\@tempa}%
  \MT@exp@two@c\MT@is@active\string\@tempa\@nil
  \expandafter\MT@is@letter\@tempa\relax\relax
  \ifnum\MT@char@ < \z@
    \MT@ifdefined@n@TF{\MT@encoding\MT@detokenize@c\@tempa}%
      \MT@is@symbol
      {\expandafter\MT@is@composite\@tempa\relax\relax}%
    \ifnum\MT@char@ < \z@
      \expandafter\MT@exp@two@c\expandafter\MT@is@char\expandafter
          \meaning\expandafter\@tempa\MT@charstring\relax\relax\relax
    \fi
  \fi
  \let\MT@char\MT@char@
  \MT@get@slot@
  \escapechar\m@ne
}
\newif\ifMT@norest
\def\MT@is@letter#1#2\relax{%
  \ifcat a\noexpand#1\relax
    \edef\MT@char@{\number`#1}%
    \ifx\\#2\\%
    \else
      \MT@norestfalse
    \fi
  \else
    \ifcat !\noexpand#1\relax
      \edef\MT@char@{\number`#1}%
      \ifx\\#2\\%
        \ifnum\MT@char@ > \MT@max@char \MT@warn@ascii \fi
      \else
        \MT@norestfalse
        \expandafter\MT@is@number#1#2\relax\relax
      \fi
    \fi
  \fi
}
\def\MT@is@number#1#2#3\relax{%
  \ifx\relax#3\relax \else
    \ifx\relax#2\relax \else
      \MT@noresttrue
      \if#1"\relax
        \def\x{\uppercase{\edef\MT@char@{\number#1#2#3}}}\x
      \else
        \if#1'\relax
          \def\MT@char@{\number#1#2#3}%
        \else
          \MT@ifint{#1#2#3}{%
            \def\MT@char@{\number#1#2#3}%
          }\MT@norestfalse
        \fi
      \fi
      \ifnum\MT@char@ > \MT@max@slot
        \MT@warn@number@too@large{\noexpand#1\noexpand#2\noexpand#3}%
        \let\MT@char@\m@ne
      \fi
    \fi
  \fi
}
\def\MT@is@active#1#2\@nil{%
  \ifnum\catcode`#1 = \active
    \begingroup
      \set@display@protect
      \let\IeC\@firstofone
      \let\@inpenc@undefined@\MT@undefined@char
      \let\UTF@two@octets@noexpand\@empty
      \let\UTF@three@octets@noexpand\@empty
      \let\UTF@four@octets@noexpand\@empty
      \def\UTFviii@defined##1{\ifx ##1\relax
        \MT@undefined@char{utf8}\else\expandafter ##1\fi}%
      \MT@ifdefined@c@T\PrerenderUnicode
        {\PrerenderUnicode{\@tempa}\let\unicode@charfilter\@firstofone}%
      \MT@is@active@hook{#1}%
      \edef\x{\endgroup
        \def\noexpand\@tempa{\expandafter\expandafter\expandafter\@empty\@tempa}%
        \MT@toks={\the\MT@toks\space(=
                  \expandafter\expandafter\expandafter\@empty\@tempa)}%
      }%
    \x
  \fi
}
\let\MT@is@active@hook\@gobble
^^Q\@gobble
{\catcode`\#=12
\MT@addto@setup{%
  \MT@with@package@T{listings}{%
    \apptocmd\MT@is@active@hook{%
      \MT@ifdefined@n@T{lst@ShortInlineOldCatcode\string#1}{%
        \catcode`#1=\csname lst@ShortInlineOldCatcode\string#1\endcsname\relax
        \ifnum\catcode`#1=\active
          \begingroup
            \catcode`\~\active \lccode`\~`#1%
            \lowercase{\endgroup
              \MT@let@cn~{lst@ShortInlineOldMeaning\string#1}}%
        \else
          \def\@tempa{#1}%
        \fi
      }%
    }{}{}%
  }%
  \MT@if@false
  \MT@with@package@T{doc}\MT@if@true
  \MT@with@package@T{shortvrb}\MT@if@true
  \ifMT@if@\expandafter\@firstofone\else\expandafter\@gobble\fi{%
    \apptocmd\MT@is@active@hook{%
      \MT@ifdefined@n@T{cc\string#1}{%
        \catcode`#1=\csname cc\string#1\endcsname\relax
        \ifnum\catcode`#1=\active
          \begingroup
            \catcode`\~\active \lccode`\~`#1%
            \lowercase{\endgroup
              \MT@let@cn~{ac\string#1}}%
        \else
          \def\@tempa{#1}%
        \fi
      }%
    }{}{}%
  }%
}}
\def\MT@undefined@char#1{undefined in input encoding ``#1''}
\def\MT@is@symbol{%
  \expandafter\def\expandafter\MT@char\expandafter
      {\csname\MT@encoding\MT@detokenize@c\@tempa\endcsname}%
  \expandafter\expandafter\expandafter
    \MT@is@opt@char\MT@char\iffontchar\char\else\fi\relax
  \expandafter\MT@exp@two@c\expandafter\MT@is@char\expandafter
    \meaning\expandafter\MT@char\MT@charstring\relax\relax\relax
  \ifnum\MT@char@ < \z@
    \expandafter\expandafter\expandafter\MT@is@tlig\MT@char\relax\relax
    \ifnum\MT@char@ < \z@
      \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax
    \fi
  \fi
}
\def\MT@is@opt@char#1\iffontchar#2\char#3\else#4\fi\relax{%
  \MT@ifempty{#1}{%
    \iffontchar#2%
      \MT@exp@cs\chardef{\MT@encoding\MT@detokenize@c\@tempa}=#3\relax
    \fi
  }\relax
}
\begingroup
  \catcode`\/=\z@
  /MT@map@tlist@n{/\CHARLEX}/@makeother
  /lowercase{%
    /def/x{/endgroup
      /def/MT@charstring{\CHAR"}%
      /def/MT@is@char##1\CHAR"##2##3##4/relax{%
        /ifx/relax##4/relax
          /ifMT@xunicode
            /expandafter/MT@is@charx/MT@strip@prefix##1>/relax\CHAR "%
              /relax/relax/relax/relax/relax
          /fi
        /else
          /ifx/relax##1/relax
            /if##3\/relax
              /edef/MT@char@{/number"##2}%
              /MT@ifstreq/MT@charstring{##3##4}/relax/MT@norestfalse
            /else
              /edef/MT@char@{/number"##2##3}%
              /MT@ifstreq/MT@charstring{##4}/relax
                {/MT@is@xchar##2##3|##4\CHAR"/relax}%
            /fi
          /fi
        /fi
      }%
      /def/MT@is@xchar##1|##2\CHAR"##3##4/relax{%
        /MT@ifstreq/MT@charstring{##3##4}%
          {/edef/MT@char@{/number"##1##2}}/MT@norestfalse
      }%
      /def/MT@charxstring{\CHAR "}%
      /def/MT@strip@prefix##1>##2/relax{##2}%
      /def/MT@is@charx##1\CHAR "##2##3##4##5##6/relax{%
        /ifx/relax##1/relax
          /ifx/relax##6/relax/else
            /edef/MT@char@{/number"##2##3##4##5}%
            /MT@ifstreq{\RELAX >\CHAR "}{##6}/relax/MT@norestfalse
          /fi
        /fi
      }%
    }%
  }
/x
\def\MT@is@tlig#1#2\relax{%
  \ifx\remove@tlig#1%
    \MT@remove@tlig
  \fi
}
\def\MT@remove@tlig{%
  \expandafter\MT@exp@two@c\expandafter\MT@is@number
  \expandafter\@secondoftwo\MT@char\relax\relax
}
\def\MT@is@composite#1#2\relax{%
  \ifx\\#2\\\else
    \expandafter\def\expandafter\MT@char\expandafter{\csname\expandafter
                    \string\csname\MT@encoding\endcsname
                    \MT@detokenize@n{#1}-\MT@detokenize@n{#2}\endcsname}%
    \ifx\UnicodeEncodingName\@undefined\else
      \expandafter\expandafter\expandafter
        \MT@is@uni@comp\MT@char\iffontchar\else\fi\relax
    \fi
    \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax
    \ifnum\MT@char@ < \z@
      \ifMT@xunicode
        \edef\MT@char{\MT@exp@two@c\MT@strip@prefix\meaning\MT@char>\relax}%
        \expandafter\MT@exp@two@c\expandafter\MT@is@charx\expandafter
            \MT@char\MT@charxstring\relax\relax\relax\relax\relax
      \fi
    \fi
  \fi
}
\def\MT@is@uni@comp#1\iffontchar#2\else#3\fi\relax{%
  \ifx\\#1\\\edef\MT@char{\iffontchar#2\fi}\fi
}
\def\MT@set@listname{%
  \edef\MT@curr@list@name{\@nameuse{MT@abbr@\MT@feat} list\noexpand\MessageBreak
    `\@nameuse{MT@\MT@feat @c@name}'}%
}
\def\MT@warn@ascii{%
  \MT@warning@nl{Character `\the\MT@toks' (= \MT@char@)
    is outside of ASCII range.\MessageBreak
    You must load the `inputenc' package before using\MessageBreak
    8-bit characters in \MT@curr@list@name}%
}
\def\MT@warn@number@too@large#1{%
  \MT@warning@nl{%
    Number #1 in encoding `\MT@encoding' too large!\MessageBreak
    Ignoring it in \MT@curr@list@name}%
}
\def\MT@warn@rest{%
  \MT@warning@nl{%
    Unknown slot number of character\MessageBreak`\the\MT@toks'%
    \MT@warn@maybe@inputenc\MessageBreak
    in font encoding `\MT@encoding'.\MessageBreak
    Make sure it's a single character\MessageBreak
    (or a number) in \MT@curr@list@name}%
}
\def\MT@warn@unknown{%
  \MT@warning@nl{%
    Unknown slot number of character\MessageBreak`\the\MT@toks'%
    \MT@warn@maybe@inputenc\MessageBreak
    in font encoding `\MT@encoding' in \MT@curr@list@name}%
}
\def\MT@warn@maybe@inputenc{%
  \MT@ifdefined@n@T
     {MT@\MT@feat @\MT@cat @\csname MT@\MT@feat @\MT@cat @name\endcsname @inputenc}%
    { (input encoding `\@nameuse
     {MT@\MT@feat @\MT@cat @\csname MT@\MT@feat @\MT@cat @name\endcsname @inputenc}')}%
}
\def\MT@warn@unknown@once#1{%
  \def\MT@warn@unknown{%
    \MT@warning@nl{One or more slots in the configuration are unknown.\MessageBreak
                   Make sure that no text commands are used.\MessageBreak
                   See the documentation for details (the note\MessageBreak
                   on `#1' in section 11: `Hints and caveats')}%
    \MT@glet\MT@warn@unknown\relax}%
}
\let\MT@font@list\@empty
\let\MT@font\@empty
\MT@addto@setup{%
  \MT@with@package@T{luatexja}{\MT@warn@unknown@once{luatexja}}%
  \MT@with@package@T{xeCJK}   {\MT@warn@unknown@once{xeCJK}}%
  \@ifpackageloaded{CJK}{%
    \@ifpackageloaded{xeCJK}{\@firstofone}{%
      \@ifpackagelater{CJK}{2006/10/17}% 4.7.0
        {\def\MT@orig@pickupfont{\CJK@ifundefined\CJK@plane}}%
        {\def\MT@orig@pickupfont{\@ifundefined{CJK@plane}}}%
      \g@addto@macro\MT@orig@pickupfont
        {{\expandafter\ifx\font@name\relax\define@newfont\fi}}%
      \@ifpackageloaded{CJKutf8}%
        {\@ifpackagelater{CJKutf8}{2008/05/22}% 4.8.0
          {\ifpdf\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
          {\@firstoftwo}}%
        {\@firstoftwo}%
      {\g@addto@macro\MT@orig@pickupfont{%
        {\expandafter\ifx\csname\curr@fontshape/\f@size/\CJK@plane\endcsname\relax
           \define@newfont\else\xdef\font@name{%
             \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}\fi}}}%
      {\g@addto@macro\MT@orig@pickupfont{%
        {\expandafter\ifx\csname \curr@fontshape/\f@size/\CJK@plane\endcsname\relax
           \define@newfont\def\CJK@temp{v}%
           \ifx\CJK@temp\CJK@plane
             \expandafter\ifx\csname CJK@cmap@\f@family\CJK@plane\endcsname\relax
             \else\csname CJK@cmap@\f@family\CJK@plane\endcsname\fi
           \else \CJK@addcmap\CJK@plane \fi
         \else\xdef\font@name{%
           \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}\fi}}}%
      \@gobble
    }%
  }{\@firstofone}%
  {\def\MT@orig@pickupfont{\expandafter\ifx\font@name\relax\define@newfont\fi}}%
  \ifx\pickup@font\MT@orig@pickupfont \else
    \MT@warning@nl{%
      Command \string\pickup@font\space is not defined as expected.%
      \MessageBreak Patching it anyway. Some things may break%
     .\MessageBreak Double-check whether micro-typography is indeed%
      \MessageBreak applied to the document.%
      \MessageBreak (Hint: Turn on `verbose' mode)%
    }%
  \fi
  \g@addto@macro\pickup@font{\begingroup}%
  \MT@with@package@T{trace}{\g@addto@macro\pickup@font{\conditionally@traceoff}}%
  \g@addto@macro\pickup@font{%
    \MT@if@expanding@F{%
      \escapechar\m@ne
      \MT@let@cn\MT@font{MT@subst@\expandafter\string\font@name}%
      \ifx\MT@font\relax
        \let\MT@font\font@name
      \else
        \ifx\MT@font\font@name \else
          \MT@register@subst@font
        \fi
      \fi
      \MT@setupfont}%
    \endgroup
  }%
  \let\MT@pickupfont\pickup@font
  \def\MT@MT@pickupfont {\let\pickup@font\MT@pickupfont}%
  \def\MT@ltx@pickupfont{\let\pickup@font\MT@orig@pickupfont}%
  \g@addto@macro\do@subst@correction
    {\edef\MT@font{\csname\curr@fontshape/\f@size\endcsname}%
     \MT@glet@nc{MT@subst@\expandafter\string\font@name}\MT@font}%
  \let\MT@orig@add@accent\add@accent
  \def\add@accent#1#2{%
    \MT@ltx@pickupfont
    \MT@orig@add@accent{#1}{#2}%
    \MT@MT@pickupfont
  }%
}
\def\MT@check@font{\MT@exp@one@n\MT@in@clist\MT@font\MT@font@list}
\def\MT@register@font{\xdef\MT@font@list{\MT@font@list\MT@font,}}
\def\MT@register@subst@font{%
  \MT@exp@one@n\MT@in@clist\font@name\MT@font@list
  \ifMT@inlist@\else
    \xdef\MT@font@list{\MT@font@list\font@name,}%
    \expandafter\MT@rem@from@clist\MT@font\MT@font@list
  \fi
}
\def\MT@check@font@cx{%
  \MT@if@true
  \MT@map@clist@c\MT@active@features{%
    \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter\MT@font
      \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname
    \ifMT@inlist@
      \MT@let@nc{MT@\@nameuse{MT@abbr@##1}}\relax
    \else
      \MT@if@false
    \fi
  }%
  \ifMT@if@ \MT@inlist@true \else \MT@inlist@false \fi
}
\def\MT@register@subst@font@cx{%
  \MT@map@clist@c\MT@active@features{%
    \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter\font@name
      \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname
    \ifMT@inlist@ \else
      \MT@exp@cs\MT@xadd
        {MT@##1@\csname MT@##1@context\endcsname font@list}%
        {\font@name,}%
      \expandafter\MT@exp@one@n\expandafter\MT@rem@from@clist\expandafter\MT@font
         \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname
    \fi
  }%
}
\def\MT@register@font@cx{%
  \MT@map@clist@c\MT@active@features{%
    \MT@exp@cs\ifx{MT@\@nameuse{MT@abbr@##1}}\relax\else
      \MT@exp@cs\MT@xadd
        {MT@##1@\csname MT@##1@context\endcsname font@list}%
        {\MT@font,}%
      \def\@tempa{##1}%
      \MT@exp@cs\MT@map@tlist@c{MT@##1@doc@contexts}\MT@maybe@rem@from@list
    \fi
  }%
}
\def\MT@maybe@rem@from@list#1{%
  \MT@ifstreq{\@tempa/#1}{\@tempa/\csname MT@\@tempa @context\endcsname}\relax{%
    \expandafter\MT@exp@one@n\expandafter\MT@rem@from@clist\expandafter
       \MT@font \csname MT@\@tempa @#1font@list\endcsname
  }%
}
\DeclareRobustCommand\microtypecontext{\MT@begin@catcodes\MT@microtypecontext}
\def\MT@microtypecontext#1{\MT@end@catcodes\MT@addto@setup{\microtypecontext{#1}}}
\MT@addto@setup{%
  \DeclareRobustCommand\microtypecontext{%
    \MT@begin@catcodes
    \MT@microtypecontext
  }%
  \def\MT@microtypecontext#1{%
    \MT@end@catcodes
    \MT@setup@contexts
    \let\MT@reset@context\relax
    \MT@glet\glb@currsize\@empty
    \setkeys{MTC}{#1}%
    \selectfont
    \MT@reset@context
  }%
}
\DeclareRobustCommand\textmicrotypecontext{\MT@begin@catcodes\MT@textmicrotypecontext}
\def\MT@textmicrotypecontext#1{\MT@end@catcodes\MT@text@microtypecontext{#1}}
\def\MT@text@microtypecontext#1#2{{\microtypecontext{#1}#2}}
\def\MT@reset@context@{%
  \MT@vinfo{<<< Resetting contexts\on@line
  }%
  \selectfont
}
\def\MT@setup@contexts{%
  \MT@map@clist@c\MT@active@features
    {\MT@glet@nc{MT@##1@@font@list}\MT@font@list}%
  \MT@glet\MT@check@font\MT@check@font@cx
  \MT@glet\MT@register@font\MT@register@font@cx
  \MT@glet\MT@register@subst@font\MT@register@subst@font@cx
  \MT@glet\MT@setup@contexts\relax
}
\MT@map@clist@c\MT@features@long{%
  \define@key{MTC}{#1}[]{%
    \edef\@tempb{\@nameuse{MT@rbba@#1}}%
    \MT@exp@one@n\MT@in@clist\@tempb\MT@active@features
    \ifMT@inlist@
      \MT@ifempty{##1}{\def\MT@val{@}}{\def\MT@val{##1}}%
      \MT@exp@cs\ifx{MT@\@tempb @context}\MT@val
      \else
        \MT@vinfo{>>> Changing #1 context to `\MT@val'\MessageBreak\on@line
                 }%
        \def\MT@reset@context{\aftergroup\MT@reset@context@}%
        \MT@glet@nn{MT@reset@\@tempb @codes}{MT@reset@\@tempb @codes@}%
        \expandafter\MT@exp@one@n\expandafter\MT@in@tlist\expandafter
          \MT@val \csname MT@\@tempb @doc@contexts\endcsname
        \ifMT@inlist@ \else
          \MT@exp@cs\MT@xadd{MT@\@tempb @doc@contexts}{{\MT@val}}%
        \fi
        \MT@edef@n{MT@\@tempb @context}{\MT@val}%
      \fi
    \fi
  }%
}
\define@key{MTC}{activate}[]{%
  \setkeys{MTC}{protrusion={#1}}%
  \setkeys{MTC}{expansion={#1}}%
}
\MT@exp@one@n\MT@map@clist@n{\MT@features,nl}{%
  \MT@def@n{MT@#1@context}{@}%
  \MT@def@n{MT@#1@doc@contexts}{{@}}%
}
\let\MT@extra@context\@empty
\def\DeclareMicrotypeSet{%
  \MT@begin@catcodes
  \@ifstar
    \MT@DeclareSetAndUseIt
    \MT@DeclareSet
}
\newcommand\MT@DeclareSet[3][]{%
  \MT@ifempty{#1}{%
    \MT@map@clist@c\MT@features{\begingroup\MT@declare@sets{##1}{#2}{#3}\endgroup}%
  }{%
    \MT@map@clist@n{#1}{\begingroup
      \MT@ifempty{##1}\relax{%
        \MT@is@feature{##1}{set declaration `#2'}{%
          \MT@exp@one@n\MT@declare@sets
            {\csname MT@rbba@##1\endcsname}{#2}{#3}%
        }%
      }%
    \endgroup}%
  }%
  \MT@end@catcodes
}
\newcommand\MT@DeclareSetAndUseIt[3][]{%
  \MT@DeclareSet[#1]{#2}{#3}%
  \UseMicrotypeSet[#1]{#2}%
}
\let\MT@curr@set@name\@empty
\def\MT@declare@sets#1#2#3{%
  \def\MT@curr@set@name{#2}%
  \MT@ifdefined@n@T{MT@#1@set@@\MT@curr@set@name}{%
    \MT@warning{Redefining \@nameuse{MT@abbr@#1} set `\MT@curr@set@name'}%
    \MT@map@clist@n{font,encoding,family,series,shape,size}{%
      \MT@glet@nc{MT@#1list@##1@\MT@curr@set@name}\@undefined
    }%
  }%
  \MT@glet@nc{MT@#1@set@@\MT@curr@set@name}\@empty
  \setkeys{MT@#1@set}{#3}%
}
\def\MT@define@set@key@#1#2{%
  \define@key{MT@#2@set}{#1}[]{%
    \MT@glet@nc{MT@#2list@#1@\MT@curr@set@name}\@empty
    \MT@map@clist@n{##1}{%
      \KV@@sp@def\MT@val{####1}%
      \MT@get@highlevel{#1}%
      \MT@exp@two@n\g@addto@macro
        {\csname MT@#2list@#1@\MT@curr@set@name\expandafter\endcsname}%
        {\MT@val,}%
    }%
    \expandafter\g@addto@macro\expandafter\MT@font@sets
      \csname MT@#2list@#1@\MT@curr@set@name\endcsname
  }%
}
\def\MT@get@highlevel#1{%
  \expandafter\MT@test@ast\MT@val*\@nil\relax{%
    \MT@ifempty\@tempa{\def\@tempa{#1}}\relax
    \MT@ifdefined@n@TF{\@tempa default}%
      {\edef\MT@val{\MT@exp@cs\noexpand{\@tempa default}}}%
      {\MT@warning{`\@backslashchar\@tempa default' is not a defined command.\MessageBreak
                   Ignoring `#1 = {\@tempa*}' in font set\MessageBreak`\MT@curr@set@name'}%
       \let\MT@val\@empty}%
  }%
}
\def\MT@test@ast#1*#2\@nil{%
  \def\@tempa{#1}%
  \MT@ifempty{#2}%
}
\let\MT@font@sets\@empty
\def\MT@fix@font@set#1{%
  \MT@ifdefined@c@T{#1}{%
    \xdef#1{#1}%
    \ifMT@fontspec
      \xdef#1{\expandafter\MT@scrubfeatures#1()\relax}%
    \fi
    \global\@onelevel@sanitize#1%
  }%
}
\def\MT@define@set@key@size#1{%
  \define@key{MT@#1@set}{size}[]{%
    \MT@map@clist@n{##1}{%
      \def\MT@val{####1}%
      \expandafter\MT@get@range\MT@val--\@nil
      \ifx\MT@val\relax \else
        \MT@exp@cs\MT@xadd
          {MT@#1list@size@\MT@curr@set@name}%
          {{{\MT@lower}{\MT@upper}\relax}}%
      \fi
    }%
  }%
}
\def\MT@get@range#1-#2-#3\@nil{%
  \MT@ifempty{#1}{%
    \MT@ifempty{#2}{%
      \let\MT@val\relax
    }{%
      \def\MT@lower{0}%
      \def\MT@val{#2}%
      \MT@get@size
      \edef\MT@upper{\MT@val}%
    }%
  }{%
    \def\MT@val{#1}%
    \MT@get@size
    \ifx\MT@val\relax \else
      \edef\MT@lower{\MT@val}%
      \MT@ifempty{#2}{%
        \MT@ifempty{#3}%
          {\def\MT@upper{-1}}%
          {\def\MT@upper{2048}}%
      }{%
        \def\MT@val{#2}%
        \MT@get@size
        \ifx\MT@val\relax \else
          \MT@ifdim\MT@lower>\MT@val{%
            \MT@error{%
              Invalid size range (\MT@lower\space > \MT@val) in font set
              `\MT@curr@set@name'.\MessageBreak Swapping sizes}{}%
            \edef\MT@upper{\MT@lower}%
            \edef\MT@lower{\MT@val}%
          }{%
            \edef\MT@upper{\MT@val}%
          }%
          \MT@ifdim\MT@lower=\MT@upper
            {\def\MT@upper{-1}}%
            \relax
        \fi
      }%
    \fi
  }%
}
\def\MT@get@size{%
  \if*\MT@val\relax
    \def\@tempa{\normalsize}%
  \else
    \MT@let@cn\@tempa{\MT@val}%
  \fi
  \ifx\@tempa\relax\else
    \MT@get@size@
  \fi
^^X  \MT@exp@one@n\ifdefdimen\MT@val{\edef\MT@val{\the\MT@val}}\relax
  \MT@ifdimen\MT@val{%
    \@defaultunits\@tempdima\MT@val pt\relax\@nnil
    \edef\MT@val{\strip@pt\@tempdima}%
  }{%
    \MT@warning{Could not parse font size `\MT@val'\MessageBreak
                in font set `\MT@curr@set@name'}%
    \let\MT@val\relax
  }%
}
\def\MT@get@size@@{%
  \begingroup
    \def\set@fontsize##1##2##3##4\@nil{\endgroup\def\MT@val{##2}}%
    \@tempa\@nil
}
^^X\@ifclassloaded{svjour3}{%
^^X  \def\MT@get@size@{%
^^X    \@tempcnta=\currentiflevel
^^X    \MT@get@size@@
^^X    \MT@loop
^^X      \ifnum\numexpr\currentiflevel-1>\@tempcnta
^^X      \csname fi\endcsname
^^X    \MT@repeat
^^X  }%
^^X}{%
  \let\MT@get@size@\MT@get@size@@
^^X}
\def\MT@define@set@key@font#1{%
  \define@key{MT@#1@set}{font}[]{%
    \MT@glet@nc{MT@#1list@font@\MT@curr@set@name}\@empty
    \MT@map@clist@n{##1}{%
      \def\MT@val{####1}%
      \MT@ifstreq\MT@val*{\def\MT@val{*/*/*/*/*}}\relax
      \expandafter\MT@get@font\MT@val/////\@nil
      \MT@exp@two@n\g@addto@macro
        {\csname MT@#1list@font@\MT@curr@set@name\expandafter\endcsname}%
        {\MT@val,}%
    }%
    \expandafter\g@addto@macro\expandafter\MT@font@sets
      \csname MT@#1list@font@\MT@curr@set@name\endcsname
  }%
}
\def\MT@get@font#1/#2/#3/#4/#5/#6\@nil{%
  \MT@get@font@{#1}{#2}{#3}{#4}{#5}{0}%
  \ifx\MT@val\relax\def\MT@val{0}\fi
  \expandafter\g@addto@macro\expandafter\@tempb\expandafter{\MT@val}%
  \let\MT@val\@tempb
}
\def\MT@get@font@#1#2#3#4#5#6{%
  \let\@tempb\@empty
  \def\MT@temp{#1/#2/#3/#4/#5}%
  \MT@get@axis{encoding}{#1}%
  \MT@get@axis{family}  {#2}%
  \MT@get@axis{series}  {#3}%
  \MT@get@axis{shape}   {#4}%
  \ifnum#6>\z@\edef\@tempb{\@tempb*}\fi
  \MT@ifempty{#5}{%
    \MT@warn@axis@empty{size}{\string\normalsize}%
    \def\MT@val{*}%
  }{%
    \def\MT@val{#5}%
  }%
  \MT@get@size
}
\def\MT@get@axis#1#2{%
  \def\MT@val{#2}%
  \MT@get@highlevel{#1}%
  \MT@ifempty\MT@val{%
    \MT@warn@axis@empty{#1}{\csname #1default\endcsname}%
    \expandafter\def\expandafter\MT@val\expandafter{\csname #1default\endcsname}%
  }\relax
  \expandafter\g@addto@macro\expandafter\@tempb\expandafter{\MT@val/}%
}
\def\MT@warn@axis@empty#1#2{%
  \MT@warning{#1 axis is empty in font specification\MessageBreak
    `\MT@temp'. Using `#2' instead}%
}
\MT@exp@one@n\MT@map@clist@n{\MT@features,nl}{%
  \MT@define@set@key@{encoding}{#1}%
  \MT@define@set@key@{family}  {#1}%
  \MT@define@set@key@{series}  {#1}%
  \MT@define@set@key@{shape}   {#1}%
  \MT@define@set@key@size      {#1}%
  \MT@define@set@key@font      {#1}%
}
\def\UseMicrotypeSet{%
  \MT@begin@catcodes
  \MT@UseMicrotypeSet
}
\newcommand*\MT@UseMicrotypeSet[2][]{%
  \MT@ifempty{#1}{%
    \MT@map@clist@c\MT@features{\begingroup\MT@use@set{##1}{#2}\endgroup}%
  }{%
    \MT@map@clist@n{#1}{\begingroup
      \MT@ifempty{##1}\relax{%
        \MT@is@feature{##1}{activation of set `#2'}{%
          \MT@exp@one@n\MT@use@set
            {\csname MT@rbba@##1\endcsname}{#2}%
        }%
      }%
    \endgroup}%
  }%
  \MT@end@catcodes
}
\def\MT@use@set#1#2{%
  \MT@ifdefined@n@TF{MT@#1@set@@#2}{%
    \MT@xdef@n{MT@#1@setname}{#2}%
  }{%
    \MT@ifdefined@n@TF{MT@#1@setname}\relax{%
      \MT@xdef@n{MT@#1@setname}{\@nameuse{MT@default@#1@set}}%
    }%
    \MT@error{%
      The \@nameuse{MT@abbr@#1} set `#2' is undeclared.\MessageBreak
      Using set `\@nameuse{MT@#1@setname}' instead}{}%
  }%
}
\def\DeclareMicrotypeSetDefault{%
  \MT@begin@catcodes
  \MT@DeclareMicrotypeSetDefault
}
\newcommand*\MT@DeclareMicrotypeSetDefault[2][]{%
  \MT@ifempty{#1}{%
    \MT@map@clist@c\MT@features{\begingroup\MT@set@default@set{##1}{#2}\endgroup}%
  }{%
    \MT@map@clist@n{#1}{\begingroup
      \MT@ifempty{##1}\relax{%
        \MT@is@feature{##1}{declaration of default set `#2'}{%
          \MT@exp@one@n\MT@set@default@set
            {\csname MT@rbba@##1\endcsname}{#2}%
        }%
      }%
    \endgroup}%
  }%
  \MT@end@catcodes
}
\def\MT@set@default@set#1#2{%
  \MT@ifdefined@n@TF{MT@#1@set@@#2}{%
    \MT@xdef@n{MT@default@#1@set}{#2}%
  }{%
    \MT@error{%
      The \@nameuse{MT@abbr@#1} set `#2' is not declared.\MessageBreak
      Cannot make it the default set. Using set\MessageBreak `all' instead}{}%
    \MT@xdef@n{MT@default@#1@set}{all}%
  }%
}
\let\MT@variants\@empty
\def\DeclareMicrotypeVariants{%
  \MT@begin@catcodes
  \@ifstar
    \MT@DeclareVariants
    {\let\MT@variants\@empty\MT@DeclareVariants}%
}
\def\MT@DeclareVariants#1{%
  \MT@map@clist@n{#1}{%
    \def\@tempa{##1}%
    \@onelevel@sanitize\@tempa
    \xdef\MT@variants{\MT@variants{\@tempa}}%
  }%
  \MT@end@catcodes
}
\def\DeclareMicrotypeAlias{%
  \MT@begin@catcodes
  \MT@DeclareMicrotypeAlias
}
\newcommand*\MT@DeclareMicrotypeAlias[2]{%
  \def\@tempb{#2}%
  \@onelevel@sanitize\@tempb
  \MT@ifdefined@n@T{MT@#1@alias}{%
    \MT@warning{Alias font family `\@tempb' will override
      alias `\@nameuse{MT@#1@alias}'\MessageBreak
      for font family `#1'}}%
  \MT@xdef@n{MT@#1@alias}{\@tempb}%
  \MT@ifdefined@c@T\MT@family{%
    \MT@glet\MT@familyalias\@tempb
  }%
  \MT@end@catcodes
}
\def\LoadMicrotypeFile#1{%
  \edef\@tempa{\zap@space#1 \@empty}%
  \@onelevel@sanitize\@tempa
  \MT@exp@one@n\MT@in@clist\@tempa\MT@file@list
  \ifMT@inlist@
    \MT@vinfo{... Configuration file \MT@cfg@prefix-\@tempa.cfg already loaded}%
  \else
    \MT@xadd\MT@file@list{\@tempa,}%
    \MT@begin@catcodes
    \InputIfFileExists{\MT@cfg@prefix-\@tempa.cfg}{%
      \edef\MT@curr@file{\MT@cfg@prefix-\@tempa.cfg}%
      \MT@vinfo{... Loading configuration file \MT@curr@file}%
    }{%
      \MT@warning{Configuration file \MT@cfg@prefix-\@tempa.cfg\MessageBreak
                  does not exist}%
    }%
    \MT@end@catcodes
  \fi
}
\def\MT@cfg@prefix{mt}
\def\DeclareMicrotypeFilePrefix#1{%
  \def\MT@cfg@prefix{#1}%
}
\def\DeclareMicrotypeBabelHook{%
  \MT@begin@catcodes
  \MT@DeclareMicrotypeBabelHook
}
\def\MT@DeclareMicrotypeBabelHook#1#2{%
  \MT@map@clist@n{#1}{%
    \KV@@sp@def\@tempa{##1}%
    \MT@gdef@n{MT@babel@\@tempa}{#2}%
  }%
  \MT@end@catcodes
}
\def\SetProtrusion{%
  \MT@begin@catcodes
  \MT@SetProtrusion
}
\newcommand*\MT@SetProtrusion[3][]{%
  \let\MT@extra@context\@empty
  \MT@set@named@keys{MT@pr@c}{#1}%
  \def\MT@permutelist{pr@c}%
  \setkeys{MT@cfg}{#2}%
  \MT@permute
  \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}%
  \MT@end@catcodes
}
\def\MT@set@named@keys#1#2{%
  \def\x##1name=##2,##3\@nil{%
    \setkeys{#1}{name=##2}%
    \gdef\MT@options{##1##3}%
    \MT@rem@from@clist{name=}\MT@options
  }%
  \x#2,name=,\@nil
  \@expandtwoargs\setkeys{#1}\MT@options
}
\def\MT@define@code@key#1#2{%
  \define@key{MT@#2}{#1}[]{%
    \@tempcnta=\@ne
    \MT@map@clist@n{##1}{%
      \KV@@sp@def\MT@val{####1}%
      \MT@get@highlevel{#1}%
      \MT@edef@n{MT@temp#1\the\@tempcnta}{\MT@val}%
      \advance\@tempcnta \@ne
    }%
  }%
}
\def\MT@define@code@key@family#1{%
  \define@key{MT@#1}{family}[]{%
    \@tempcnta=\@ne
    \MT@map@clist@n{##1}{%
      \KV@@sp@def\MT@val{####1}%
      \MT@get@highlevel{family}%
      \ifMT@fontspec
        \edef\x{\edef\noexpand\MT@val{\noexpand\MT@scrubfeature\MT@val()\relax}}\x
      \fi
      \MT@edef@n{MT@tempfamily\the\@tempcnta}{\MT@val}%
      \advance\@tempcnta \@ne
    }%
  }%
}
\def\MT@define@code@key@size#1{%
  \define@key{MT@#1}{size}[]{%
    \MT@map@clist@n{##1}{%
      \KV@@sp@def\MT@val{####1}%
      \expandafter\MT@get@range\MT@val--\@nil
      \ifx\MT@val\relax \else
        \MT@exp@cs\MT@xadd{MT@tempsize}%
           {{{\MT@lower}{\MT@upper}{\MT@curr@set@name}}}%
      \fi
    }%
  }%
}
\def\MT@define@code@key@font#1{%
  \define@key{MT@#1}{font}[]{%
    \MT@map@clist@n{##1}{%
      \KV@@sp@def\MT@val{####1}%
      \MT@ifstreq\MT@val*{\def\MT@val{*/*/*/*/*}}\relax
      \expandafter\MT@get@font@and@size\MT@val/////\@nil
      \ifMT@fontspec
        \edef\@tempb{\expandafter\MT@scrubfeatures\@tempb()\relax}%
      \fi
      \MT@xdef@n{MT@\MT@permutelist @\@tempb\MT@extra@context}%
        {\csname MT@\MT@permutelist @name\endcsname}%
      \MT@exp@cs\MT@xaddb
        {MT@\MT@permutelist @\@tempb\MT@extra@context @sizes}%
        {{{\MT@val}{\m@ne}{\MT@curr@set@name}}}%
    }%
  }%
}
\def\MT@get@font@and@size#1/#2/#3/#4/#5/#6\@nil{%
  \MT@get@font@{#1}{#2}{#3}{#4}{#5}{1}%
}
\MT@define@code@key{encoding}{cfg}
\MT@define@code@key@family   {cfg}
\MT@define@code@key{series}  {cfg}
\MT@define@code@key{shape}   {cfg}
\MT@define@code@key@size     {cfg}
\MT@define@code@key@font     {cfg}
\def\MT@define@opt@key#1#2{%
  \define@key{MT@#1@c}{#2}[]{\MT@ifempty{##1}\relax{%
    \MT@xdef@n{MT@#1@c@\MT@curr@set@name @#2}{##1}}}%
}
\newcount\MT@listname@count
\MT@map@clist@c\MT@features{%
  \define@key{MT@#1@c}{name}[]{%
    \MT@ifempty{##1}{%
      \MT@ifdefined@n@TF{MT@#1@c@\MT@curr@file/\the\inputlineno}{%
        \global\advance\MT@listname@count\@ne
        \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno
                                 (\number\MT@listname@count)}%
      }{%
        \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno}%
      }%
    }{%
      \MT@edef@n{MT@#1@c@name}{##1}%
      \MT@ifdefined@n@T{MT@#1@c@\csname MT@#1@c@name\endcsname}{%
        \MT@warning{Redefining \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'}%
      }%
    }%
    \MT@let@cn\MT@curr@set@name{MT@#1@c@name}%
  }%
  \MT@define@opt@key{#1}{load}%
  \MT@define@opt@key{#1}{factor}%
  \MT@define@opt@key{#1}{preset}%
  \MT@define@opt@key{#1}{inputenc}%
  \define@key{MT@#1@c}{context}[]{\MT@ifempty{##1}\relax{\def\MT@extra@context{##1}}}%
}
\def\MT@warn@nodim#1{%
  \MT@warning{`\@tempa' is not a dimension.\MessageBreak
              Ignoring it and setting values relative to\MessageBreak #1}%
}
\define@key{MT@pr@c}{unit}[character]{%
  \MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{character}\relax{%
    \MT@ifdimen\@tempa
      {\MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa}%
      {\MT@warn@nodim{character widths}}%
  }%
}
\define@key{MT@tr@c}{unit}[1em]{%
  \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty
  \def\@tempa{#1}%
  \MT@ifdimen\@tempa
    {\MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@tempa}%
    {\MT@warn@nodim{1em}%
     \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}}%
}
\renewcommand*\DeclareCharacterInheritance[1][]{%
  \let\MT@extra@context\@empty
  \let\MT@extra@inputenc\@undefined
  \let\MT@inh@feat\@empty
  \setkeys{MT@inh@}{#1}%
  \MT@begin@catcodes
  \MT@set@inh@list
}
\def\MT@set@inh@list#1#2{%
  \MT@ifempty\MT@inh@feat{%
    \MT@map@clist@c\MT@features{\begingroup
      \MT@ifstreq{##1}{tr}\relax{\MT@declare@char@inh{##1}{#1}{#2}}%
    \endgroup}%
  }{%
    \MT@map@clist@c\MT@inh@feat{\begingroup
      \KV@@sp@def\@tempa{##1}%
      \MT@ifempty\@tempa\relax{%
        \edef\@tempa{\csname MT@rbba@\@tempa\endcsname}%
        \MT@ifstreq\@tempa{tr}\relax{%
          \MT@exp@one@n\MT@declare@char@inh{\@tempa}{#1}{#2}}}%
    \endgroup}%
  }%
  \MT@end@catcodes
}
\MT@map@clist@c\MT@features@long{%
  \define@key{MT@inh@}{#1}[]{\edef\MT@inh@feat{\MT@inh@feat#1,}}}
\define@key{MT@inh@}{inputenc}{\def\MT@extra@inputenc{#1}}
\def\MT@declare@char@inh#1#2#3{%
  \MT@edef@n{MT@#1@inh@name}%
    {\MT@curr@file/\the\inputlineno (\@nameuse{MT@abbr@#1})}%
  \MT@let@cn\MT@curr@set@name{MT@#1@inh@name}%
  \MT@ifdefined@c@T\MT@extra@inputenc{%
    \MT@xdef@n{MT@#1@inh@\MT@curr@set@name @inputenc}{\MT@extra@inputenc}}%
  \MT@gdef@n{MT@#1@inh@\csname MT@#1@inh@name\endcsname}{#3}%
  \def\MT@permutelist{#1@inh}%
  \setkeys{MT@inh}{#2}%
  \MT@permute
}
\MT@define@code@key{encoding}{inh}
\MT@define@code@key@family   {inh}
\MT@define@code@key{series}  {inh}
\MT@define@code@key{shape}   {inh}
\MT@define@code@key@size     {inh}
\MT@define@code@key@font     {inh}
\def\MT@inh@do#1,{%
  \ifx\relax#1\@empty \else
    \MT@inh@split #1==\relax
    \expandafter\MT@inh@do
  \fi
}
\def\MT@has@inh@prefix#1(#2)#3#4\@nil{%
  \let\MT@temp\relax
  \ifx\relax#3%
    \def\@tempa{#1#2}%
    \let\MT@inh@prefix\@empty
  \else
    \MT@ifstreq{\MT@feat}{pr}{%
      \MT@ifstreq{#2}{l}{\def\MT@inh@prefix@{{1000}{0}}\@firstoftwo}{%
        \MT@ifstreq{#2}{r}{\def\MT@inh@prefix@{{0}{1000}}\@firstoftwo}{%
          \MT@ifstreq{#2}{lr}{\def\MT@inh@prefix@{{500}{500}}\@firstoftwo}{%
            \MT@warning@nl{`#2' is not a valid prefix in inheritance list%
              \MessageBreak\MT@listname. Ignoring it}%
            \@secondoftwo}}}%
      {\def\@tempa{#3}%
       \def\MT@inh@prefix{#2}%
       \@gobble}%
      {\@firstofone}%
    }{\@firstofone}%
   {\let\MT@char\m@ne
    \let\MT@temp\@gobble
   }%
  \fi
  \MT@temp
}
\MT@gdef@n{MT@pr@c@U/euroitc///}{euroitc}
\MT@gdef@n{MT@pr@c@U/euroitcs///}{euroitc}
\MT@gdef@n{MT@pr@c@U/euroitc//it/}{euroitci}
\MT@gdef@n{MT@pr@c@U/euroitcs//it/}{euroitci}
\MT@gdef@n{MT@pr@c@euroitc}{E={100,50}}
\MT@gdef@n{MT@pr@c@euroitci}{E={100,}}
\def\MT@permute{%
  \let\MT@cnt@encoding\@ne
  \MT@permute@
  \MT@map@tlist@n{{encoding}{family}{series}{shape}}\MT@permute@reset
  \MT@glet\MT@tempsize\@undefined
}
\def\MT@permute@{%
  \let\MT@cnt@family\@ne
  \MT@permute@@
  \MT@increment\MT@cnt@encoding
  \MT@ifdefined@n@T{MT@tempencoding\MT@cnt@encoding}%
    \MT@permute@
}
\def\MT@permute@@{%
  \let\MT@cnt@series\@ne
  \MT@permute@@@
  \MT@increment\MT@cnt@family
  \MT@ifdefined@n@T{MT@tempfamily\MT@cnt@family}%
    \MT@permute@@
}
\def\MT@permute@@@{%
  \let\MT@cnt@shape\@ne
  \MT@permute@@@@
  \MT@increment\MT@cnt@series
  \MT@ifdefined@n@T{MT@tempseries\MT@cnt@series}%
    \MT@permute@@@
}
\def\MT@permute@@@@{%
  \MT@permute@@@@@
  \MT@increment\MT@cnt@shape
  \MT@ifdefined@n@T{MT@tempshape\MT@cnt@shape}%
    \MT@permute@@@@
}
\def\MT@permute@@@@@{%
  \MT@permute@define{encoding}%
  \ifMT@document
    \ifx\MT@tempencoding\@empty \else
      \MT@ifdefined@n@TF{T@\MT@tempencoding}\relax
        {\expandafter\expandafter\expandafter\@gobble}%
    \fi
  \fi
  \MT@permute@@@@@@
}
\def\MT@permute@@@@@@{%
  \MT@permute@define{family}%
  \MT@permute@define{series}%
  \MT@permute@define{shape}%
  \edef\@tempa{\MT@tempencoding
              /\MT@tempfamily
              /\MT@tempseries
              /\MT@tempshape
              /\MT@ifdefined@c@T\MT@tempsize *}%
  \MT@ifstreq\@tempa{////}\relax{%
    \ifx\MT@tempencoding\@empty
      \MT@warning{%
        You have to specify an encoding for\MessageBreak
        \@nameuse{MT@abbr@\MT@permutelist} list
        `\@nameuse{MT@\MT@permutelist @name}'.\MessageBreak
        Ignoring it}%
    \else
      \MT@ifdefined@c@TF\MT@tempsize{%
        \MT@ifdefined@n@T{MT@\MT@permutelist @\@tempa\MT@extra@context @sizes}{%
          \MT@map@tlist@c\MT@tempsize\MT@check@rlist
        }%
        \MT@exp@cs\MT@xaddb
          {MT@\MT@permutelist @\@tempa\MT@extra@context @sizes}%
          \MT@tempsize
      }{%
        \MT@ifdefined@n@T{MT@\MT@permutelist @\@tempa\MT@extra@context}{%
          \MT@ifstreq{\csname MT@\MT@permutelist @\@tempa\MT@extra@context\endcsname}%
             {\csname MT@\MT@permutelist @\csname MT@\MT@permutelist @name\endcsname @load\endcsname}%
              \relax{%
            \MT@warning{\@nameuse{MT@abbr@\MT@permutelist} list
              `\@nameuse{MT@\MT@permutelist @name}' will\MessageBreak override
              list `\@nameuse{MT@\MT@permutelist @\@tempa\MT@extra@context}'
              for \MessageBreak font `\@tempa'}%
          }%
        }%
      }%
      \MT@xdef@n{MT@\MT@permutelist @\@tempa\MT@extra@context}%
          {\csname MT@\MT@permutelist @name\endcsname}%
    \fi
  }%
}
\def\MT@permute@define#1{%
  \@tempcnta=\csname MT@cnt@#1\endcsname\relax
  \MT@ifdefined@n@TF{MT@temp#1\the\@tempcnta}%
    {\MT@edef@n{MT@temp#1}{\csname MT@temp#1\the\@tempcnta\endcsname}}%
    {\MT@let@nc{MT@temp#1}\@empty}%
}
\def\MT@permute@reset#1{%
  \@tempcnta=\@ne
  \MT@loop
    \MT@let@nc{MT@temp#1\the\@tempcnta}\@undefined
    \advance\@tempcnta\@ne
    \MT@ifdefined@n@TF{MT@temp#1\the\@tempcnta}%
      \iftrue
      \iffalse
  \MT@repeat
}
\def\MT@check@rlist#1{\expandafter\MT@check@rlist@ #1}
\def\MT@check@rlist@#1#2#3{%
  \def\@tempb{#1}%
  \def\@tempc{#2}%
  \MT@if@false
  \MT@exp@cs\MT@map@tlist@c
    {MT@\MT@permutelist @\@tempa\MT@extra@context @sizes}%
    \MT@check@range
}
\def\MT@check@range#1{\expandafter\MT@check@range@ #1}
\def\MT@check@range@#1#2#3{%
  \MT@ifdim{#2}=\m@ne{%
    \MT@ifdim\@tempc=\m@ne{%
      \MT@ifdim\@tempb={#1}\MT@if@true\relax
    }{%
      \MT@ifdim\@tempb>{#1}\relax{%
        \MT@ifdim\@tempc>{#1}{%
          \MT@if@true
          \edef\@tempb{#1 (with range: \@tempb\space to \@tempc)}%
        }\relax
      }%
    }%
  }{%
    \MT@ifdim\@tempc=\m@ne{%
      \MT@ifdim\@tempb<{#2}{%
        \MT@ifdim\@tempb<{#1}\relax\MT@if@true
      }\relax
    }{%
      \MT@ifdim\@tempb<{#2}{%
        \MT@ifdim\@tempc>{#1}{%
          \MT@if@true
          \edef\@tempb{#1 to #2 (with range: \@tempb\space to \@tempc)}%
        }\relax
      }\relax
    }%
  }%
  \ifMT@if@
    \MT@ifstreq{#3}%
        {\csname MT@\MT@permutelist @\csname MT@\MT@permutelist @name\endcsname @load\endcsname}%
        \relax{%
      \MT@warning{\@nameuse{MT@abbr@\MT@permutelist} list
        `\@nameuse{MT@\MT@permutelist @name}' will override\MessageBreak
        list `#3' for font \@tempa,\MessageBreak size \@tempb}%
    }%
    \expandafter\MT@tlist@break
  \fi
}
\newif\ifMT@opt@expansion
\newif\ifMT@opt@auto
\newif\ifMT@opt@DVI
\def\MT@optwarn@admissible#1#2{%
  \MT@warning@nl{`#1' is not an admissible value for option\MessageBreak
                 `#2'. Assuming `false'}%
}
\def\MT@optwarn@nan#1#2{%
  \MT@warning@nl{Value `#1' for option `#2' is not a\MessageBreak number.
                 Using default value of \number\@nameuse{MT@#2@default}}%
}
\def\MT@opt@def@set#1{%
  \MT@ifdefined@n@TF{MT@\@tempb @set@@\MT@val}{%
    \MT@xdef@n{MT@\@tempb @setname}{\MT@val}%
  }{%
    \MT@xdef@n{MT@\@tempb @setname}{\@nameuse{MT@default@\@tempb @set}}%
    \MT@warning@nl{The #1 set `\MT@val' is undeclared.\MessageBreak
                   Using set `\@nameuse{MT@\@tempb @setname}' instead}%
  }%
}
\MT@map@clist@n{protrusion,expansion}{%
  \define@key{MT}{#1}[true]{%
    \csname MT@opt@#1true\endcsname
    \MT@map@clist@n{##1}{%
      \KV@@sp@def\MT@val{####1}%
      \MT@ifempty\MT@val\relax{%
        \csname MT@#1true\endcsname
        \edef\@tempb{\csname MT@rbba@#1\endcsname}%
        \MT@ifstreq\MT@val{true}\relax
        {%
          \MT@ifstreq\MT@val{false}{%
            \csname MT@#1false\endcsname
          }{%
            \MT@ifstreq\MT@val{compatibility}{%
              \MT@let@nc{MT@\@tempb @level}\@ne
            }{%
              \MT@ifstreq\MT@val{nocompatibility}{%
                \MT@let@nc{MT@\@tempb @level}\tw@
              }{%
                \MT@opt@def@set{#1}%
              }%
            }%
          }%
        }%
      }%
    }%
  }%
}
\define@key{MT}{activate}[true]{%
   \setkeys{MT}{protrusion={#1}}%
   \setkeys{MT}{expansion={#1}}%
}
\MT@map@clist@n{spacing,kerning,tracking}{%
  \define@key{MT}{#1}[true]{%
    \MT@map@clist@n{##1}{%
      \KV@@sp@def\MT@val{####1}%
      \MT@ifempty\MT@val\relax{%
        \csname MT@#1true\endcsname
        \MT@ifstreq\MT@val{true}\relax
        {%
          \MT@ifstreq\MT@val{false}{%
            \csname MT@#1false\endcsname
          }{%
            \edef\@tempb{\csname MT@rbba@#1\endcsname}%
            \MT@opt@def@set{#1}%
          }%
        }%
      }%
    }%
  }%
}
\def\MT@def@bool@opt#1#2{%
  \define@key{MT}{#1}[true]{%
    \def\@tempa{##1}%
    \MT@ifstreq\@tempa{true}\relax{%
      \MT@ifstreq\@tempa{false}\relax{%
        \MT@optwarn@admissible{##1}{#1}%
        \def\@tempa{false}%
      }%
    }%
    #2%
  }%
}
\MT@map@clist@n{draft,selected,babel}{%
  \MT@def@bool@opt{#1}{\csname MT@#1\@tempa\endcsname}}
\MT@def@bool@opt{auto}{\csname MT@auto\@tempa\endcsname \MT@opt@autotrue}
\MT@def@bool@opt{defersetup}{%
  \csname if\@tempa\endcsname \else
    \AtEndOfPackage{%
      \MT@setup@
      \let\MT@setup@\@empty
      \let\MT@addto@setup\@firstofone
    }%
  \fi
}
\MT@def@bool@opt{final}{}
\define@key{MT}{disable}[true]{%
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{true}\MT@disabletrue{%
    \MT@ifstreq\@tempa{ifdraft}{\ifMT@draft\MT@disabletrue\fi}{%
      \MT@ifstreq\@tempa{false}\relax{%
        \MT@optwarn@admissible{#1}{disable}%
      }%
    }%
  }%
}
\define@key{MT}{verbose}[true]{%
  \let\MT@vinfo\MT@info@nl
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{true}\relax{%
    \MT@ifstreq\@tempa{errors}{%
      \let\MT@warning   \MT@warn@err
      \let\MT@warning@nl\MT@warn@err
    }{%
      \let\MT@vinfo\@gobble
      \MT@ifstreq\@tempa{silent}{%
        \let\MT@warning   \MT@info
        \let\MT@warning@nl\MT@info@nl
      }{%
        \MT@ifstreq\@tempa{false}\relax{\MT@optwarn@admissible{#1}{verbose}}%
      }%
    }%
  }%
}
\MT@map@clist@n{%
    stretch,shrink,step,%
    letterspace}{%
  \define@key{MT}{#1}[\csname MT@#1@default\endcsname]{%
    \def\@tempa{##1 }%
    \MT@ifint\@tempa
      {\MT@edef@n{MT@#1}{\@tempa}}%
      {\MT@optwarn@nan{##1}{#1}}%
  }%
}
\define@key{MT}{factor}[\MT@factor@default]{%
  \def\@tempa{#1 }%
  \MT@ifint\@tempa
    {\edef\MT@pr@factor{\@tempa}}
    {\MT@optwarn@nan{#1}{factor}}%
}
\define@key{MT}{unit}[character]{%
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{character}\relax{%
    \MT@ifdimen\@tempa
      {\let\MT@pr@unit\@tempa}%
      {\MT@warning@nl{`\@tempa' is not a dimension.\MessageBreak
              Ignoring it and setting values relative to\MessageBreak
              character widths}}%
  }%
}
\let\MT@patches@list\relax
\let\MT@nopatches@list\@empty
\define@key{MT}{patch}[all]{%
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{all}
    \relax
    {\MT@ifstreq\@tempa{none}
      {\let\MT@patches@list\@empty}
      {\def\MT@patches@list{#1}}}%
}
\define@key{MT}{nopatch}[all]{%
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{all}
    {\let\MT@nopatches@list\relax}
    {\MT@ifstreq\@tempa{none}
      \relax
      {\def\MT@nopatches@list{#1}}}%
}
\MT@addto@setup{%
  \ifx\MT@patches@list\relax
    \let\MT@patches@list\MT@patches@def
  \fi
  \ifx\MT@nopatches@list\@empty\else
    \ifx\MT@nopatches@list\relax
      \let\MT@nopatches@list\MT@patches@def
    \fi
    \MT@map@clist@c\MT@nopatches@list{%
      \MT@rem@from@clist{#1}\MT@patches@list}%
  \fi
  \ifx\MT@patches@list\@empty\else
^^X    \MT@map@clist@c\MT@patches@list{\MT@apply@patch{#1}}%
^^Q    \MT@warning@nl{Patches require the etex extensions. Ignoring them}%
  \fi
}
\def\MT@get@MT@version#1 #2 #3\@nil{#1 #2}
\edef\MT@version{\expandafter\expandafter\expandafter\MT@get@MT@version
  \csname ver@\MT@MT.sty\endcsname\@nil}
\def\MT@check@MT@version#1#2{%
  \MT@ifstreq\MT@version{#1}{}{%
    \MT@warning@nl{Mismatching file versions:\MessageBreak
       \MT@MT.sty provides:\MessageBreak`\MT@version',\MessageBreak
       whereas #2 provides:\MessageBreak`#1'.\MessageBreak
       Please fix your installation}}}
\input{\MT@MT-\MT@engine tex.def}
\edef\@tempa{\expandafter\expandafter\expandafter\MT@get@MT@version
  \csname ver@\MT@MT-\MT@engine tex.def\endcsname\@nil}
\MT@check@MT@version\@tempa{\MT@MT-\MT@engine tex.def}
\MT@protrusiontrue
\define@key{MT}{config}[]{\relax}
\def\MT@temp#1config=#2,#3\@nil{%
  \MT@ifempty{#2}%
    {\def\MT@config@file{\MT@MT.cfg}}%
    {\def\MT@config@file{#2.cfg}}%
}
\expandafter\expandafter\expandafter\MT@temp
  \csname opt@\@currname.\@currext\endcsname,config=,\@nil
\IfFileExists{\MT@config@file}{%
  \MT@info@nl{Loading configuration file \MT@config@file}%
  \MT@begin@catcodes
    \let\MT@begin@catcodes\relax
    \let\MT@end@catcodes\relax
    \let\MT@curr@file\MT@config@file
    \input{\MT@config@file}%
  \endgroup
}{\MT@warning@nl{%
    Could not find configuration file `\MT@config@file'!\MessageBreak
    This will almost certainly cause undesired results.\MessageBreak
    Please fix your installation}%
}
\def\MT@check@active@set#1{%
  \MT@ifdefined@n@TF{MT@#1@setname}{%
    \MT@info@nl{Using \@nameuse{MT@abbr@#1} set `\@nameuse{MT@#1@setname}'}%
  }{%
    \MT@ifdefined@n@TF{MT@default@#1@set}{%
      \MT@glet@nn{MT@#1@setname}{MT@default@#1@set}%
      \MT@info@nl{Using default \@nameuse{MT@abbr@#1} set `\@nameuse{MT@#1@setname}'}%
    }{%
      \MT@gdef@n{MT@#1@setname}{@}%
      \MT@warning@nl{No \@nameuse{MT@abbr@#1} set chosen, no default set declared.
                     \MessageBreak Using empty set}%
    }%
  }%
}
\MT@ifdefined@c@T\MicroType@Hook{\MT@error{%
  Command \@backslashchar MicroType@Hook is deprecated.\MessageBreak
  Use \@backslashchar Microtype@Hook instead}
  {You might want to inform the font package authors.}\MicroType@Hook}
\MT@ifdefined@c@T\Microtype@Hook\Microtype@Hook
\DeclareRobustCommand\microtypesetup{\setkeys{MT}}
\MT@addto@setup{\DeclareRobustCommand\microtypesetup[1]{\setkeys{MTX}{#1}\selectfont}}
\let\MT@saved@setupfont\MT@setupfont
\define@key{MTX}{deactivate}[]{%
  \MT@info{Deactivate `\MT@MT' package}%
  \let\MT@setupfont\relax
}
\define@key{MTX}{reactivate}[]{%
  \MT@info{Reactivate `\MT@MT' package}%
  \let\MT@setupfont\MT@saved@setupfont
}
\define@key{MTX}{patch}[all]{%
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{all}
    {\let\@tempa\MT@patches@def}
    {\MT@ifstreq\@tempa{none}
      {\let\@tempa\@empty}
      \relax}%
  \ifx\@tempa\@empty\else
^^X    \MT@map@clist@c\@tempa{\MT@apply@patch{##1}}%
^^Q    \MT@warning@nl{Patches require the etex extensions. Ignoring them}%
  \fi
}
\define@key{MTX}{nopatch}[all]{%
  \def\@tempa{#1}%
  \MT@ifstreq\@tempa{all}
    {\let\@tempa\MT@patches@def}
    {\MT@ifstreq\@tempa{none}
      {\let\@tempa\@empty}
      \relax}%
  \ifx\@tempa\@empty\else
^^X    \MT@map@clist@c\@tempa{\MT@undo@patch{##1}}%
  \fi
}
\def\MT@ProcessOptionsWithKV#1{%
  \let\@tempc\relax
  \let\MT@temp\@empty
    \MT@map@clist@c\@classoptionslist{%
      \def\CurrentOption{##1}%
      \MT@ifdefined@n@T{KV@#1@\expandafter\MT@getkey\CurrentOption=\@nil}{%
        \edef\MT@temp{\MT@temp,\CurrentOption,}%
        \@expandtwoargs\@removeelement\CurrentOption
          \@unusedoptionlist\@unusedoptionlist
      }%
    }%
    \edef\MT@temp{\noexpand\setkeys{#1}%
                    {\MT@temp\@ptionlist{\@currname.\@currext}}}%
  \MT@temp
  \MT@clear@options
}
\def\MT@getkey#1=#2\@nil{#1}
\MT@ProcessOptionsWithKV{MT}
\MT@addto@setup{%
\ifMT@disable
  \MT@warning@nl{The `disable' option is in effect.\MessageBreak
                 Disabling all micro-typographic extensions.\MessageBreak
                 This might lead to different line and page breaks}%
  \let\MT@setupfont\relax
  \renewcommand*\LoadMicrotypeFile[1]{}%
  \renewcommand*\microtypesetup[1]{}%
  \renewcommand*\microtypecontext[1]{}%
  \renewcommand*\lsstyle{}%
\else
  \MT@setup@PDF
  \MT@setup@copies
  \MT@map@tlist@c\MT@font@sets\MT@fix@font@set
  \MT@setup@protrusion
  \MT@setup@expansion
  \MT@setup@tracking
  \MT@setup@warntracking
  \MT@setup@spacing
  \MT@setup@kerning
  \MT@setup@noligatures
}
\MT@addto@setup{%
  \ifx\MT@active@features\@empty \else
    \edef\MT@active@features{\expandafter\@gobble\MT@active@features}%
  \fi
  \MT@documenttrue
}
\def\MT@set@babel@context#1{%
  \MT@ifdefined@n@TF{MT@babel@#1}{%
    \MT@vinfo{*** Changing to language context `#1'\MessageBreak\on@line}%
    \expandafter\MT@exp@one@n\expandafter\microtypecontext
      \csname MT@babel@#1\endcsname
  }{%
    \microtypecontext{protrusion=,expansion=,spacing=,kerning=}%
  }%
}
\@ifpackageloaded{babel}{
  \def\MT@shorthandoff#1#2{%
    \MT@info@nl{Switching off #1 babel's active characters (#2)}%
    \shorthandoff{#2}}
}{
  \def\MT@shorthandoff#1#2{%
    \MT@error{You must load `babel' before `\MT@MT'}
             {Otherwise, `\MT@MT' cannot switch off #1 babel's\MessageBreak
              active characters.}}
}
\MT@addto@setup{%
  \ifMT@babel
    \@ifpackageloaded{babel}{%
      \MT@info@nl{Redefining babel's language switching commands}%
      \let\MT@orig@select@language\select@language
      \def\select@language#1{%
        \MT@orig@select@language{#1}%
        \MT@set@babel@context{#1}%
      }%
      \let\MT@orig@foreign@language\foreign@language
      \def\foreign@language#1{%
        \MT@orig@foreign@language{#1}%
        \MT@set@babel@context{#1}%
      }%
      \ifMT@kerning
        \MT@if@false
        \MT@with@babel@and@T{french}  \MT@if@true
        \MT@with@babel@and@T{frenchb} \MT@if@true
        \MT@with@babel@and@T{francais}\MT@if@true
        \MT@with@babel@and@T{canadien}\MT@if@true
        \MT@with@babel@and@T{acadian} \MT@if@true
        \ifMT@if@\MT@shorthandoff{French}{:;!?}\fi
        \MT@if@false
        \MT@with@babel@and@T{turkish} \MT@if@true
        \ifMT@if@\MT@shorthandoff{Turkish}{:!=}\fi
      \fi
      \MT@set@babel@context\languagename
    }{%
      \@ifpackageloaded{polyglossia}{%
        \MT@info@nl{Registering with polyglossia's language switching hook}%
        \gappto\polyglossia@language@switched{%
          \MT@set@babel@context{\languagename}%
        }%
        \MT@set@babel@context\languagename
      }{%
        \MT@warning@nl{%
          You did not load the babel or the polyglossia package.\MessageBreak
          The `babel' option won't have any effect}%
      }%
    }%
  \fi
}
\MT@addto@setup{\fi
  \selectfont}
\edef\MT@curr@file{\jobname.tex}
\AtBeginDocument{\MT@setup@ \MT@glet\MT@setup@\@empty}
\MT@ifdefined@c@T\MT@setup@spacing@check
  {\AtBeginDocument{\MT@setup@spacing@check}}
\MT@restore@catcodes
\endinput
%%
%% End of file `microtype.sty'.