bkyk8rc3zvpnsf5inmcqq4n3k98cv6hj-my-site-hyper-literate-git.test.suzanne.soy-0.0.1

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

acmart.cls (96943B)


      1 %%
      2 %% This is file `acmart.cls',
      3 %% generated with the docstrip utility.
      4 %%
      5 %% The original source files were:
      6 %%
      7 %% acmart.dtx  (with options: `class')
      8 %% 
      9 %% IMPORTANT NOTICE:
     10 %% 
     11 %% For the copyright see the source file.
     12 %% 
     13 %% Any modified versions of this file must be renamed
     14 %% with new filenames distinct from acmart.cls.
     15 %% 
     16 %% For distribution of the original source see the terms
     17 %% for copying and modification in the file acmart.dtx.
     18 %% 
     19 %% This generated file may be distributed as long as the
     20 %% original source files, as listed above, are part of the
     21 %% same distribution. (The sources need not necessarily be
     22 %% in the same archive or directory.)
     23 %% \CharacterTable
     24 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
     25 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
     26 %%   Digits        \0\1\2\3\4\5\6\7\8\9
     27 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
     28 %%   Dollar        \$     Percent       \%     Ampersand     \&
     29 %%   Acute accent  \'     Left paren    \(     Right paren   \)
     30 %%   Asterisk      \*     Plus          \+     Comma         \,
     31 %%   Minus         \-     Point         \.     Solidus       \/
     32 %%   Colon         \:     Semicolon     \;     Less than     \<
     33 %%   Equals        \=     Greater than  \>     Question mark \?
     34 %%   Commercial at \@     Left bracket  \[     Backslash     \\
     35 %%   Right bracket \]     Circumflex    \^     Underscore    \_
     36 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
     37 %%   Right brace   \}     Tilde         \~}
     38 \NeedsTeXFormat{LaTeX2e}
     39 \ProvidesClass{acmart}
     40 [2020/02/22 v1.70 Typesetting articles for the Association for Computing Machinery]
     41 \def\@classname{acmart}
     42 \InputIfFileExists{acmart-preload-hook.tex}{%
     43   \ClassWarning{\@classname}{%
     44     I am loading acmart-preload-hook.tex. You are fully responsible
     45     for any problems from now on.}}{}
     46 \RequirePackage{xkeyval}
     47 \RequirePackage{xstring}
     48 \define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
     49   manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
     50   sigplan, sigchi, sigchi-a}[manuscript]{}{%
     51   \ClassError{\@classname}{The option format must be manuscript,
     52     acmsmall, acmlarge, acmtog, sigconf, siggraph,
     53     sigplan, sigchi or sigchi-a}}
     54 \def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
     55 \@DeclareACMFormat{manuscript}
     56 \@DeclareACMFormat{acmsmall}
     57 \@DeclareACMFormat{acmlarge}
     58 \@DeclareACMFormat{acmtog}
     59 \@DeclareACMFormat{sigconf}
     60 \@DeclareACMFormat{siggraph}
     61 \@DeclareACMFormat{sigplan}
     62 \@DeclareACMFormat{sigchi}
     63 \@DeclareACMFormat{sigchi-a}
     64 \ExecuteOptionsX{format}
     65 \define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
     66   \if@ACM@screen
     67     \PackageInfo{\@classname}{Using screen mode}%
     68   \else
     69     \PackageInfo{\@classname}{Not using screen mode}%
     70   \fi}{\PackageError{\@classname}{The option screen can be either true or
     71     false}}
     72 \ExecuteOptionsX{screen=false}
     73 \define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{%
     74   \if@ACM@urlbreakonhyphens
     75     \PackageInfo{\@classname}{Using breaking urls on hyphens}%
     76   \else
     77     \PackageInfo{\@classname}{Not breaking urls on hyphens}%
     78   \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
     79     false}}
     80 \ExecuteOptionsX{urlbreakonhyphens=true}
     81 \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
     82   \if@ACM@acmthm
     83     \PackageInfo{\@classname}{Requiring acmthm}%
     84   \else
     85     \PackageInfo{\@classname}{Suppressing acmthm}%
     86   \fi}{\PackageError{\@classname}{The option acmthm can be either true or
     87     false}}
     88 \ExecuteOptionsX{acmthm=true}
     89 \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
     90   \if@ACM@review
     91     \PackageInfo{\@classname}{Using review mode}%
     92     \AtBeginDocument{\@ACM@printfoliostrue}%
     93   \else
     94     \PackageInfo{\@classname}{Not using review mode}%
     95   \fi}{\PackageError{\@classname}{The option review can be either true or
     96     false}}
     97 \ExecuteOptionsX{review=false}
     98 \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
     99   \if@ACM@authorversion
    100     \PackageInfo{\@classname}{Using authorversion mode}%
    101   \else
    102     \PackageInfo{\@classname}{Not using authorversion mode}%
    103   \fi}{\PackageError{\@classname}{The option authorversion can be either true or
    104     false}}
    105 \ExecuteOptionsX{authorversion=false}
    106 \define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{%
    107   \if@ACM@nonacm
    108     \PackageInfo{\@classname}{Using nonacm mode}%
    109     \AtBeginDocument{\@ACM@printacmreffalse}%
    110     % in 'nonacm' mode we disable the "ACM Reference Format"
    111     % printing by default, but this can be re-enabled by the
    112     % user using \settopmatter{printacmref=true}
    113   \else
    114     \PackageInfo{\@classname}{Not using nonacm mode}%
    115   \fi}{\PackageError{\@classname}{The option nonacm can be either true or
    116     false}}
    117 \ExecuteOptionsX{nonacm=false}
    118 \define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{%
    119   \PackageError{\@classname}{The option balance can be either true or
    120     false}}
    121 \ExecuteOptionsX{balance}
    122 \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
    123   \if@ACM@natbib
    124     \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
    125   \else
    126     \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
    127   \fi}{\PackageError{\@classname}{The option natbib can be either true or
    128     false}}
    129 \ExecuteOptionsX{natbib=true}
    130 \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
    131   \if@ACM@anonymous
    132     \PackageInfo{\@classname}{Using anonymous mode}%
    133   \else
    134     \PackageInfo{\@classname}{Not using anonymous mode}%
    135   \fi}{\PackageError{\@classname}{The option anonymous can be either true or
    136     false}}
    137 \ExecuteOptionsX{anonymous=false}
    138 \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
    139   \if@ACM@timestamp
    140     \PackageInfo{\@classname}{Using timestamp mode}%
    141   \else
    142     \PackageInfo{\@classname}{Not using timestamp mode}%
    143   \fi}{\PackageError{\@classname}{The option timestamp can be either true or
    144     false}}
    145 \ExecuteOptionsX{timestamp=false}
    146 \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
    147   \if@ACM@authordraft
    148     \PackageInfo{\@classname}{Using authordraft mode}%
    149     \@ACM@timestamptrue
    150     \@ACM@reviewtrue
    151   \else
    152     \PackageInfo{\@classname}{Not using authordraft mode}%
    153   \fi}{\PackageError{\@classname}{The option authordraft can be either true or
    154     false}}
    155 \ExecuteOptionsX{authordraft=false}
    156 \def\ACM@fontsize{}
    157 \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
    158 \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
    159 \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
    160 \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
    161 \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
    162 \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
    163 \ProcessOptionsX
    164 \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
    165 \newif\if@ACM@manuscript
    166 \newif\if@ACM@journal
    167 \newif\if@ACM@journal@bibstrip
    168 \newif\if@ACM@sigchiamode
    169 \ifnum\ACM@format@nr=5\relax % siggraph
    170   \ClassWarning{\@classname}{The format siggraph is now obsolete.
    171     I am switching to sigconf.}
    172   \setkeys{acmart.cls}{format=sigconf}
    173 \fi
    174 \ifnum\ACM@format@nr=0\relax
    175   \@ACM@manuscripttrue
    176 \else
    177   \@ACM@manuscriptfalse
    178 \fi
    179 \@ACM@sigchiamodefalse
    180 \ifcase\ACM@format@nr
    181 \relax % manuscript
    182   \@ACM@journaltrue
    183 \or % acmsmall
    184   \@ACM@journaltrue
    185 \or % acmlarge
    186   \@ACM@journaltrue
    187 \or % acmtog
    188   \@ACM@journaltrue
    189 \or % sigconf
    190   \@ACM@journalfalse
    191 \or % siggraph
    192   \@ACM@journalfalse
    193  \or % sigplan
    194   \@ACM@journalfalse
    195  \or % sigchi
    196   \@ACM@journalfalse
    197 \or % sigchi-a
    198   \@ACM@journalfalse
    199   \@ACM@sigchiamodetrue
    200 \fi
    201 \if@ACM@journal
    202  \@ACM@journal@bibstriptrue
    203 \else
    204  \@ACM@journal@bibstripfalse
    205 \fi
    206 \ifx\ACM@fontsize\@empty
    207   \ifcase\ACM@format@nr
    208   \relax % manuscript
    209     \def\ACM@fontsize{9pt}%
    210   \or % acmsmall
    211     \def\ACM@fontsize{10pt}%
    212   \or % acmlarge
    213     \def\ACM@fontsize{10pt}%
    214   \or % acmtog
    215     \def\ACM@fontsize{9pt}%
    216   \or % sigconf
    217     \def\ACM@fontsize{9pt}%
    218   \or % siggraph
    219     \def\ACM@fontsize{9pt}%
    220    \or % sigplan
    221     \def\ACM@fontsize{10pt}%
    222    \or % sigchi
    223     \def\ACM@fontsize{10pt}%
    224   \or % sigchi-a
    225     \def\ACM@fontsize{10pt}%
    226   \fi
    227 \fi
    228 \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
    229 \LoadClass[\ACM@fontsize, reqno]{amsart}
    230 \RequirePackage{microtype}
    231 \RequirePackage{etoolbox}
    232 \RequirePackage{booktabs}
    233 \RequirePackage{refcount}
    234 \RequirePackage{totpages}
    235 \RequirePackage{environ}
    236 \if@ACM@manuscript
    237 \RequirePackage{setspace}
    238 \onehalfspacing
    239 \fi
    240 \RequirePackage{textcase}
    241 \if@ACM@natbib
    242   \RequirePackage{natbib}
    243   \renewcommand{\bibsection}{%
    244      \section*{\refname}%
    245      \phantomsection\addcontentsline{toc}{section}{\refname}%
    246   }
    247   \renewcommand{\bibfont}{\bibliofont}
    248   \renewcommand\setcitestyle[1]{
    249   \@for\@tempa:=#1\do
    250   {\def\@tempb{round}\ifx\@tempa\@tempb
    251      \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
    252    \def\@tempb{square}\ifx\@tempa\@tempb
    253      \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
    254    \def\@tempb{angle}\ifx\@tempa\@tempb
    255      \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
    256    \def\@tempb{curly}\ifx\@tempa\@tempb
    257      \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
    258    \def\@tempb{semicolon}\ifx\@tempa\@tempb
    259      \renewcommand\NAT@sep{;}\fi
    260    \def\@tempb{colon}\ifx\@tempa\@tempb
    261      \renewcommand\NAT@sep{;}\fi
    262    \def\@tempb{comma}\ifx\@tempa\@tempb
    263      \renewcommand\NAT@sep{,}\fi
    264    \def\@tempb{authoryear}\ifx\@tempa\@tempb
    265      \NAT@numbersfalse\fi
    266    \def\@tempb{numbers}\ifx\@tempa\@tempb
    267      \NAT@numberstrue\NAT@superfalse\fi
    268    \def\@tempb{super}\ifx\@tempa\@tempb
    269      \NAT@numberstrue\NAT@supertrue\fi
    270    \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
    271      \let\bibstyle=\@gobble\fi
    272    \def\@tempb{bibstyle}\ifx\@tempa\@tempb
    273      \let\bibstyle=\@citestyle\fi
    274    \def\@tempb{sort}\ifx\@tempa\@tempb
    275      \def\NAT@sort{\@ne}\fi
    276    \def\@tempb{nosort}\ifx\@tempa\@tempb
    277      \def\NAT@sort{\z@}\fi
    278    \def\@tempb{compress}\ifx\@tempa\@tempb
    279      \def\NAT@cmprs{\@ne}\fi
    280    \def\@tempb{nocompress}\ifx\@tempa\@tempb
    281      \def\NAT@cmprs{\z@}\fi
    282    \def\@tempb{sort&compress}\ifx\@tempa\@tempb
    283      \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
    284    \def\@tempb{mcite}\ifx\@tempa\@tempb
    285      \let\NAT@merge\@ne\fi
    286    \def\@tempb{merge}\ifx\@tempa\@tempb
    287      \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
    288    \def\@tempb{elide}\ifx\@tempa\@tempb
    289      \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
    290    \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
    291      \NAT@longnamestrue\fi
    292    \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
    293      \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
    294    \expandafter\NAT@find@eq\@tempa=\relax\@nil
    295    \if\@tempc\relax\else
    296      \expandafter\NAT@rem@eq\@tempc
    297      \def\@tempb{open}\ifx\@tempa\@tempb
    298       \xdef\NAT@open{\@tempc}\fi
    299      \def\@tempb{close}\ifx\@tempa\@tempb
    300       \xdef\NAT@close{\@tempc}\fi
    301      \def\@tempb{aysep}\ifx\@tempa\@tempb
    302       \xdef\NAT@aysep{\@tempc}\fi
    303      \def\@tempb{yysep}\ifx\@tempa\@tempb
    304       \xdef\NAT@yrsep{\@tempc}\fi
    305      \def\@tempb{notesep}\ifx\@tempa\@tempb
    306       \xdef\NAT@cmt{\@tempc}\fi
    307      \def\@tempb{citesep}\ifx\@tempa\@tempb
    308       \xdef\NAT@sep{\@tempc}\fi
    309    \fi
    310   }%
    311   \NAT@@setcites
    312   }
    313   \renewcommand\citestyle[1]{%
    314     \ifcsname bibstyle@#1\endcsname%
    315     \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
    316     \else%
    317     \@latex@error{Undefined `#1' citestyle}%
    318     \fi
    319   }%
    320 \fi
    321 \newcommand{\bibstyle@acmauthoryear}{%
    322   \setcitestyle{%
    323     authoryear,%
    324     open={[},close={]},citesep={;},%
    325     aysep={},yysep={,},%
    326     notesep={, }}}
    327 \newcommand{\bibstyle@acmnumeric}{%
    328   \setcitestyle{%
    329     numbers,sort&compress,%
    330     open={[},close={]},citesep={,},%
    331     notesep={, }}}
    332 \if@ACM@natbib
    333 \citestyle{acmnumeric}
    334 \fi
    335 \def\@startsection#1#2#3#4#5#6{%
    336   \if@noskipsec \leavevmode \fi
    337   \par
    338   \@tempskipa #4\relax
    339   \@afterindenttrue
    340   \ifdim \@tempskipa <\z@
    341     \@tempskipa -\@tempskipa \@afterindentfalse
    342   \fi
    343   \if@nobreak
    344     \everypar{}%
    345   \else
    346     \addpenalty\@secpenalty\addvspace\@tempskipa
    347   \fi
    348   \@ifstar
    349     {\@ssect{#3}{#4}{#5}{#6}}%
    350     {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
    351 \def\@sect#1#2#3#4#5#6[#7]#8{%
    352   \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
    353   \ifnum #2>\c@secnumdepth
    354     \let\@svsec\@empty
    355   \else
    356     \refstepcounter{#1}%
    357     \protected@edef\@svsec{\@seccntformat{#1}\relax}%
    358   \fi
    359   \@tempskipa #5\relax
    360   \ifdim \@tempskipa>\z@
    361     \begingroup
    362       #6{%
    363         \@hangfrom{\hskip #3\relax\@svsec}%
    364           \interlinepenalty \@M #8\@@par}%
    365     \endgroup
    366     \csname #1mark\endcsname{#7}%
    367     \ifnum #2>\c@secnumdepth \else
    368         \@tochangmeasure{\csname the#1\endcsname}%
    369     \fi
    370     \addcontentsline{toc}{#1}{%
    371       \ifnum #2>\c@secnumdepth \else
    372         \protect\numberline{\csname the#1\endcsname}%
    373       \fi
    374       #7}%
    375   \else
    376     \def\@svsechd{%
    377       #6{\hskip #3\relax
    378       \@svsec #8}%
    379       \csname #1mark\endcsname{#7}%
    380       \ifnum #2>\c@secnumdepth \else
    381         \@tochangmeasure{\csname the#1\endcsname\space}%
    382       \fi
    383       \addcontentsline{toc}{#1}{%
    384         \ifnum #2>\c@secnumdepth \else
    385           \protect\numberline{\csname the#1\endcsname}%
    386         \fi
    387         #7}}%
    388   \fi
    389   \@xsect{#5}}
    390 \def\@xsect#1{%
    391   \@tempskipa #1\relax
    392   \ifdim \@tempskipa>\z@
    393     \par \nobreak
    394     \vskip \@tempskipa
    395     \@afterheading
    396   \else
    397     \@nobreakfalse
    398     \global\@noskipsectrue
    399     \everypar{%
    400       \if@noskipsec
    401         \global\@noskipsecfalse
    402        {\setbox\z@\lastbox}%
    403         \clubpenalty\@M
    404         \begingroup \@svsechd \endgroup
    405         \unskip
    406         \@tempskipa #1\relax
    407         \hskip -\@tempskipa
    408       \else
    409         \clubpenalty \@clubpenalty
    410         \everypar{}%
    411       \fi}%
    412   \fi
    413   \ignorespaces}
    414 \def\@seccntformat#1{\csname the#1\endcsname\quad}
    415 \def\@ssect#1#2#3#4#5{%
    416   \@tempskipa #3\relax
    417   \ifdim \@tempskipa>\z@
    418     \begingroup
    419       #4{%
    420         \@hangfrom{\hskip #1}%
    421           \interlinepenalty \@M #5\@@par}%
    422     \endgroup
    423   \else
    424     \def\@svsechd{#4{\hskip #1\relax #5}}%
    425   \fi
    426   \@xsect{#3}}
    427 \def\@starttoc#1#2{\begingroup\makeatletter
    428   \setTrue{#1}%
    429   \par\removelastskip\vskip\z@skip
    430   \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
    431     {.5\linespacing}{\centering\contentsnamefont}{#2}%
    432   \@input{\jobname.#1}%
    433   \if@filesw
    434     \@xp\newwrite\csname tf@#1\endcsname
    435     \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
    436   \fi
    437   \global\@nobreakfalse \endgroup
    438   \addvspace{32\p@\@plus14\p@}%
    439 }
    440 \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
    441 \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
    442 \def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}}
    443 \def\@makefntext{\noindent\@makefnmark}
    444 \if@ACM@sigchiamode
    445 \long\def\@footnotetext#1{\marginpar{%
    446     \reset@font\small
    447     \interlinepenalty\interfootnotelinepenalty
    448     \protected@edef\@currentlabel{%
    449        \csname p@footnote\endcsname\@thefnmark
    450     }%
    451     \color@begingroup
    452       \@makefntext{%
    453         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    454     \color@endgroup}}%
    455 \fi
    456 \long\def\@mpfootnotetext#1{%
    457   \global\setbox\@mpfootins\vbox{%
    458     \unvbox\@mpfootins
    459     \reset@font\footnotesize
    460     \hsize\columnwidth
    461     \@parboxrestore
    462     \protected@edef\@currentlabel
    463          {\csname p@mpfootnote\endcsname\@thefnmark}%
    464     \color@begingroup\centering
    465       \@makefntext{%
    466         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    467     \color@endgroup}}
    468 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
    469 \let\@footnotemark@nolink\@footnotemark
    470 \let\@footnotetext@nolink\@footnotetext
    471 \RequirePackage[bookmarksnumbered,unicode]{hyperref}
    472 \pdfstringdefDisableCommands{%
    473   \def\addtocounter#1#2{}%
    474   \def\unskip{}%
    475   \def\textbullet{- }%
    476   \def\textrightarrow{ -> }%
    477   \def\footnotemark{}%
    478 }
    479 \urlstyle{rm}
    480 \ifcase\ACM@format@nr
    481 \relax % manuscript
    482 \or % acmsmall
    483 \or % acmlarge
    484 \or % acmtog
    485 \or % sigconf
    486 \or % siggraph
    487 \or % sigplan
    488   \urlstyle{sf}
    489 \or % sigchi
    490 \or % sigchi-a
    491   \urlstyle{sf}
    492 \fi
    493 \AtEndPreamble{%
    494   \if@ACM@urlbreakonhyphens
    495     \def\do@url@hyp{\do\-}%
    496   \fi
    497   \if@ACM@screen
    498     \hypersetup{colorlinks,
    499       linkcolor=ACMPurple,
    500       citecolor=ACMPurple,
    501       urlcolor=ACMDarkBlue,
    502       filecolor=ACMDarkBlue}
    503     \else
    504     \hypersetup{hidelinks}
    505   \fi
    506   \hypersetup{pdflang={en},
    507     pdfdisplaydoctitle}}
    508 \if@ACM@natbib
    509   \let\citeN\cite
    510   \let\cite\citep
    511   \let\citeANP\citeauthor
    512   \let\citeNN\citeyearpar
    513   \let\citeyearNP\citeyear
    514   \let\citeNP\citealt
    515   \DeclareRobustCommand\citeA
    516      {\begingroup\NAT@swafalse
    517        \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
    518   \providecommand\newblock{}%
    519 \else
    520   \AtBeginDocument{%
    521     \let\shortcite\cite%
    522     \providecommand\citename[1]{#1}}
    523 \fi
    524 \newcommand\shortcite[2][]{%
    525   \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}
    526 \def\bibliographystyle#1{%
    527   \ifx\@begindocumenthook\@undefined\else
    528     \expandafter\AtBeginDocument
    529   \fi
    530     {\if@filesw
    531        \immediate\write\@auxout{\string\bibstyle{#1}}%
    532      \fi}}
    533 \RequirePackage{graphicx}
    534 \RequirePackage[prologue]{xcolor}
    535 \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
    536 \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
    537 \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
    538 \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
    539 \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
    540 \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
    541 \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
    542 \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
    543 \if@ACM@authordraft
    544   \RequirePackage{draftwatermark}
    545   \SetWatermarkFontSize{0.5in}
    546   \SetWatermarkColor[gray]{.9}
    547   \SetWatermarkText{\parbox{12em}{\centering
    548       Unpublished working draft.\\
    549       Not for distribution.}}
    550 \fi
    551 \RequirePackage{geometry}
    552 \ifcase\ACM@format@nr
    553 \relax % manuscript
    554    \geometry{letterpaper,head=13pt,
    555    marginparwidth=6pc,heightrounded}%
    556 \or % acmsmall
    557    \geometry{twoside=true,
    558      includeheadfoot, head=13pt, foot=2pc,
    559      paperwidth=6.75in, paperheight=10in,
    560      top=58pt, bottom=44pt, inner=46pt, outer=46pt,
    561      marginparwidth=2pc,heightrounded
    562    }%
    563 \or % acmlarge
    564    \geometry{twoside=true, head=13pt, foot=2pc,
    565      paperwidth=8.5in, paperheight=11in,
    566      includeheadfoot,
    567      top=78pt, bottom=114pt, inner=81pt, outer=81pt,
    568      marginparwidth=4pc,heightrounded
    569      }%
    570 \or % acmtog
    571    \geometry{twoside=true, head=13pt, foot=2pc,
    572      paperwidth=8.5in, paperheight=11in,
    573      includeheadfoot, columnsep=24pt,
    574      top=52pt, bottom=75pt, inner=52pt, outer=52pt,
    575      marginparwidth=2pc,heightrounded
    576      }%
    577 \or % sigconf
    578    \geometry{twoside=true, head=13pt,
    579      paperwidth=8.5in, paperheight=11in,
    580      includeheadfoot, columnsep=2pc,
    581      top=57pt, bottom=73pt, inner=54pt, outer=54pt,
    582      marginparwidth=2pc,heightrounded
    583      }%
    584 \or % siggraph
    585    \geometry{twoside=true, head=13pt,
    586      paperwidth=8.5in, paperheight=11in,
    587      includeheadfoot, columnsep=2pc,
    588      top=57pt, bottom=73pt, inner=54pt, outer=54pt,
    589      marginparwidth=2pc,heightrounded
    590      }%
    591 \or % sigplan
    592    \geometry{twoside=true, head=13pt,
    593      paperwidth=8.5in, paperheight=11in,
    594      includeheadfoot=false, columnsep=2pc,
    595      top=1in, bottom=1in, inner=0.75in, outer=0.75in,
    596      marginparwidth=2pc,heightrounded
    597      }%
    598 \or % sigchi
    599    \geometry{twoside=true, head=13pt,
    600      paperwidth=8.5in, paperheight=11in,
    601      includeheadfoot, columnsep=2pc,
    602      top=66pt, bottom=73pt, inner=54pt, outer=54pt,
    603      marginparwidth=2pc,heightrounded
    604      }%
    605 \or % sigchi-a
    606    \geometry{twoside=false, head=13pt,
    607      paperwidth=11in, paperheight=8.5in,
    608      includeheadfoot, marginparsep=72pt,
    609      marginparwidth=170pt, columnsep=20pt,
    610      top=72pt, bottom=72pt, left=314pt, right=72pt
    611      }%
    612      \@mparswitchfalse
    613      \reversemarginpar
    614 \fi
    615 \setlength\parindent{10\p@}
    616 \setlength\parskip{\z@}
    617 \ifcase\ACM@format@nr
    618 \relax % manuscript
    619 \or % acmsmall
    620 \or % acmlarge
    621 \or % acmtog
    622   \setlength\parindent{9\p@}%
    623 \or % sigconf
    624 \or % siggraph
    625 \or % sigplan
    626 \or % sigchi
    627 \or % sigchi-a
    628 \fi
    629 \setlength\normalparindent{\parindent}
    630 \def\copyrightpermissionfootnoterule{\kern-3\p@
    631   \hrule \@width \columnwidth \kern 2.6\p@}
    632 \RequirePackage{manyfoot}
    633 \SelectFootnoteRule[2]{copyrightpermission}
    634 \DeclareNewFootnote{authorsaddresses}
    635 \SelectFootnoteRule[2]{copyrightpermission}
    636 \DeclareNewFootnote{copyrightpermission}
    637 \def\footnoterule{\kern-3\p@
    638   \hrule \@width 4pc \kern 2.6\p@}
    639 \def\endminipage{%
    640     \par
    641     \unskip
    642     \ifvoid\@mpfootins\else
    643       \vskip\skip\@mpfootins
    644       \normalcolor
    645       \unvbox\@mpfootins
    646     \fi
    647     \@minipagefalse
    648   \color@endgroup
    649   \egroup
    650   \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
    651 \def\@textbottom{\vskip \z@ \@plus 1pt}
    652 \let\@texttop\relax
    653 \ifcase\ACM@format@nr
    654 \relax % manuscript
    655 \or % acmsmall
    656 \or % acmlarge
    657 \or % acmtog
    658   \flushbottom
    659 \or % sigconf
    660   \flushbottom
    661 \or % siggraph
    662   \flushbottom
    663 \or % sigplan
    664   \flushbottom
    665 \or % sigchi
    666   \flushbottom
    667 \or % sigchi-a
    668 \fi
    669 \RequirePackage{iftex}
    670 \ifPDFTeX
    671 \input{glyphtounicode}
    672 \pdfglyphtounicode{f_f}{FB00}
    673 \pdfglyphtounicode{f_f_i}{FB03}
    674 \pdfglyphtounicode{f_f_l}{FB04}
    675 \pdfglyphtounicode{f_i}{FB01}
    676 \pdfglyphtounicode{t_t}{0074 0074}
    677 \pdfglyphtounicode{f_t}{0066 0074}
    678 \pdfglyphtounicode{T_h}{0054 0068}
    679 \pdfgentounicode=1
    680 \fi
    681 \RequirePackage{cmap}
    682 \newif\if@ACM@newfonts
    683 \@ACM@newfontstrue
    684 \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
    685     have the libertine package installed.  Please upgrade your
    686     TeX}\@ACM@newfontsfalse}
    687 \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
    688     have the zi4 package installed.  Please upgrade your
    689     TeX}\@ACM@newfontsfalse}
    690 \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
    691     have the newtxmath package installed.  Please upgrade your
    692     TeX}\@ACM@newfontsfalse}
    693 \if@ACM@newfonts
    694   \RequirePackage[T1]{fontenc}
    695 \ifxetex
    696   \RequirePackage[tt=false]{libertine}
    697   \setmonofont{inconsolata}
    698 \else
    699   \RequirePackage[tt=false, type1=true]{libertine}
    700 \fi
    701 \RequirePackage[varqu]{zi4}
    702 \RequirePackage[libertine]{newtxmath}
    703 \fi
    704 \let\liningnums\@undefined
    705 \AtEndPreamble{%
    706   \DeclareTextFontCommand{\liningnums}{\libertineLF}}
    707 \if@ACM@sigchiamode
    708   \renewcommand{\familydefault}{\sfdefault}
    709 \fi
    710 \newif\if@Description@present
    711 \@Description@presenttrue
    712 \newif\if@undescribed@images
    713 \@undescribed@imagesfalse
    714 \newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces}
    715 \AtEndDocument{\if@undescribed@images
    716   \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi}
    717 \AtBeginEnvironment{figure}{\@Description@presentfalse
    718   \let\@vspace\@vspace@orig
    719   \let\@vspacer\@vspacer@orig}
    720 \AtBeginEnvironment{figure*}{\@Description@presentfalse
    721   \let\@vspace\@vspace@orig
    722   \let\@vspacer\@vspacer@orig}
    723 \AtEndEnvironment{figure}{\if@Description@present\else
    724   \global\@undescribed@imagestrue
    725   \ClassWarning{\@classname}{A possible image without description}\fi}
    726 \AtEndEnvironment{figure*}{\if@Description@present\else
    727   \global\@undescribed@imagestrue
    728   \ClassWarning{\@classname}{A possible image without description}\fi}
    729 \AtBeginEnvironment{table}{\let\@vspace\@vspace@orig
    730   \let\@vspacer\@vspacer@orig}
    731 \AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig
    732   \let\@vspacer\@vspacer@orig}
    733 \AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig
    734   \let\@vspacer\@vspacer@orig}
    735 \AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig
    736   \let\@vspacer\@vspacer@orig}
    737 \AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig
    738   \let\@vspacer\@vspacer@orig}
    739 \AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig
    740   \let\@vspacer\@vspacer@orig}
    741 
    742 \RequirePackage{caption, float}
    743 \captionsetup[table]{position=top}
    744 \if@ACM@journal
    745   \captionsetup{labelfont={sf, small},
    746     textfont={sf, small}, margin=\z@}
    747   \captionsetup[figure]{name={Fig.}}
    748 \else
    749   \captionsetup{labelfont={bf},
    750     textfont={bf}, labelsep=colon, margin=\z@}
    751   \ifcase\ACM@format@nr
    752   \relax % manuscript
    753   \or % acmsmall
    754   \or % acmlarge
    755   \or % acmtog
    756   \or % sigconf
    757   \or % siggraph
    758     \captionsetup{textfont={it}}
    759   \or % sigplan
    760     \captionsetup{labelfont={bf},
    761       textfont={normalfont}, labelsep=period, margin=\z@}
    762   \or % sigchi
    763     \captionsetup[figure]{labelfont={bf, small},
    764       textfont={bf, small}}
    765     \captionsetup[table]{labelfont={bf, small},
    766       textfont={bf, small}}
    767   \or % sigchi-a
    768     \captionsetup[figure]{labelfont={bf, small},
    769       textfont={bf, small}}
    770     \captionsetup[table]{labelfont={bf, small},
    771       textfont={bf, small}}
    772   \fi
    773 \fi
    774 \newfloat{sidebar}{}{sbar}
    775 \floatname{sidebar}{Sidebar}
    776 \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
    777 \long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig
    778   \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}%
    779   \marginpar{\small#1}\egroup}
    780 \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
    781 \long\def\@marginfigure#1{\bgroup
    782   \let\@vspace\@vspace@orig
    783   \let\@vspacer\@vspacer@orig
    784   \captionsetup{type=figure}%
    785   \marginpar{\@Description@presentfalse\centering
    786     \small#1\if@Description@present\else
    787       \global\@undescribed@imagestrue
    788       \ClassWarning{\@classname}{A possible image without description}
    789       \fi}%
    790   \egroup}
    791 \newenvironment{margintable}{\Collect@Body\@margintable}{}
    792 \long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig
    793   \let\@vspacer\@vspacer@orig\captionsetup{type=table}%
    794   \marginpar{\centering\small#1}\egroup}
    795 \newdimen\fulltextwidth
    796 \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
    797 \if@ACM@sigchiamode
    798 \def\@dblfloat{\bgroup\let\@vspace\@vspace@orig
    799   \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth
    800   \let\@endfloatbox\@endwidefloatbox
    801   \def\@fpsadddefault{\def\@fps{tp}}%
    802   \@float}
    803 \fi
    804 \if@ACM@sigchiamode
    805 \def\end@dblfloat{%
    806     \end@float\egroup}
    807 \fi
    808 \def\@endwidefloatbox{%
    809   \par\vskip\z@skip
    810   \@minipagefalse
    811   \outer@nobreak
    812   \egroup
    813   \color@endbox
    814   \global\setbox\@currbox=\vbox{\moveleft
    815     \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
    816   \wd\@currbox=\textwidth
    817 }
    818 \ifcase\ACM@format@nr
    819 \relax % manuscript
    820 \or % acmsmall
    821 \or % acmlarge
    822 \or % acmtog
    823 \or % sigconf
    824 \or % siggraph
    825 \or % sigplan
    826 \def\labelenumi{\theenumi.}
    827 \def\labelenumii{\theenumii.}
    828 \def\labelenumiii{\theenumiii.}
    829 \def\labelenumiv{\theenumiv.}
    830 \or % sigchi
    831 \or % sigchi-a
    832 \fi
    833 \newdimen\@ACM@labelwidth
    834 \AtBeginDocument{%
    835   \setlength\labelsep{4pt}
    836   \setlength{\@ACM@labelwidth}{6.5pt}
    837 
    838   %% First-level list: when beginning after the first line of an
    839   %% indented paragraph or ending before an indented paragraph, labels
    840   %% should not hang to the left of the preceding/following text.
    841   \setlength\leftmargini{\z@}
    842   \addtolength\leftmargini{\parindent}
    843   \addtolength\leftmargini{2\labelsep}
    844   \addtolength\leftmargini{\@ACM@labelwidth}
    845 
    846   %% Second-level and higher lists.
    847   \setlength\leftmarginii{\z@}
    848   \addtolength\leftmarginii{0.5\labelsep}
    849   \addtolength\leftmarginii{\@ACM@labelwidth}
    850   \setlength\leftmarginiii{\leftmarginii}
    851   \setlength\leftmarginiv{\leftmarginiii}
    852   \setlength\leftmarginv{\leftmarginiv}
    853   \setlength\leftmarginvi{\leftmarginv}
    854   \@listi}
    855 \newskip\listisep
    856 \listisep\smallskipamount
    857 \def\@listI{\leftmargin\leftmargini
    858   \labelwidth\leftmargini \advance\labelwidth-\labelsep
    859   \listparindent\z@
    860   \topsep\listisep}
    861 \let\@listi\@listI
    862 \def\@listii{\leftmargin\leftmarginii
    863   \labelwidth\leftmarginii \advance\labelwidth-\labelsep
    864   \topsep\z@skip}
    865 \def\@listiii{\leftmargin\leftmarginiii
    866   \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
    867 \def\@listiv{\leftmargin\leftmarginiv
    868   \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
    869 \def\@listv{\leftmargin\leftmarginv
    870   \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
    871 \def\@listvi{\leftmargin\leftmarginvi
    872   \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
    873 \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
    874 \renewenvironment{description}{\list{}{%
    875     \labelwidth\@ACM@labelwidth
    876     \let\makelabel\descriptionlabel}%
    877 }{
    878   \endlist
    879 }
    880 \let\enddescription=\endlist % for efficiency
    881 \newif\if@ACM@maketitle@typeset
    882 \@ACM@maketitle@typesetfalse
    883 \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
    884   CIE,%
    885   CSUR,%
    886   DGOV,%
    887   DTRAP,%
    888   HEALTH,%
    889   IMWUT,%
    890   JACM,%
    891   JDIQ,%
    892   JEA,%
    893   JERIC,%
    894   JETC,%
    895   JOCCH,%
    896   PACMCGIT,%
    897   PACMHCI,%
    898   PACMPL,%
    899   POMACS,%
    900   TAAS,%
    901   TACCESS,%
    902   TACO,%
    903   TALG,%
    904   TALLIP,%
    905   TAP,%
    906   TCPS,%
    907   TDS,%
    908   TEAC,%
    909   TECS,%
    910   TELO,%
    911   THRI,%
    912   TIIS,%
    913   TIOT,%
    914   TISSEC,%
    915   TIST,%
    916   TKDD,%
    917   TMIS,%
    918   TOCE,%
    919   TOCHI,%
    920   TOCL,%
    921   TOCS,%
    922   TOCT,%
    923   TODAES,%
    924   TODS,%
    925   TOG,%
    926   TOIS,%
    927   TOIT,%
    928   TOMACS,%
    929   TOMM,%
    930   TOMPECS,%
    931   TOMS,%
    932   TOPC,%
    933   TOPS,%
    934   TOPLAS,%
    935   TOS,%
    936   TOSEM,%
    937   TOSN,%
    938   TQC,%
    939   TRETS,%
    940   TSAS,%
    941   TSC,%
    942   TSLP,%
    943   TWEB,%
    944   FACMP%
    945 }{%
    946 \ifcase\@journalCode@nr
    947 \relax % CIE
    948   \def\@journalName{ACM Computers in Entertainment}%
    949   \def\@journalNameShort{ACM Comput. Entertain.}%
    950   \def\@permissionCodeOne{1544-3574}%
    951 \or % CSUR
    952   \def\@journalName{ACM Computing Surveys}%
    953   \def\@journalNameShort{ACM Comput. Surv.}%
    954   \def\@permissionCodeOne{0360-0300}%
    955 \or % DGOV
    956   \def\@journalName{Digital Government: Research and Practice}%
    957   \def\@journalNameShort{Digit. Gov. Res. Pract.}%
    958   \def\@permissionCodeOne{2639-0175}%
    959 \or % DTRAP
    960   \def\@journalName{Digital Threats: Research and Practice}%
    961   \def\@journalNameShort{Digit. Threat. Res. Pract.}%
    962   \def\@permissionCodeOne{2576-5337}%
    963 \or % HEALTH
    964   \def\@journalName{ACM Transactions on Computing for Healthcare}%
    965   \def\@journalNameShort{ACM Trans. Comput. Healthcare}%
    966   \def\@permissionCodeOne{2637-8051}%
    967 \or % IMWUT
    968   \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
    969     Wearable and Ubiquitous Technologies}%
    970   \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
    971   \def\@permissionCodeOne{2474-9567}%
    972   \@ACM@screentrue
    973   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
    974 \or % JACM
    975   \def\@journalName{Journal of the ACM}%
    976   \def\@journalNameShort{J. ACM}%
    977   \def\@permissionCodeOne{0004-5411}%
    978 \or % JDIQ
    979   \def\@journalName{ACM Journal of Data and Information Quality}%
    980   \def\@journalNameShort{ACM J. Data Inform. Quality}%
    981   \def\@permissionCodeOne{1936-1955}%
    982 \or % JEA
    983   \def\@journalName{ACM Journal of Experimental Algorithmics}%
    984   \def\@journalNameShort{ACM J. Exp. Algor.}%
    985   \def\@permissionCodeOne{1084-6654}%
    986 \or % JERIC
    987   \def\@journalName{ACM Journal of Educational Resources in Computing}%
    988   \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
    989   \def\@permissionCodeOne{1073-0516}%
    990 \or % JETC
    991   \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
    992   \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
    993   \def\@permissionCodeOne{1550-4832}%
    994 \or % JOCCH
    995   \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
    996   \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
    997 \or % PACMCGIT
    998   \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}%
    999   \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}%
   1000   \def\@permissionCodeOne{2577-6193}%
   1001   \@ACM@screentrue
   1002   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1003 \or % PACMHCI
   1004   \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
   1005   \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
   1006   \def\@permissionCodeOne{2573-0142}%
   1007   \@ACM@screentrue
   1008   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1009 \or % PACMPL
   1010   \def\@journalName{Proceedings of the ACM on Programming Languages}%
   1011   \def\@journalNameShort{Proc. ACM Program. Lang.}%
   1012   \def\@permissionCodeOne{2475-1421}%
   1013   \@ACM@screentrue
   1014   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1015 \or % POMACS
   1016   \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
   1017   \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
   1018   \def\@permissionCodeOne{2476-1249}%
   1019   \@ACM@screentrue
   1020   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1021 \or % TAAS
   1022   \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
   1023   \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
   1024   \def\@permissionCodeOne{1556-4665}%
   1025 \or % TACCESS
   1026   \def\@journalName{ACM Transactions on Accessible Computing}%
   1027   \def\@journalNameShort{ACM Trans. Access. Comput.}%
   1028   \def\@permissionCodeOne{1936-7228}%
   1029 \or % TACO
   1030   \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
   1031   \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
   1032 \or % TALG
   1033   \def\@journalName{ACM Transactions on Algorithms}%
   1034   \def\@journalNameShort{ACM Trans. Algor.}%
   1035   \def\@permissionCodeOne{1549-6325}%
   1036 \or % TALLIP
   1037   \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
   1038   \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
   1039   \def\@permissionCodeOne{2375-4699}%
   1040 \or % TAP
   1041   \def\@journalName{ACM Transactions on Applied Perception}%
   1042 \or % TCPS
   1043   \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
   1044 \or % TDS
   1045   \def\@journalName{ACM/IMS Transactions on Data Science}%
   1046   \def\@journalNameShort{ACM/IMS Trans. Data Sci.}%
   1047   \def\@permissionCodeOne{2577-3224}%
   1048 \or % TEAC
   1049   \def\@journalName{ACM Transactions on Economics and Computation}%
   1050 \or % TECS
   1051   \def\@journalName{ACM Transactions on Embedded Computing Systems}%
   1052   \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
   1053   \def\@permissionCodeOne{1539-9087}%
   1054 \or % TELO
   1055   \def\@journalName{ACM Transactions on Evolutionary Learning}%
   1056   \def\@journalNameShort{ACM Trans. Evol. Learn.}%
   1057   \def\@permissionCodeOne{2688-3007}%
   1058 \or % THRI
   1059   \def\@journalName{ACM Transactions on Human-Robot Interaction}%
   1060   \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
   1061   \def\@permissionCodeOne{2573-9522}%
   1062 \or % TIIS
   1063   \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
   1064   \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
   1065   \def\@permissionCodeOne{2160-6455}%
   1066 \or % TIOT
   1067   \def\@journalName{ACM Transactions on Internet of Things}%
   1068   \def\@journalNameShort{ACM Trans. Internet Things}%
   1069   \def\@permissionCodeOne{2577-6207}%
   1070 \or % TISSEC
   1071   \def\@journalName{ACM Transactions on Information and System Security}%
   1072   \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
   1073   \def\@permissionCodeOne{1094-9224}%
   1074 \or % TIST
   1075   \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
   1076   \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
   1077   \def\@permissionCodeOne{2157-6904}%
   1078 \or % TKDD
   1079   \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
   1080   \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
   1081   \def\@permissionCodeOne{1556-4681}%
   1082 \or % TMIS
   1083   \def\@journalName{ACM Transactions on Management Information Systems}%
   1084   \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
   1085   \def\@permissionCodeOne{2158-656X}%
   1086 \or % TOCE
   1087   \def\@journalName{ACM Transactions on Computing Education}%
   1088   \def\@journalNameShort{ACM Trans. Comput. Educ.}%
   1089   \def\@permissionCodeOne{1946-6226}%
   1090 \or % TOCHI
   1091   \def\@journalName{ACM Transactions on Computer-Human Interaction}%
   1092   \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
   1093   \def\@permissionCodeOne{1073-0516}%
   1094 \or % TOCL
   1095   \def\@journalName{ACM Transactions on Computational Logic}%
   1096   \def\@journalNameShort{ACM Trans. Comput. Logic}%
   1097   \def\@permissionCodeOne{1529-3785}%
   1098 \or % TOCS
   1099   \def\@journalName{ACM Transactions on Computer Systems}%
   1100   \def\@journalNameShort{ACM Trans. Comput. Syst.}%
   1101   \def\@permissionCodeOne{0734-2071}%
   1102 \or % TOCT
   1103   \def\@journalName{ACM Transactions on Computation Theory}%
   1104   \def\@journalNameShort{ACM Trans. Comput. Theory}%
   1105   \def\@permissionCodeOne{1942-3454}%
   1106 \or % TODAES
   1107   \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
   1108   \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
   1109   \def\@permissionCodeOne{1084-4309}%
   1110 \or % TODS
   1111   \def\@journalName{ACM Transactions on Database Systems}%
   1112   \def\@journalNameShort{ACM Trans. Datab. Syst.}%
   1113   \def\@permissionCodeOne{0362-5915}%
   1114 \or % TOG
   1115   \def\@journalName{ACM Transactions on Graphics}%
   1116   \def\@journalNameShort{ACM Trans. Graph.}%
   1117   \def\@permissionCodeOne{0730-0301}
   1118 \or % TOIS
   1119   \def\@journalName{ACM Transactions on Information Systems}%
   1120   \def\@permissionCodeOne{1046-8188}%
   1121 \or % TOIT
   1122   \def\@journalName{ACM Transactions on Internet Technology}%
   1123   \def\@journalNameShort{ACM Trans. Internet Technol.}%
   1124   \def\@permissionCodeOne{1533-5399}%
   1125 \or % TOMACS
   1126   \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
   1127   \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
   1128 \or % TOMM
   1129   \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
   1130   \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
   1131   \def\@permissionCodeOne{1551-6857}%
   1132   \def\@permissionCodeTwo{0100}%
   1133 \or % TOMPECS
   1134   \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
   1135   \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
   1136   \def\@permissionCodeOne{2376-3639}%
   1137 \or % TOMS
   1138   \def\@journalName{ACM Transactions on Mathematical Software}%
   1139   \def\@journalNameShort{ACM Trans. Math. Softw.}%
   1140   \def\@permissionCodeOne{0098-3500}%
   1141 \or % TOPC
   1142   \def\@journalName{ACM Transactions on Parallel Computing}%
   1143   \def\@journalNameShort{ACM Trans. Parallel Comput.}%
   1144   \def\@permissionCodeOne{1539-9087}%
   1145 \or % TOPS
   1146   \def\@journalName{ACM Transactions on Privacy and Security}%
   1147   \def\@journalNameShort{ACM Trans. Priv. Sec.}%
   1148   \def\@permissionCodeOne{2471-2566}%
   1149 \or % TOPLAS
   1150   \def\@journalName{ACM Transactions on Programming Languages and Systems}%
   1151   \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
   1152   \def\@permissionCodeOne{0164-0925}%
   1153 \or % TOS
   1154   \def\@journalName{ACM Transactions on Storage}%
   1155   \def\@journalNameShort{ACM Trans. Storage}%
   1156   \def\@permissionCodeOne{1553-3077}%
   1157 \or % TOSEM
   1158   \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
   1159   \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
   1160   \def\@permissionCodeOne{1049-331X}%
   1161 \or % TOSN
   1162   \def\@journalName{ACM Transactions on Sensor Networks}%
   1163   \def\@journalNameShort{ACM Trans. Sensor Netw.}%
   1164   \def\@permissionCodeOne{1550-4859}%
   1165 \or % TQC
   1166   \def\@journalName{ACM Transactions on Quantum Computing}%
   1167   \def\@journalNameShort{ACM Trans. Quantum Comput.}%
   1168   \def\@permissionCodeOne{2643-6817}%
   1169 \or % TRETS
   1170   \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
   1171   \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
   1172   \def\@permissionCodeOne{1936-7406}%
   1173 \or % TSAS
   1174   \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
   1175   \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
   1176   \def\@permissionCodeOne{2374-0353}%
   1177 \or % TSC
   1178   \def\@journalName{ACM Transactions on Social Computing}%
   1179   \def\@journalNameShort{ACM Trans. Soc. Comput.}%
   1180   \def\@permissionCodeOne{2469-7818}%
   1181 \or % TSLP
   1182   \def\@journalName{ACM Transactions on Speech and Language Processing}%
   1183   \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
   1184   \def\@permissionCodeOne{1550-4875}%
   1185 \or % TWEB
   1186   \def\@journalName{ACM Transactions on the Web}%
   1187   \def\@journalNameShort{ACM Trans. Web}%
   1188   \def\@permissionCodeOne{1559-1131}%
   1189 \else % FACMP, a dummy journal
   1190   \def\@journalName{Forthcoming ACM Publication}%
   1191   \def\@journalNameShort{ACM Forthcoming}%
   1192   \def\@permissionCodeOne{XXXX-XXXX}%
   1193 \fi
   1194 \ClassInfo{\@classname}{Using journal code \@journalCode}%
   1195 }{%
   1196   \ClassError{\@classname}{Incorrect journal #1}%
   1197 }%
   1198 \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}%
   1199   \global\@ACM@journal@bibstriptrue}
   1200 \def\@journalCode@nr{0}
   1201 \def\@journalName{}%
   1202 \def\@journalNameShort{\@journalName}%
   1203 \def\@permissionCodeOne{XXXX-XXXX}%
   1204 \def\@permissionCodeTwo{}%
   1205 \newcommand\acmConference[4][]{%
   1206   \gdef\acmConference@shortname{#1}%
   1207   \gdef\acmConference@name{#2}%
   1208   \gdef\acmConference@date{#3}%
   1209   \gdef\acmConference@venue{#4}%
   1210   \ifx\acmConference@shortname\@empty
   1211     \gdef\acmConference@shortname{#2}%
   1212   \fi
   1213   \global\@ACM@journal@bibstripfalse
   1214 }
   1215 \if@ACM@journal\else
   1216 \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
   1217   DC, USA}%
   1218 \fi
   1219 \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
   1220 \acmBooktitle{Proceedings of \acmConference@name
   1221        \ifx\acmConference@name\acmConference@shortname\else
   1222          \ (\acmConference@shortname)\fi}
   1223 \def\@editorsAbbrev{(Ed.)}
   1224 \def\@acmEditors{}
   1225 \def\editor#1{\ifx\@acmEditors\@empty
   1226     \gdef\@acmEditors{#1}%
   1227   \else
   1228     \gdef\@editorsAbbrev{(Eds.)}%
   1229     \g@addto@macro\@acmEditors{\and#1}%
   1230 \fi}
   1231 \def\subtitle#1{\def\@subtitle{#1}}
   1232 \subtitle{}
   1233 \newcount\num@authorgroups
   1234 \num@authorgroups=0\relax
   1235 \newcount\num@authors
   1236 \num@authors=0\relax
   1237 \newif\if@insideauthorgroup
   1238 \@insideauthorgroupfalse
   1239 \renewcommand\author[2][]{%
   1240   \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
   1241       authors in the same \string\author\space macro!}}{}%
   1242   \global\advance\num@authors by 1\relax
   1243   \if@insideauthorgroup\else
   1244     \global\advance\num@authorgroups by 1\relax
   1245     \global\@insideauthorgrouptrue
   1246   \fi
   1247   \ifx\addresses\@empty
   1248     \if@ACM@anonymous
   1249       \gdef\addresses{\@author{Anonymous Author(s)%
   1250         \ifx\@acmSubmissionID\@empty\else\\Submission Id:
   1251           \@acmSubmissionID\fi}}%
   1252       \gdef\authors{Anonymous Author(s)}%
   1253     \else
   1254       \gdef\addresses{\@author{#2}}%
   1255       \gdef\authors{#2}%
   1256     \fi
   1257   \else
   1258     \if@ACM@anonymous\else
   1259       \g@addto@macro\addresses{\and\@author{#2}}%
   1260       \g@addto@macro\authors{\and#2}%
   1261     \fi
   1262   \fi
   1263   \if@ACM@anonymous
   1264     \ifx\shortauthors\@empty
   1265       \gdef\shortauthors{Anon.
   1266         \ifx\@acmSubmissionID\@empty\else Submission Id:
   1267         \@acmSubmissionID\fi}%
   1268     \fi
   1269   \else
   1270     \def\@tempa{#1}%
   1271     \ifx\@tempa\@empty
   1272       \ifx\shortauthors\@empty
   1273         \gdef\shortauthors{#2}%
   1274       \else
   1275         \g@addto@macro\shortauthors{\and#2}%
   1276       \fi
   1277     \else
   1278       \ifx\shortauthors\@empty
   1279         \gdef\shortauthors{#1}%
   1280       \else
   1281         \g@addto@macro\shortauthors{\and#1}%
   1282       \fi
   1283     \fi
   1284   \fi}
   1285 \newcommand{\affiliation}[2][]{%
   1286   \global\@insideauthorgroupfalse
   1287   \if@ACM@anonymous\else
   1288     \g@addto@macro\addresses{\affiliation{#1}{#2}}%
   1289   \fi}
   1290 \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
   1291 [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
   1292 \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
   1293 \def\@additionalaffiliation#1{\bgroup
   1294   \def\position##1{\ignorespaces}%
   1295   \def\institution##1{##1\ignorespaces}%
   1296   \def\department{\@ifnextchar[{\@department}{\@department[]}}%
   1297   \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
   1298   \let\streetaddress\position
   1299   \let\city\position
   1300   \let\state\position
   1301   \let\postcode\position
   1302   \let\country\position
   1303   Also with #1\unskip.\egroup}
   1304 \renewcommand{\email}[2][]{%
   1305   \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
   1306       addresses in the same \string\email\space macro!}}{}%
   1307   \if@ACM@anonymous\else
   1308     \g@addto@macro\addresses{\email{#1}{#2}}%
   1309   \fi}
   1310 \def\orcid#1{\unskip\ignorespaces}
   1311 \def\authorsaddresses#1{\def\@authorsaddresses{#1}}
   1312 \authorsaddresses{\@mkauthorsaddresses}
   1313 \def\@titlenotes{}
   1314 \def\titlenote#1{%
   1315   \g@addto@macro\@title{\footnotemark}%
   1316   \if@ACM@anonymous
   1317     \g@addto@macro\@titlenotes{%
   1318       \stepcounter{footnote}\footnotetext{Title note}}%
   1319   \else
   1320     \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
   1321   \fi}
   1322 \def\@subtitlenotes{}
   1323 \def\subtitlenote#1{%
   1324   \g@addto@macro\@subtitle{\footnotemark}%
   1325   \if@ACM@anonymous
   1326     \g@addto@macro\@subtitlenotes{%
   1327       \stepcounter{footnote}\footnotetext{Subtitle note}}%
   1328   \else
   1329     \g@addto@macro\@subtitlenotes{%
   1330       \stepcounter{footnote}\footnotetext{#1}}%
   1331   \fi}
   1332 \def\@authornotes{}
   1333 \def\authornote#1{%
   1334   \if@ACM@anonymous\else
   1335     \g@addto@macro\addresses{\@authornotemark}%
   1336     \g@addto@macro\@authornotes{%
   1337       \stepcounter{footnote}\footnotetext{#1}}%
   1338   \fi}
   1339 \newcommand\authornotemark[1][\relax]{%
   1340   \ifx#1\relax\relax\relax
   1341   \g@addto@macro\addresses{\@authornotemark}%
   1342   \else
   1343   \g@addto@macro\addresses{\@@authornotemark{#1}}%
   1344   \fi}
   1345 \def\acmVolume#1{\def\@acmVolume{#1}}
   1346 \acmVolume{1}
   1347 \def\acmNumber#1{\def\@acmNumber{#1}}
   1348 \acmNumber{1}
   1349 \def\acmArticle#1{\def\@acmArticle{#1}}
   1350 \acmArticle{}
   1351 \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
   1352 \acmArticleSeq{\@acmArticle}
   1353 \def\acmYear#1{\def\@acmYear{#1}}
   1354 \acmYear{\the\year}
   1355 \def\acmMonth#1{\def\@acmMonth{#1}}
   1356 \acmMonth{\the\month}
   1357 \def\@acmPubDate{\ifcase\@acmMonth\or
   1358   January\or February\or March\or April\or May\or June\or
   1359   July\or August\or September\or October\or November\or
   1360   December\fi~\@acmYear}
   1361 \def\acmPrice#1{\def\@acmPrice{#1}}
   1362 \acmPrice{15.00}
   1363 \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
   1364 \acmSubmissionID{}
   1365 \def\acmISBN#1{\def\@acmISBN{#1}}
   1366 \acmISBN{978-x-xxxx-xxxx-x/YY/MM}
   1367 \def\acmDOI#1{\def\@acmDOI{#1}}
   1368 \acmDOI{10.1145/nnnnnnn.nnnnnnn}
   1369 \newif\if@ACM@badge
   1370 \@ACM@badgefalse
   1371 \newlength\@ACM@badge@width
   1372 \setlength\@ACM@badge@width{5pc}
   1373 \newlength\@ACM@title@width
   1374 \newlength\@ACM@badge@skip
   1375 \setlength\@ACM@badge@skip{1pc}
   1376 \newcommand\acmBadgeR[2][]{\@ACM@badgetrue
   1377   \def\@acmBadgeR@url{#1}%
   1378   \def\@acmBadgeR@image{#2}}
   1379 \def\@acmBadgeR@url{}
   1380 \def\@acmBadgeR@image{}
   1381 \newcommand\acmBadgeL[2][]{\@ACM@badgetrue
   1382   \def\@acmBadgeL@url{#1}%
   1383   \def\@acmBadgeL@image{#2}}
   1384 \def\@acmBadgeL@url{}
   1385 \def\@acmBadgeL@image{}
   1386 \def\startPage#1{\def\@startPage{#1}}
   1387 \startPage{}
   1388 \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
   1389     obsolete.  I am going to ignore it}}
   1390 \def\keywords#1{\def\@keywords{#1}}
   1391 \let\@keywords\@empty
   1392 \AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty
   1393   \ifnum\getrefnumber{TotPages}>2\relax
   1394   \ClassWarningNoLine{\@classname}{ACM keywords are mandatory
   1395     for papers over two pages}%
   1396   \fi\fi\fi}
   1397 \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
   1398 \long\def\@saveabstract#1{\if@ACM@maketitle@typeset
   1399   \ClassError{\@classname}{Abstract must be defined before maketitle
   1400     command. Please move it!}\fi
   1401   \long\gdef\@abstract{#1}}
   1402 \@saveabstract{}
   1403 \long\def\@lempty{}
   1404 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
   1405   \if@ACM@printccs
   1406     \ClassInfo{\@classname}{Printing CCS}%
   1407   \else
   1408     \ClassInfo{\@classname}{Suppressing CCS}%
   1409   \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
   1410 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
   1411   \if@ACM@printacmref
   1412     \ClassInfo{\@classname}{Printing bibformat}%
   1413   \else
   1414     \ClassInfo{\@classname}{Suppressing bibformat}%
   1415   \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
   1416 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else
   1417   \ifnum\getrefnumber{TotPages}>1\relax
   1418   \ClassWarningNoLine{\@classname}{ACM reference format is mandatory
   1419     for papers over one page}%
   1420   \fi\fi\fi}
   1421 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
   1422   \if@ACM@printfolios
   1423     \ClassInfo{\@classname}{Printing folios}%
   1424   \else
   1425     \ClassInfo{\@classname}{Suppressing folios}%
   1426   \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
   1427 \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
   1428   \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
   1429       #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
   1430       numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
   1431 \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
   1432 \settopmatter{printccs=true, printacmref=true}
   1433 \if@ACM@manuscript
   1434   \settopmatter{printfolios=true}
   1435 \else
   1436   \if@ACM@journal
   1437     \settopmatter{printfolios=true}
   1438   \else
   1439     \settopmatter{printfolios=false}
   1440   \fi
   1441 \fi
   1442 \settopmatter{authorsperrow=0}
   1443 \def\@received{}
   1444 \newcommand\received[2][]{\def\@tempa{#1}%
   1445   \ifx\@tempa\@empty
   1446     \ifx\@received\@empty
   1447       \gdef\@received{Received #2}%
   1448     \else
   1449       \g@addto@macro{\@received}{; revised #2}%
   1450     \fi
   1451   \else
   1452     \ifx\@received\@empty
   1453       \gdef\@received{#1 #2}%
   1454     \else
   1455       \g@addto@macro{\@received}{; #1 #2}%
   1456     \fi
   1457   \fi}
   1458 \AtEndDocument{%
   1459   \ifx\@received\@empty\else
   1460     \par\bigskip\noindent\small\normalfont\@received\par
   1461   \fi}
   1462 \RequirePackage{comment}
   1463 \excludecomment{CCSXML}
   1464 \let\@concepts\@empty
   1465 \newcounter{@concepts}
   1466 \newcommand\ccsdesc[2][100]{%
   1467   \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
   1468 \def\textrightarrow{$\rightarrow$}
   1469 \def\ccsdesc@parse#1~#2~#3~{%
   1470   \stepcounter{@concepts}%
   1471   \expandafter\ifx\csname CCS@General@#2\endcsname\relax
   1472     \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
   1473       \textbf{#2}}%
   1474     \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
   1475     \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
   1476   \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
   1477     \csname CCS@Punctuation@#2\endcsname
   1478     \csname CCS@Specific@#2\endcsname}%
   1479   \fi
   1480   \ifx#3\relax\relax\else
   1481     \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
   1482       \textrightarrow\ }%
   1483     \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
   1484      \addtocounter{@concepts}{-1}%
   1485      \ifnum#1>499\textbf{#3}\else
   1486      \ifnum#1>299\textit{#3}\else
   1487      #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}%
   1488   \fi
   1489 \ccsdesc@parse@finish}
   1490 \AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax
   1491   \ifnum\getrefnumber{TotPages}>2\relax
   1492   \ClassWarningNoLine{\@classname}{CCS concepts are mandatory
   1493     for papers over two pages}%
   1494   \fi\fi\fi}
   1495 \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
   1496 \newif\if@printcopyright
   1497 \@printcopyrighttrue
   1498 \newif\if@printpermission
   1499 \@printpermissiontrue
   1500 \newif\if@acmowned
   1501 \@acmownedtrue
   1502 \define@choicekey*{ACM@}{acmcopyrightmode}[%
   1503   \acm@copyrightinput\acm@copyrightmode]{none,%
   1504     acmcopyright,acmlicensed,rightsretained,%
   1505     usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
   1506     licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
   1507     iw3c2w3,iw3c2w3g}{%
   1508   \@printpermissiontrue
   1509   \@printcopyrighttrue
   1510   \@acmownedtrue
   1511   \ifnum\acm@copyrightmode=0\relax % none
   1512    \@printpermissionfalse
   1513    \@printcopyrightfalse
   1514    \@acmownedfalse
   1515   \fi
   1516   \ifnum\acm@copyrightmode=2\relax % acmlicensed
   1517    \@acmownedfalse
   1518   \fi
   1519   \ifnum\acm@copyrightmode=3\relax % rightsretained
   1520    \@acmownedfalse
   1521    \AtBeginDocument{\acmPrice{}}%
   1522   \fi
   1523   \ifnum\acm@copyrightmode=4\relax % usgov
   1524    \@printpermissiontrue
   1525    \@printcopyrightfalse
   1526    \@acmownedfalse
   1527    \AtBeginDocument{\acmPrice{}}%
   1528   \fi
   1529   \ifnum\acm@copyrightmode=6\relax % cagov
   1530    \@acmownedfalse
   1531   \fi
   1532   \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
   1533    \@acmownedfalse
   1534   \fi
   1535   \ifnum\acm@copyrightmode=9\relax % licensedcagov
   1536    \@acmownedfalse
   1537   \fi
   1538   \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
   1539    \@acmownedfalse
   1540   \fi
   1541   \ifnum\acm@copyrightmode=11\relax % othergov
   1542    \@acmownedtrue
   1543   \fi
   1544   \ifnum\acm@copyrightmode=12\relax % licensedothergov
   1545    \@acmownedfalse
   1546   \fi
   1547   \ifnum\acm@copyrightmode=13\relax % iw3c2w3
   1548    \@acmownedfalse
   1549    \AtBeginDocument{\acmPrice{}}%
   1550   \fi
   1551   \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
   1552    \@acmownedfalse
   1553    \AtBeginDocument{\acmPrice{}}%
   1554   \fi}
   1555 \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
   1556 \setcopyright{acmcopyright}
   1557 \def\@copyrightowner{%
   1558   \ifcase\acm@copyrightmode\relax % none
   1559   \or % acmcopyright
   1560   Association for Computing Machinery.
   1561   \or % acmlicensed
   1562   Copyright held by the owner/author(s). Publication rights licensed to
   1563   ACM\@.
   1564   \or % rightsretained
   1565   Copyright held by the owner/author(s).
   1566   \or % usgov
   1567   \or % usgovmixed
   1568   Association for Computing Machinery.
   1569   \or % cagov
   1570   Crown in Right of Canada.
   1571   \or %cagovmixed
   1572   Association for Computing Machinery.
   1573   \or %licensedusgovmixed
   1574   Copyright held by the owner/author(s). Publication rights licensed to
   1575   ACM\@.
   1576   \or % licensedcagov
   1577   Crown in Right of Canada. Publication rights licensed to
   1578   ACM\@.
   1579   \or %licensedcagovmixed
   1580   Copyright held by the owner/author(s). Publication rights licensed to
   1581   ACM\@.
   1582   \or % othergov
   1583   Association for Computing Machinery.
   1584   \or % licensedothergov
   1585   Copyright held by the owner/author(s). Publication rights licensed to
   1586   ACM\@.
   1587   \or % ic2w3www
   1588   IW3C2 (International World Wide Web Conference Committee), published
   1589   under Creative Commons CC-BY~4.0 License.
   1590   \or % ic2w3wwwgoogle
   1591   IW3C2 (International World Wide Web Conference Committee), published
   1592   under Creative Commons CC-BY-NC-ND~4.0 License.
   1593   \fi}
   1594 \def\@formatdoi#1{\url{https://doi.org/#1}}
   1595 \def\@copyrightpermission{%
   1596   \ifcase\acm@copyrightmode\relax % none
   1597   \or % acmcopyright
   1598    Permission to make digital or hard copies of all or part of this
   1599    work for personal or classroom use is granted without fee provided
   1600    that copies are not made or distributed for profit or commercial
   1601    advantage and that copies bear this notice and the full citation on
   1602    the first page. Copyrights for components of this work owned by
   1603    others than ACM must be honored. Abstracting with credit is
   1604    permitted. To copy otherwise, or republish, to post on servers or to
   1605    redistribute to lists, requires prior specific permission
   1606    and\hspace*{.5pt}/or  a fee. Request permissions from
   1607    permissions@acm.org.
   1608   \or % acmlicensed
   1609    Permission to make digital or hard copies of all or part of this
   1610    work for personal or classroom use is granted without fee provided
   1611    that copies are not made or distributed for profit or commercial
   1612    advantage and that copies bear this notice and the full citation on
   1613    the first page. Copyrights for components of this work owned by
   1614    others than the author(s) must be honored. Abstracting with credit
   1615    is permitted.  To copy otherwise, or republish, to post on servers
   1616    or to  redistribute to lists, requires prior specific permission
   1617    and\hspace*{.5pt}/or  a fee. Request permissions from
   1618    permissions@acm.org.
   1619   \or % rightsretained
   1620    Permission to make digital or hard copies of part or all of this work
   1621    for personal or classroom use is granted without fee provided that
   1622    copies are not made or distributed for profit or commercial advantage
   1623    and that copies bear this notice and the full citation on the first
   1624    page. Copyrights for third-party components of this work must be
   1625    honored. For all other uses, contact the
   1626    owner\hspace*{.5pt}/author(s).
   1627   \or % usgov
   1628    This paper is authored by an employee(s) of the United States
   1629    Government and is in the public domain. Non-exclusive copying or
   1630    redistribution is allowed, provided that the article citation is
   1631    given and the authors and agency are clearly identified as its
   1632    source.
   1633   \or % usgovmixed
   1634    ACM acknowledges that this contribution was authored or co-authored
   1635    by an employee, contractor, or affiliate of the United States
   1636    government. As such, the United States government retains a
   1637    nonexclusive, royalty-free right to publish or reproduce this
   1638    article, or to allow others to do so, for government purposes only.
   1639   \or % cagov
   1640    This article was authored by employees of the Government of Canada.
   1641    As such, the Canadian government retains all interest in the
   1642    copyright to this work and grants to ACM a nonexclusive,
   1643    royalty-free right to publish or reproduce this article, or to allow
   1644    others to do so, provided that clear attribution is given both to
   1645    the authors and the Canadian government agency employing them.
   1646    Permission to make digital or hard copies for personal or classroom
   1647    use is granted. Copies must bear this notice and the full citation
   1648    on the first page.  Copyrights for components of this work owned by
   1649    others than the Canadian Government must be honored. To copy
   1650    otherwise, distribute, republish, or post, requires prior specific
   1651    permission and\hspace*{.5pt}/or a fee. Request permissions from
   1652    permissions@acm.org.
   1653   \or % cagovmixed
   1654    ACM acknowledges that this contribution was co-authored by an
   1655    affiliate of the national government of Canada. As such, the Crown
   1656    in Right of Canada retains an equal interest in the copyright.
   1657    Reprints must include clear attribution to ACM and the author's
   1658    government agency affiliation.  Permission to make digital or hard
   1659    copies for personal or classroom use is granted.  Copies must bear
   1660    this notice and the full citation on the first page. Copyrights for
   1661    components of this work owned by others than ACM must be honored.
   1662    To copy otherwise, distribute, republish, or post, requires prior
   1663    specific permission and\hspace*{.5pt}/or a fee. Request permissions
   1664    from permissions@acm.org.
   1665   \or % licensedusgovmixed
   1666    Publication rights licensed to ACM\@. ACM acknowledges that this
   1667    contribution was authored or co-authored by an employee, contractor
   1668    or affiliate of the United States government. As such, the
   1669    Government retains a nonexclusive, royalty-free right to publish or
   1670    reproduce this article, or to allow others to do so, for Government
   1671    purposes only.
   1672   \or % licensedcagov
   1673    This article was authored by employees of the Government of Canada.
   1674    As such, the Canadian government retains all interest in the
   1675    copyright to this work and grants to ACM a nonexclusive,
   1676    royalty-free right to publish or reproduce this article, or to allow
   1677    others to do so, provided that clear attribution is given both to
   1678    the authors and the Canadian government agency employing them.
   1679    Permission to make digital or hard copies for personal or classroom
   1680    use is granted. Copies must bear this notice and the full citation
   1681    on the first page.  Copyrights for components of this work owned by
   1682    others than the Canadian Government must be honored. To copy
   1683    otherwise, distribute, republish, or post, requires prior specific
   1684    permission and\hspace*{.5pt}/or a fee. Request permissions from
   1685    permissions@acm.org.
   1686   \or % licensedcagovmixed
   1687    Publication rights licensed to ACM\@. ACM acknowledges that this
   1688    contribution was authored or co-authored by an employee, contractor
   1689    or affiliate of the national government of Canada. As such, the
   1690    Government retains a nonexclusive, royalty-free right to publish or
   1691    reproduce this article, or to allow others to do so, for Government
   1692    purposes only.
   1693   \or % othergov
   1694    ACM acknowledges that this contribution was authored or co-authored
   1695    by an employee, contractor or affiliate of a national government. As
   1696    such, the Government retains a nonexclusive, royalty-free right to
   1697    publish or reproduce this article, or to allow others to do so, for
   1698    Government purposes only.
   1699   \or % licensedothergov
   1700    Publication rights licensed to ACM\@. ACM acknowledges that this
   1701    contribution was authored or co-authored by an employee, contractor
   1702    or affiliate of a national government. As such, the Government
   1703    retains a nonexclusive, royalty-free right to publish or reproduce
   1704    this article, or to allow others to do so, for Government purposes
   1705    only.
   1706  \or % iw3c2w3
   1707    This paper is published under the Creative Commons Attribution~4.0
   1708    International (CC-BY~4.0) license. Authors reserve their rights to
   1709    disseminate the work on their personal and corporate Web sites with
   1710    the appropriate attribution.
   1711  \or % iw3c2w3g
   1712    This paper is published under the Creative Commons
   1713    Attribution-NonCommercial-NoDerivs~4.0 International
   1714    (CC-BY-NC-ND~4.0) license. Authors reserve their rights to
   1715    disseminate the work on their personal and corporate Web sites with
   1716    the appropriate attribution.
   1717  \fi}
   1718 \def\copyrightyear#1{\def\@copyrightyear{#1}}
   1719 \copyrightyear{\@acmYear}
   1720 \def\@teaserfigures{}
   1721 \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
   1722 \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
   1723 \renewcommand{\thanks}[1]{%
   1724   \@ifnotempty{#1}{%
   1725     \if@ACM@anonymous
   1726       \g@addto@macro\thankses{\thanks{A note}}%
   1727    \else
   1728     \g@addto@macro\thankses{\thanks{#1}}%
   1729    \fi}}
   1730 \newbox\mktitle@bx
   1731 \def\maketitle{%
   1732   \@ACM@maketitle@typesettrue
   1733   \if@ACM@anonymous
   1734     % Anonymize omission of \author-s
   1735     \ifnum\num@authorgroups=0\author{}\fi
   1736   \fi
   1737   \begingroup
   1738   \let\@vspace\@vspace@orig
   1739   \let\@vspacer\@vspacer@orig
   1740   \let\@footnotemark\@footnotemark@nolink
   1741   \let\@footnotetext\@footnotetext@nolink
   1742   \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
   1743   \hsize=\textwidth
   1744   \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
   1745   \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
   1746   \@printtopmatter
   1747   \if@ACM@sigchiamode\@mkauthors\fi
   1748   \setcounter{footnote}{0}%
   1749   \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
   1750   \@titlenotes
   1751   \@subtitlenotes
   1752   \@authornotes
   1753   \let\@makefnmark\relax
   1754   \let\@thefnmark\relax
   1755   \let\@makefntext\noindent
   1756   \ifx\@empty\thankses\else
   1757     \footnotetextauthorsaddresses{%
   1758       \def\par{\let\par\@par}\parindent\z@\@setthanks}%
   1759   \fi
   1760   \ifx\@empty\@authorsaddresses\else
   1761      \if@ACM@anonymous\else
   1762        \if@ACM@journal@bibstrip
   1763          \footnotetextauthorsaddresses{%
   1764            \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
   1765        \fi
   1766      \fi
   1767   \fi
   1768   \if@ACM@nonacm\else\footnotetextcopyrightpermission{%
   1769     \if@ACM@authordraft
   1770         \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
   1771             Unpublished working draft. Not for distribution.}}%
   1772        \color[gray]{0.9}%
   1773     \fi
   1774     \parindent\z@\parskip0.1\baselineskip
   1775     \if@ACM@authorversion\else
   1776       \if@printpermission\@copyrightpermission\par\fi
   1777     \fi
   1778     \if@ACM@manuscript\else
   1779        \if@ACM@journal@bibstrip\else % Print the conference information
   1780          {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
   1781        \fi
   1782     \fi
   1783     \if@printcopyright
   1784       \copyright\ \@copyrightyear\ \@copyrightowner\\
   1785     \else
   1786       \@copyrightyear.\
   1787     \fi
   1788     \if@ACM@manuscript
   1789       Manuscript submitted to ACM\\
   1790     \else
   1791       \if@ACM@authorversion
   1792           This is the author's version of the work. It is posted here for
   1793           your personal use. Not for redistribution. The definitive Version
   1794           of Record was published in
   1795           \if@ACM@journal@bibstrip
   1796             \emph{\@journalName}%
   1797           \else
   1798             \emph{\@acmBooktitle}%
   1799           \fi
   1800           \ifx\@acmDOI\@empty
   1801           .
   1802           \else
   1803             , \@formatdoi{\@acmDOI}.
   1804           \fi\\
   1805         \else
   1806           \if@ACM@nonacm\else
   1807             \if@ACM@journal@bibstrip
   1808               \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
   1809               \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
   1810               \@formatdoi{\@acmDOI}%
   1811             \else % Conference
   1812               \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
   1813               \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
   1814               \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
   1815             \fi
   1816           \fi
   1817         \fi
   1818       \fi}
   1819     \fi
   1820   \endgroup
   1821   \setcounter{footnote}{0}%
   1822   \@mkabstract
   1823   \if@ACM@printccs
   1824   \ifx\@concepts\@empty\else\bgroup
   1825       {\@specialsection{CCS Concepts}%
   1826          \noindent\@concepts\par}\egroup
   1827      \fi
   1828    \fi
   1829    \ifx\@keywords\@empty\else\bgroup
   1830       {\if@ACM@journal
   1831          \@specialsection{Additional Key Words and Phrases}%
   1832        \else
   1833          \@specialsection{Keywords}%
   1834        \fi
   1835          \noindent\@keywords}\par\egroup
   1836    \fi
   1837   \andify\authors
   1838   \andify\shortauthors
   1839   \global\let\authors=\authors
   1840   \global\let\shortauthors=\shortauthors
   1841   \if@ACM@printacmref
   1842      \@mkbibcitation
   1843   \fi
   1844   \hypersetup{%
   1845     pdfauthor={\authors},
   1846     pdftitle={\@title},
   1847     pdfsubject={\@concepts},
   1848     pdfkeywords={\@keywords},
   1849     pdfcreator={LaTeX with acmart
   1850       \csname ver@acmart.cls\endcsname\space
   1851       and hyperref
   1852       \csname ver@hyperref.sty\endcsname}}%
   1853   \global\@topnum\z@ % this prevents floats from falling
   1854                      % at the top of page 1
   1855   \global\@botnum\z@ % we do not want them to be on the bottom either
   1856   \@printendtopmatter
   1857   \@afterindentfalse
   1858   \@afterheading
   1859 }
   1860 \def\@specialsection#1{%
   1861   \ifcase\ACM@format@nr
   1862   \relax % manuscript
   1863     \par\medskip\small\noindent#1: %
   1864   \or % acmsmall
   1865     \par\medskip\small\noindent#1: %
   1866   \or % acmlarge
   1867     \par\medskip\small\noindent#1: %
   1868   \or % acmtog
   1869     \par\medskip\small\noindent#1: %
   1870   \or % sigconf
   1871     \section*{#1}%
   1872   \or % siggraph
   1873     \section*{#1}%
   1874   \or % sigplan
   1875      \noindentparagraph*{#1:~}%
   1876   \or % sigchi
   1877     \section*{#1}%
   1878   \or % sigchi-a
   1879     \section*{#1}%
   1880     \fi
   1881 }
   1882 \def\@printtopmatter{%
   1883   \ifx\@startPage\@empty
   1884      \gdef\@startPage{1}%
   1885   \else
   1886      \setcounter{page}{\@startPage}%
   1887   \fi
   1888   \thispagestyle{firstpagestyle}%
   1889   \noindent
   1890   \ifcase\ACM@format@nr
   1891   \relax % manuscript
   1892     \box\mktitle@bx\par
   1893   \or % acmsmall
   1894     \box\mktitle@bx\par
   1895   \or % acmlarge
   1896     \box\mktitle@bx\par
   1897   \or % acmtog
   1898     \twocolumn[\box\mktitle@bx]%
   1899   \or % sigconf
   1900     \twocolumn[\box\mktitle@bx]%
   1901   \or % siggraph
   1902     \twocolumn[\box\mktitle@bx]%
   1903   \or % sigplan
   1904     \twocolumn[\box\mktitle@bx]%
   1905   \or % sigchi
   1906     \twocolumn[\box\mktitle@bx]%
   1907   \or % sigchi-a
   1908     \par\box\mktitle@bx\par\bigskip
   1909     \if@ACM@badge
   1910        \marginpar{\noindent
   1911          \ifx\@acmBadgeL@image\@empty\else
   1912            \href{\@acmBadgeL@url}{%
   1913              \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
   1914             \hskip\@ACM@badge@skip
   1915           \fi
   1916          \ifx\@acmBadgeR@image\@empty\else
   1917            \href{\@acmBadgeR@url}{%
   1918              \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
   1919           \fi}%
   1920     \fi
   1921   \fi
   1922 }
   1923 \def\@mktitle{%
   1924   \ifcase\ACM@format@nr
   1925   \relax % manuscript
   1926     \@mktitle@i
   1927   \or % acmsmall
   1928     \@mktitle@i
   1929   \or % acmlarge
   1930     \@mktitle@i
   1931   \or % acmtog
   1932     \@mktitle@i
   1933   \or % sigconf
   1934     \@mktitle@iii
   1935   \or % siggraph
   1936     \@mktitle@iii
   1937   \or % sigplan
   1938     \@mktitle@iii
   1939   \or % sigchi
   1940     \@mktitle@iii
   1941   \or % sigchi-a
   1942     \@mktitle@iv
   1943   \fi
   1944 }
   1945 \def\@titlefont{%
   1946   \ifcase\ACM@format@nr
   1947   \relax % manuscript
   1948     \LARGE\sffamily\bfseries
   1949   \or % acmsmall
   1950     \LARGE\sffamily\bfseries
   1951   \or % acmlarge
   1952     \LARGE\sffamily\bfseries
   1953   \or % acmtog
   1954     \Huge\sffamily
   1955   \or % sigconf
   1956     \Huge\sffamily\bfseries
   1957   \or % siggraph
   1958     \Huge\sffamily\bfseries
   1959   \or % sigplan
   1960     \Huge\bfseries
   1961   \or % sigchi
   1962     \Huge\sffamily\bfseries
   1963   \or % sigchi-a
   1964      \Huge\bfseries
   1965   \fi}
   1966 \def\@subtitlefont{\normalsize
   1967   \ifcase\ACM@format@nr
   1968   \relax % manuscript
   1969     \mdseries
   1970   \or % acmsmall
   1971     \mdseries
   1972   \or % acmlarge
   1973     \mdseries
   1974   \or % acmtog
   1975      \LARGE
   1976   \or % sigconf
   1977      \LARGE\mdseries
   1978   \or % siggraph
   1979      \LARGE\mdseries
   1980   \or % sigplan
   1981      \LARGE\mdseries
   1982   \or % sigchi
   1983      \LARGE\mdseries
   1984   \or % sigchi-a
   1985      \mdseries
   1986   \fi}
   1987 \def\@mktitle@i{\hsize=\textwidth
   1988   \@ACM@title@width=\hsize
   1989   \ifx\@acmBadgeL@image\@empty\else
   1990     \advance\@ACM@title@width by -\@ACM@badge@width
   1991     \advance\@ACM@title@width by -\@ACM@badge@skip
   1992   \fi
   1993   \ifx\@acmBadgeR@image\@empty\else
   1994     \advance\@ACM@title@width by -\@ACM@badge@width
   1995     \advance\@ACM@title@width by -\@ACM@badge@skip
   1996   \fi
   1997   \setbox\mktitle@bx=\vbox{\noindent\@titlefont
   1998     \ifx\@acmBadgeL@image\@empty\else
   1999       \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
   2000           \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
   2001       \hskip\@ACM@badge@skip
   2002     \fi
   2003     \parbox[t]{\@ACM@title@width}{\raggedright
   2004       \@titlefont\noindent
   2005       \@title
   2006   \ifx\@subtitle\@empty\else
   2007     \par\noindent{\@subtitlefont\@subtitle}
   2008   \fi}%
   2009   \ifx\@acmBadgeR@image\@empty\else
   2010     \hskip\@ACM@badge@skip
   2011     \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
   2012         \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
   2013   \fi
   2014   \par\bigskip}}%
   2015 \def\@mktitle@iii{\hsize=\textwidth
   2016     \setbox\mktitle@bx=\vbox{\@titlefont\centering
   2017       \@ACM@title@width=\hsize
   2018       \if@ACM@badge
   2019         \advance\@ACM@title@width by -2\@ACM@badge@width
   2020         \advance\@ACM@title@width by -2\@ACM@badge@skip
   2021         \parbox[b]{\@ACM@badge@width}{\strut
   2022           \ifx\@acmBadgeL@image\@empty\else
   2023             \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
   2024                 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
   2025           \fi}%
   2026         \hskip\@ACM@badge@skip
   2027       \fi
   2028       \parbox[t]{\@ACM@title@width}{\centering\@titlefont
   2029         \@title
   2030         \ifx\@subtitle\@empty\else
   2031           \par\noindent{\@subtitlefont\@subtitle}
   2032         \fi
   2033       }%
   2034       \if@ACM@badge
   2035         \hskip\@ACM@badge@skip
   2036         \parbox[b]{\@ACM@badge@width}{\strut
   2037           \ifx\@acmBadgeR@image\@empty\else
   2038             \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
   2039                 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
   2040           \fi}%
   2041       \fi
   2042       \par\bigskip}}%
   2043 \def\@mktitle@iv{\hsize=\textwidth
   2044     \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
   2045       \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
   2046       \noindent\@title
   2047      \ifx\@subtitle\@empty\else
   2048        \par\noindent\@subtitlefont\@subtitle
   2049      \fi
   2050      \par\bigskip}}%
   2051 \newbox\@ACM@commabox
   2052 \def\@ACM@addtoaddress#1{%
   2053   \ifvmode\else
   2054     \if@ACM@affiliation@obeypunctuation\else
   2055     \setbox\@ACM@commabox=\hbox{, }%
   2056     \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
   2057   \fi\fi
   2058   #1}
   2059 \def\streetaddress#1{\unskip\ignorespaces}
   2060 \def\postcode#1{\unskip\ignorespaces}
   2061 \if@ACM@journal
   2062   \def\position#1{\unskip\ignorespaces}
   2063   \def\institution#1{\unskip~#1\ignorespaces}
   2064   \def\city#1{\unskip\ignorespaces}
   2065   \def\state#1{\unskip\ignorespaces}
   2066   \newcommand\department[2][0]{\unskip\ignorespaces}
   2067   \def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
   2068 \else
   2069   \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
   2070   \def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
   2071   \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
   2072     #2\else#2\par\fi}%
   2073   \let\city\@ACM@addtoaddress
   2074   \let\state\@ACM@addtoaddress
   2075   \let\country\@ACM@addtoaddress
   2076 \fi
   2077 \def\@mkauthors{\begingroup
   2078   \hsize=\textwidth
   2079   \ifcase\ACM@format@nr
   2080   \relax % manuscript
   2081     \@mkauthors@i
   2082   \or % acmsmall
   2083     \@mkauthors@i
   2084   \or % acmlarge
   2085     \@mkauthors@i
   2086   \or % acmtog
   2087     \@mkauthors@i
   2088   \or % sigconf
   2089     \@mkauthors@iii
   2090   \or % siggraph
   2091     \@mkauthors@iii
   2092   \or % sigplan
   2093     \@mkauthors@iii
   2094   \or % sigchi
   2095     \@mkauthors@iii
   2096   \or % sigchi-a
   2097     \@mkauthors@iv
   2098   \fi
   2099   \endgroup
   2100 }
   2101 \def\@authorfont{\Large\sffamily}
   2102 \def\@affiliationfont{\normalsize\normalfont}
   2103 \ifcase\ACM@format@nr
   2104 \relax % manuscript
   2105 \or % acmsmall
   2106   \def\@authorfont{\large\sffamily}
   2107   \def\@affiliationfont{\small\normalfont}
   2108 \or % acmlarge
   2109 \or % acmtog
   2110   \def\@authorfont{\LARGE\sffamily}
   2111   \def\@affiliationfont{\large}
   2112 \or % sigconf
   2113   \def\@authorfont{\LARGE}
   2114   \def\@affiliationfont{\large}
   2115 \or % siggraph
   2116   \def\@authorfont{\normalsize\normalfont}
   2117   \def\@affiliationfont{\normalsize\normalfont}
   2118 \or % sigplan
   2119   \def\@authorfont{\Large\normalfont}
   2120   \def\@affiliationfont{\normalsize\normalfont}
   2121 \or % sigchi
   2122   \def\@authorfont{\bfseries}
   2123   \def\@affiliationfont{\mdseries}
   2124 \or % sigchi-a
   2125   \def\@authorfont{\bfseries}
   2126   \def\@affiliationfont{\mdseries}
   2127 \fi
   2128 \def\@typeset@author@line{%
   2129   \andify\@currentauthors\par\noindent
   2130   \@currentauthors\def\@currentauthors{}%
   2131   \ifx\@currentaffiliations\@empty\else
   2132     \andify\@currentaffiliations
   2133       \unskip, {\@currentaffiliations}\par
   2134   \fi
   2135   \def\@currentaffiliations{}}
   2136 \def\@mkauthors@i{%
   2137   \def\@currentauthors{}%
   2138   \def\@currentaffiliations{}%
   2139   \global\let\and\@typeset@author@line
   2140   \def\@author##1{%
   2141     \ifx\@currentauthors\@empty
   2142       \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
   2143     \else
   2144        \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
   2145     \fi
   2146     \gdef\and{}}%
   2147   \def\email##1##2{}%
   2148   \def\affiliation##1##2{%
   2149     \def\@tempa{##2}\ifx\@tempa\@empty\else
   2150        \ifx\@currentaffiliations\@empty
   2151           \gdef\@currentaffiliations{%
   2152             \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2153             \setkeys{@ACM@affiliation@}{##1}%
   2154             \@affiliationfont##2}%
   2155        \else
   2156          \g@addto@macro{\@currentaffiliations}{\and
   2157            \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2158            \setkeys{@ACM@affiliation@}{##1}##2}%
   2159       \fi
   2160     \fi
   2161      \global\let\and\@typeset@author@line}%
   2162   \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
   2163     \noindent\addresses\@typeset@author@line
   2164    \par\medskip}%
   2165 }
   2166 \newbox\author@bx
   2167 \newdimen\author@bx@wd
   2168 \newskip\author@bx@sep
   2169 \author@bx@sep=1pc\relax
   2170 \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd
   2171   \def\and{\par}\normalbaselines
   2172   \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
   2173     \@authorfont\@currentauthors\par\@affiliationfont
   2174     \@currentaffiliation}\egroup
   2175   \box\author@bx\hspace{\author@bx@sep}%
   2176   \gdef\@currentauthors{}%
   2177   \gdef\@currentaffiliation{}}
   2178 \def\@mkauthors@iii{%
   2179   \author@bx@wd=\textwidth\relax
   2180   \advance\author@bx@wd by -\author@bx@sep\relax
   2181   \ifnum\@ACM@authorsperrow>0\relax
   2182     \divide\author@bx@wd by \@ACM@authorsperrow\relax
   2183   \else
   2184     \ifcase\num@authorgroups
   2185     \relax % 0?
   2186     \or  % 1=one author per row
   2187     \or  % 2=two authors per row
   2188        \divide\author@bx@wd by \num@authorgroups\relax
   2189     \or  % 3=three authors per row
   2190        \divide\author@bx@wd by \num@authorgroups\relax
   2191     \or  % 4=two authors per row (!)
   2192        \divide\author@bx@wd by 2\relax
   2193     \else % three authors per row
   2194        \divide\author@bx@wd by 3\relax
   2195     \fi
   2196   \fi
   2197   \advance\author@bx@wd by -\author@bx@sep\relax
   2198   \gdef\@currentauthors{}%
   2199   \gdef\@currentaffiliation{}%
   2200   \def\@author##1{\ifx\@currentauthors\@empty
   2201     \gdef\@currentauthors{\par##1}%
   2202   \else
   2203     \g@addto@macro\@currentauthors{\par##1}%
   2204   \fi
   2205   \gdef\and{}}%
   2206   \def\email##1##2{\ifx\@currentaffiliation\@empty
   2207     \gdef\@currentaffiliation{\bgroup
   2208       \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
   2209   \else
   2210     \g@addto@macro\@currentaffiliation{\par\bgroup
   2211       \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
   2212   \fi}%
   2213   \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
   2214     \gdef\@currentaffiliation{%
   2215       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2216       \setkeys{@ACM@affiliation@}{##1}##2}%
   2217   \else
   2218     \g@addto@macro\@currentaffiliation{\par
   2219       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2220       \setkeys{@ACM@affiliation@}{##1}##2}%
   2221   \fi
   2222   \global\let\and\@typeset@author@bx
   2223 }%
   2224   \hsize=\textwidth
   2225   \global\setbox\mktitle@bx=\vbox{\noindent
   2226     \box\mktitle@bx\par\medskip\leavevmode
   2227     \lineskip=1pc\relax\centering\hspace*{-1em}%
   2228     \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
   2229 \def\@mkauthors@iv{%
   2230   \author@bx@wd=\columnwidth\relax
   2231   \advance\author@bx@wd by -\author@bx@sep\relax
   2232   \ifnum\@ACM@authorsperrow>0\relax
   2233     \divide\author@bx@wd by \@ACM@authorsperrow\relax
   2234   \else
   2235     \ifcase\num@authorgroups
   2236     \relax % 0?
   2237     \or  % 1=one author per row
   2238     \else  % 2=two authors per row
   2239        \divide\author@bx@wd by 2\relax
   2240     \fi
   2241   \fi
   2242   \advance\author@bx@wd by -\author@bx@sep\relax
   2243   \gdef\@currentauthors{}%
   2244   \gdef\@currentaffiliation{}%
   2245   \def\@author##1{\ifx\@currentauthors\@empty
   2246     \gdef\@currentauthors{\par##1}%
   2247   \else
   2248     \g@addto@macro\@currentauthors{\par##1}%
   2249   \fi
   2250   \gdef\and{}}%
   2251   \def\email##1##2{\ifx\@currentaffiliation\@empty
   2252     \gdef\@currentaffiliation{\nolinkurl{##2}}%
   2253   \else
   2254     \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
   2255   \fi}%
   2256   \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
   2257     \gdef\@currentaffiliation{%
   2258       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2259            \setkeys{@ACM@affiliation@}{##1}##2}%
   2260   \else
   2261     \g@addto@macro\@currentaffiliation{\par
   2262       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2263       \setkeys{@ACM@affiliation@}{##1}##2}%
   2264   \fi
   2265   \global\let\and\@typeset@author@bx}%
   2266     \bgroup\hsize=\columnwidth
   2267     \par\raggedright\leftskip=\z@
   2268     \lineskip=1pc\noindent
   2269     \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
   2270 \def\@mkauthorsaddresses{%
   2271   \ifnum\num@authors>1\relax
   2272   Authors' \else Author's \fi
   2273   \ifnum\num@authorgroups>1\relax
   2274   addresses: \else address: \fi
   2275   \bgroup
   2276   \def\streetaddress##1{\unskip, ##1}%
   2277   \def\postcode##1{\unskip, ##1}%
   2278   \def\position##1{\unskip\ignorespaces}%
   2279   \def\institution##1{\unskip, ##1}%
   2280   \def\city##1{\unskip, ##1}%
   2281   \def\state##1{\unskip, ##1}%
   2282   \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
   2283   \def\country##1{\unskip, ##1}%
   2284   \def\and{\unskip; }%
   2285   \def\@author##1{##1}%
   2286   \def\email##1##2{\unskip, \nolinkurl{##2}}%
   2287   \addresses
   2288   \egroup}
   2289 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal
   2290   \ifx\@authorsaddresses\@empty
   2291   \ClassWarningNoLine{\@classname}{Authors'
   2292     addresses are mandatory for ACM journals}%
   2293   \fi\fi\fi}
   2294 \def\@setaddresses{}
   2295 \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
   2296 \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
   2297 \def\@mkteasers{%
   2298   \ifx\@teaserfigures\@empty\else
   2299     \def\@teaser##1{\par\bigskip\bgroup
   2300       \captionsetup{type=figure}##1\egroup\par}
   2301     \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
   2302       \noindent\@Description@presentfalse
   2303       \@teaserfigures\par\if@Description@present\else
   2304          \global\@undescribed@imagestrue
   2305          \ClassWarning{\@classname}{A possible image without
   2306            description}\fi
   2307     \medskip}%
   2308   \fi}
   2309 \def\@mkabstract{\bgroup
   2310   \ifx\@abstract\@lempty\else
   2311   {\phantomsection\addcontentsline{toc}{section}{Abstract}%
   2312     \if@ACM@journal
   2313        \everypar{\setbox\z@\lastbox\everypar{}}\small
   2314     \else
   2315       \section*{\abstractname}%
   2316     \fi
   2317    \ignorespaces\@abstract\par}%
   2318   \fi\egroup}
   2319 \def\@mkbibcitation{\bgroup
   2320   \let\@vspace\@vspace@orig
   2321   \let\@vspacer\@vspacer@orig
   2322   \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
   2323   \def\footnotemark{}%
   2324   \def\\{\unskip{} \ignorespaces}%
   2325   \def\footnote{\ClassError{\@classname}{Please do not use footnotes
   2326       inside a \string\title{} or \string\author{} command! Use
   2327       \string\titlenote{} or \string\authornote{} instead!}}%
   2328   \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
   2329     Article~\@acmArticle\ \fi}%
   2330   \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
   2331   \noindent\bgroup
   2332     \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title
   2333   \ifx\@subtitle\@empty. \else: \@subtitle. \fi
   2334   \if@ACM@nonacm\else
   2335     % The 'nonacm' option disables 'printacmref' by default,
   2336     % and the present \@mkbibcitation definition is never used
   2337     % in this case. The conditional remains useful if the user
   2338     % explicitly sets \settopmatter{printacmref=true}.
   2339     \if@ACM@journal@bibstrip
   2340        \textit{\@journalNameShort}
   2341        \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
   2342        \ref{TotPages}~\@pages@word.
   2343     \else
   2344        In \textit{\@acmBooktitle}%
   2345        \ifx\@acmEditors\@empty\textit{.}\else
   2346          \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
   2347        \fi\
   2348        ACM, New York, NY, USA%
   2349          \@article@string\unskip, \ref{TotPages}~\@pages@word.
   2350     \fi
   2351   \fi
   2352   \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
   2353 \par\egroup}
   2354 \def\@printendtopmatter{%
   2355   \let\@vspace\@vspace@orig
   2356   \let\@vspacer\@vspacer@orig
   2357   \par\bigskip
   2358   \let\@vspace\@vspace@acm
   2359   \let\@vspacer\@vspacer@acm
   2360   }
   2361 \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
   2362 \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
   2363 \RequirePackage{fancyhdr}
   2364 \let\ACM@ps@plain\ps@plain
   2365 \let\ACM@ps@myheadings\ps@myheadings
   2366 \let\ACM@ps@headings\ps@headings
   2367 \def\ACM@restore@pagestyle{%
   2368   \let\ps@plain\ACM@ps@plain
   2369   \let\ps@myheadings\ACM@ps@myheadings
   2370   \let\ps@headings\ACM@ps@headings}
   2371 \AtBeginDocument{\ACM@restore@pagestyle}
   2372 \if@ACM@review
   2373   \newsavebox{\ACM@linecount@bx}
   2374   \newlength\ACM@linecount@bxht
   2375   \newcount\ACM@linecount
   2376   \ACM@linecount\@ne\relax
   2377   \def\ACM@mk@linecount{%
   2378     \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
   2379         \normalsize
   2380         \setlength{\ACM@linecount@bxht}{0pt}%
   2381         \loop{\color{red}\scriptsize\the\ACM@linecount}\\
   2382         \global\advance\ACM@linecount by \@ne
   2383         \addtolength{\ACM@linecount@bxht}{\baselineskip}%
   2384         \ifdim\ACM@linecount@bxht<\textheight\repeat
   2385         {\color{red}\scriptsize\the\ACM@linecount}\hfill
   2386         \global\advance\ACM@linecount by \@ne}}}
   2387 \fi
   2388 \def\ACM@linecountL{%
   2389   \if@ACM@review
   2390   \ACM@mk@linecount
   2391   \begin{picture}(0,0)%
   2392     \put(-26,-22){\usebox{\ACM@linecount@bx}}%
   2393   \end{picture}%
   2394   \fi}
   2395 \def\ACM@linecountR{%
   2396   \if@ACM@review
   2397     \ifcase\ACM@format@nr
   2398     \relax % manuscript
   2399          \relax
   2400        \or % acmsmall
   2401          \relax
   2402        \or % acmlarge
   2403          \relax
   2404        \or % acmtog
   2405           \ACM@mk@linecount
   2406        \or % sigconf
   2407           \ACM@mk@linecount
   2408        \or % siggraph
   2409           \ACM@mk@linecount
   2410        \or % sigplan
   2411           \ACM@mk@linecount
   2412        \or % sigchi
   2413           \ACM@mk@linecount
   2414        \or % sigchi-a
   2415           \ACM@mk@linecount
   2416     \fi
   2417     \begin{picture}(0,0)%
   2418       \put(20,-22){\usebox{\ACM@linecount@bx}}%
   2419      \end{picture}%
   2420   \fi}
   2421 \if@ACM@timestamp
   2422   % Subtracting 30 from \time gives us the effect of rounding down despite
   2423   % \numexpr rounding to nearest
   2424   \newcounter{ACM@time@hours}
   2425   \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
   2426   \newcounter{ACM@time@minutes}
   2427   \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
   2428   \newcommand\ACM@timestamp{%
   2429     \footnotesize%
   2430     \ifx\@acmSubmissionID\@empty\relax\else
   2431     Submission ID: \@acmSubmissionID.{ }%
   2432     \fi
   2433     \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
   2434     \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
   2435     Page \thepage\ of \@startPage--\pageref*{TotPages}.%
   2436   }
   2437 \fi
   2438 \def\@shortauthors{%
   2439   \if@ACM@anonymous
   2440     Anon.
   2441     \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi
   2442   \else\shortauthors\fi}
   2443 \def\@headfootfont{\sffamily\footnotesize}
   2444 \AtBeginDocument{%
   2445 \fancypagestyle{standardpagestyle}{%
   2446   \fancyhf{}%
   2447   \renewcommand{\headrulewidth}{\z@}%
   2448   \renewcommand{\footrulewidth}{\z@}%
   2449   \def\@acmArticlePage{%
   2450     \ifx\@acmArticle\empty%
   2451       \if@ACM@printfolios\thepage\fi%
   2452     \else%
   2453       \@acmArticle\if@ACM@printfolios:\thepage\fi%
   2454     \fi%
   2455   }%
   2456   \if@ACM@journal@bibstrip
   2457     \ifcase\ACM@format@nr
   2458     \relax % manuscript
   2459       \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
   2460       \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
   2461       \fancyhead[RE]{\@shortauthors}%
   2462       \fancyhead[LO]{\ACM@linecountL\shorttitle}%
   2463       \if@ACM@nonacm\else%
   2464         \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}
   2465       \fi%
   2466     \or % acmsmall
   2467       \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}%
   2468       \fancyhead[RO]{\@headfootfont\@acmArticlePage}%
   2469       \fancyhead[RE]{\@headfootfont\@shortauthors}%
   2470       \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
   2471       \if@ACM@nonacm\else%
   2472         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2473         \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
   2474       \fi
   2475     \or % acmlarge
   2476       \fancyhead[LE]{\ACM@linecountL\@headfootfont
   2477       \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
   2478       \fancyhead[LO]{\ACM@linecountL}%
   2479       \fancyhead[RO]{\@headfootfont
   2480         \shorttitle\quad\textbullet\quad\@acmArticlePage}%
   2481       \if@ACM@nonacm\else%
   2482         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2483         \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
   2484       \fi
   2485     \or % acmtog
   2486       \fancyhead[LE]{\ACM@linecountL\@headfootfont
   2487         \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
   2488       \fancyhead[LO]{\ACM@linecountL}%
   2489       \fancyhead[RE]{\ACM@linecountR}%
   2490       \fancyhead[RO]{\@headfootfont
   2491         \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}%
   2492       \if@ACM@nonacm\else%
   2493         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2494         \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
   2495       \fi
   2496     \else % Proceedings
   2497       \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2498       \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
   2499       \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
   2500       \if@ACM@nonacm\else%
   2501         \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
   2502           \acmConference@shortname,
   2503           \acmConference@date, \acmConference@venue}%
   2504         \fancyhead[RO]{\@headfootfont
   2505           \acmConference@shortname,
   2506           \acmConference@date, \acmConference@venue\ACM@linecountR}%
   2507       \fi
   2508     \fi
   2509   \else % Proceedings
   2510     \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2511     \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
   2512     \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
   2513     \if@ACM@nonacm\else%
   2514       \fancyhead[LE]{\ACM@linecountL\@headfootfont
   2515         \acmConference@shortname,
   2516         \acmConference@date, \acmConference@venue}%
   2517       \fancyhead[RO]{\@headfootfont
   2518         \acmConference@shortname,
   2519         \acmConference@date, \acmConference@venue\ACM@linecountR}%
   2520     \fi
   2521   \fi
   2522   \if@ACM@sigchiamode
   2523      \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
   2524   \fi
   2525   \if@ACM@timestamp
   2526      \fancyfoot[LO,RE]{\ACM@timestamp}
   2527   \fi
   2528 }%
   2529 \pagestyle{standardpagestyle}
   2530 }
   2531 \newdimen\@folio@wd
   2532 \@folio@wd=\z@
   2533 \newdimen\@folio@ht
   2534 \@folio@ht=\z@
   2535 \newdimen\@folio@voffset
   2536 \@folio@voffset=\z@
   2537 \def\@folio@max{1}
   2538 \ifcase\ACM@format@nr
   2539 \relax % manuscript
   2540 \or % acmsmall
   2541   \@folio@wd=45.75pt\relax
   2542   \@folio@ht=1.25in\relax
   2543   \@folio@voffset=.2in\relax
   2544   \def\@folio@max{8}
   2545 \or % acmlarge
   2546   \@folio@wd=43.25pt\relax
   2547   \@folio@ht=79pt\relax
   2548   \@folio@voffset=.55in\relax
   2549   \def\@folio@max{10}
   2550 \fi
   2551 \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
   2552   \ifnum\@tempcnta=0\relax\else
   2553   \loop
   2554      \ifnum\@tempcnta>\@folio@max\relax
   2555       \advance\@tempcnta by - \@folio@max
   2556    \repeat
   2557     \advance\@tempcnta by -1\relax
   2558     \@tempdima=\@folio@ht\relax
   2559     \multiply\@tempdima by \the\@tempcnta\relax
   2560     \advance\@tempdima by -\@folio@voffset\relax
   2561     \begin{picture}(0,0)
   2562     \makebox[\z@]{\raisebox{-\@tempdima}{%
   2563         \rlap{%
   2564           \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
   2565             \rule{\@folio@wd}{\@folio@ht}}}%
   2566         \parbox{\@folio@wd}{%
   2567           \centering
   2568           \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
   2569   \end{picture}\fi}
   2570 
   2571 \AtBeginDocument{%
   2572 \fancypagestyle{firstpagestyle}{%
   2573   \fancyhf{}%
   2574   \renewcommand{\headrulewidth}{\z@}%
   2575   \renewcommand{\footrulewidth}{\z@}%
   2576   \if@ACM@journal@bibstrip
   2577     \ifcase\ACM@format@nr
   2578     \relax % manuscript
   2579       \fancyhead[L]{\ACM@linecountL}%
   2580       \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
   2581       \if@ACM@nonacm\else%
   2582         \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
   2583       \fi%
   2584     \or % acmsmall
   2585       \if@ACM@nonacm\else%
   2586         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2587         \@acmNumber, Article \@acmArticle.  Publication date:
   2588         \@acmPubDate.}%
   2589       \fi%
   2590       \fancyhead[LE]{\ACM@linecountL\@folioblob}%
   2591       \fancyhead[LO]{\ACM@linecountL}%
   2592       \fancyhead[RO]{\@folioblob}%
   2593       \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
   2594     \or % acmlarge
   2595       \if@ACM@nonacm\else%
   2596         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2597         \@acmNumber, Article \@acmArticle.  Publication date:
   2598         \@acmPubDate.}%
   2599       \fi%
   2600       \fancyhead[RO]{\@folioblob}%
   2601       \fancyhead[LE]{\ACM@linecountL\@folioblob}%
   2602       \fancyhead[LO]{\ACM@linecountL}%
   2603       \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
   2604     \or % acmtog
   2605       \if@ACM@nonacm\else%
   2606         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2607         \@acmNumber, Article \@acmArticle.  Publication date:
   2608         \@acmPubDate.}%
   2609       \fi%
   2610       \fancyhead[L]{\ACM@linecountL}%
   2611       \fancyhead[R]{\ACM@linecountR}%
   2612     \else % Conference proceedings
   2613       \fancyhead[L]{\ACM@linecountL}%
   2614       \fancyhead[R]{\ACM@linecountR}%
   2615       \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2616     \fi
   2617   \else
   2618     \fancyhead[L]{\ACM@linecountL}%
   2619     \fancyhead[R]{\ACM@linecountR}%
   2620     \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2621   \fi
   2622   \if@ACM@timestamp
   2623     \ifnum\ACM@format@nr=0\relax % Manuscript
   2624     \fancyfoot[LO,RE]{\ACM@timestamp\quad
   2625       \if@ACM@nonacm\else
   2626         \footnotesize Manuscript submitted to ACM
   2627       \fi}
   2628     \else
   2629     \fancyfoot[LO,RE]{\ACM@timestamp}
   2630     \fi
   2631   \fi
   2632 }}
   2633 \def\ACM@NRadjust#1{%
   2634  \begingroup
   2635   \expandafter\ifx\csname Sectionformat\endcsname\relax
   2636   % do nothing when  \Sectionformat  is unknown
   2637    \def\next{\endgroup #1}%
   2638  \else
   2639   \def\next{\endgroup
   2640    \let\realSectionformat\Sectionformat
   2641    \def\ACM@sect@format@{#1}%
   2642    \let\Sectionformat\ACM@NR@adjustedSectionformat
   2643  %%  next lines added 2018-06-17 to ensure section number is styled
   2644    \let\real@adddotafter\@adddotafter
   2645    \let\@adddotafter\ACM@adddotafter
   2646    #1{}% imposes the styles, but nullifies  \MakeUppercase
   2647    \let\@adddotafter\real@adddotafter
   2648   }%
   2649  \fi \next
   2650 }
   2651 \def\ACM@NR@adjustedSectionformat#1#2{%
   2652  \realSectionformat{\ACM@sect@format{#1}}{#2}%
   2653  \let\Sectionformat\realSectionformat}
   2654 \DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@}
   2655 \def\ACM@sect@format@null#1{#1}
   2656 \let\ACM@sect@format@\ACM@sect@format@null
   2657 \AtBeginDocument{%
   2658  \expandafter\ifx\csname LTX@adddotafter\endcsname\relax
   2659   \let\LTX@adddotafter\@adddotafter
   2660  \fi
   2661 }
   2662 \def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}
   2663 \renewcommand\section{\@startsection{section}{1}{\z@}%
   2664   {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2665   {.25\baselineskip}%
   2666   {\ACM@NRadjust\@secfont}}
   2667 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
   2668   {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2669   {.25\baselineskip}%
   2670   {\ACM@NRadjust\@subsecfont}}
   2671 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
   2672   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2673   {-3.5\p@}%
   2674   {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
   2675 \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
   2676   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2677   {-3.5\p@}%
   2678   {\ACM@NRadjust{\@parfont\@adddotafter}}}
   2679 \newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}%
   2680   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2681   {-3.5\p@}%
   2682   {\ACM@NRadjust{\@parfont}}}
   2683 
   2684 \renewcommand\part{\@startsection{part}{9}{\z@}%
   2685   {-10\p@ \@plus -4\p@ \@minus -2\p@}%
   2686   {4\p@}%
   2687   {\ACM@NRadjust\@parfont}}
   2688 \def\section@raggedright{\@rightskip\@flushglue
   2689   \rightskip\@rightskip
   2690   \leftskip\z@skip
   2691   \parindent\z@}
   2692 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
   2693 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
   2694 \def\@subsubsecfont{\sffamily\itshape}
   2695 \def\@parfont{\itshape}
   2696 \setcounter{secnumdepth}{3}
   2697 \ifcase\ACM@format@nr
   2698 \relax % manuscript
   2699 \or % acmsmall
   2700 \or % acmlarge
   2701  \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
   2702  \def\@subsecfont{\sffamily\large\section@raggedright}
   2703 \or % acmtog
   2704  \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
   2705  \def\@subsecfont{\sffamily\large\section@raggedright}
   2706 \or % sigconf
   2707  \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
   2708  \def\@subsecfont{\bfseries\Large\section@raggedright}
   2709 \or % siggraph
   2710  \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
   2711  \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
   2712 \or % sigplan
   2713  \def\@secfont{\bfseries\Large\section@raggedright}
   2714  \def\@subsecfont{\bfseries\section@raggedright}
   2715  \def\@subsubsecfont{\bfseries\section@raggedright}
   2716  \def\@parfont{\bfseries\itshape}
   2717  \def\@subparfont{\itshape}
   2718 \or % sigchi
   2719  \setcounter{secnumdepth}{1}
   2720  \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
   2721  \def\@subsecfont{\sffamily\bfseries\section@raggedright}
   2722 \or % sigchi-a
   2723  \setcounter{secnumdepth}{0}
   2724  \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
   2725  \def\@subsecfont{\sffamily\bfseries\section@raggedright}
   2726 \fi
   2727 \def\@adddotafter#1{#1\@addpunct{.}}
   2728 \def\@addspaceafter#1{#1\@addpunct{\enspace}}
   2729 \providecommand*\@dotsep{4.5}
   2730 \def\@acmplainbodyfont{\itshape}
   2731 \def\@acmplainindent{\parindent}
   2732 \def\@acmplainheadfont{\scshape}
   2733 \def\@acmplainnotefont{\@empty}
   2734 \ifcase\ACM@format@nr
   2735 \relax % manuscript
   2736 \or % acmsmall
   2737 \or % acmlarge
   2738 \or % acmtog
   2739 \or % sigconf
   2740 \or % siggraph
   2741 \or % sigplan
   2742   \def\@acmplainbodyfont{\itshape}
   2743   \def\@acmplainindent{\z@}
   2744   \def\@acmplainheadfont{\bfseries}
   2745   \def\@acmplainnotefont{\normalfont}
   2746 \or % sigchi
   2747 \or % sigchi-a
   2748 \fi
   2749 \newtheoremstyle{acmplain}%
   2750   {.5\baselineskip\@plus.2\baselineskip
   2751     \@minus.2\baselineskip}% space above
   2752   {.5\baselineskip\@plus.2\baselineskip
   2753     \@minus.2\baselineskip}% space below
   2754   {\@acmplainbodyfont}% body font
   2755   {\@acmplainindent}% indent amount
   2756   {\@acmplainheadfont}% head font
   2757   {.}% punctuation after head
   2758   {.5em}% spacing after head
   2759   {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
   2760 \def\@acmdefinitionbodyfont{\normalfont}
   2761 \def\@acmdefinitionindent{\parindent}
   2762 \def\@acmdefinitionheadfont{\itshape}
   2763 \def\@acmdefinitionnotefont{\@empty}
   2764 \ifcase\ACM@format@nr
   2765 \relax % manuscript
   2766 \or % acmsmall
   2767 \or % acmlarge
   2768 \or % acmtog
   2769 \or % sigconf
   2770 \or % siggraph
   2771 \or % sigplan
   2772   \def\@acmdefinitionbodyfont{\normalfont}
   2773   \def\@acmdefinitionindent{\z@}
   2774   \def\@acmdefinitionheadfont{\bfseries}
   2775   \def\@acmdefinitionnotefont{\normalfont}
   2776 \or % sigchi
   2777 \or % sigchi-a
   2778 \fi
   2779 \newtheoremstyle{acmdefinition}%
   2780   {.5\baselineskip\@plus.2\baselineskip
   2781     \@minus.2\baselineskip}% space above
   2782   {.5\baselineskip\@plus.2\baselineskip
   2783     \@minus.2\baselineskip}% space below
   2784   {\@acmdefinitionbodyfont}% body font
   2785   {\@acmdefinitionindent}% indent amount
   2786   {\@acmdefinitionheadfont}% head font
   2787   {.}% punctuation after head
   2788   {.5em}% spacing after head
   2789   {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
   2790 \theoremstyle{acmplain}
   2791 \AtEndPreamble{%
   2792   \if@ACM@acmthm
   2793   \theoremstyle{acmplain}
   2794   \@ifundefined{theorem}{%
   2795   \newtheorem{theorem}{Theorem}[section]
   2796   }{}
   2797   \@ifundefined{conjecture}{%
   2798   \newtheorem{conjecture}[theorem]{Conjecture}
   2799   }{}
   2800   \@ifundefined{proposition}{%
   2801   \newtheorem{proposition}[theorem]{Proposition}
   2802   }{}
   2803   \@ifundefined{lemma}{%
   2804   \newtheorem{lemma}[theorem]{Lemma}
   2805   }{}
   2806   \@ifundefined{corollary}{%
   2807   \newtheorem{corollary}[theorem]{Corollary}
   2808   }{}
   2809   \theoremstyle{acmdefinition}
   2810   \@ifundefined{example}{%
   2811   \newtheorem{example}[theorem]{Example}
   2812   }{}
   2813   \@ifundefined{definition}{%
   2814   \newtheorem{definition}[theorem]{Definition}
   2815   }{}
   2816   \fi
   2817   \theoremstyle{acmplain}
   2818 }
   2819 \def\@proofnamefont{\scshape}
   2820 \def\@proofindent{\indent}
   2821 \ifcase\ACM@format@nr
   2822 \relax % manuscript
   2823 \or % acmsmall
   2824 \or % acmlarge
   2825 \or % acmtog
   2826 \or % sigconf
   2827 \or % siggraph
   2828 \or % sigplan
   2829   \def\@proofnamefont{\itshape}
   2830   \def\@proofindent{\noindent}
   2831 \or % sigchi
   2832 \or % sigchi-a
   2833 \fi
   2834 \renewenvironment{proof}[1][\proofname]{\par
   2835   \pushQED{\qed}%
   2836   \normalfont \topsep6\p@\@plus6\p@\relax
   2837   \trivlist
   2838   \item[\@proofindent\hskip\labelsep
   2839         {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
   2840 }{%
   2841   \popQED\endtrivlist\@endpefalse
   2842 }
   2843 \AtEndPreamble{%
   2844   \if@ACM@balance
   2845     \ifcase\ACM@format@nr
   2846     \relax % manuscript
   2847          \global\@ACM@balancefalse
   2848        \or % acmsmall
   2849          \global\@ACM@balancefalse
   2850        \or % acmlarge
   2851          \global\@ACM@balancefalse
   2852        \or % acmtog
   2853           \RequirePackage{balance}%
   2854        \or % sigconf
   2855           \RequirePackage{balance}%
   2856        \or % siggraph
   2857           \RequirePackage{balance}%
   2858        \or % sigplan
   2859           \RequirePackage{balance}%
   2860        \or % sigchi
   2861           \RequirePackage{balance}%
   2862        \or % sigchi-a
   2863           \global\@ACM@balancefalse
   2864     \fi
   2865   \fi
   2866 }
   2867 \AtEndDocument{%
   2868   \if@ACM@balance
   2869   \if@twocolumn
   2870   \balance
   2871   \fi\fi}
   2872 \newcommand\acksname{Acknowledgments}
   2873 \specialcomment{acks}{%
   2874   \begingroup
   2875   \section*{\acksname}
   2876   \phantomsection\addcontentsline{toc}{section}{\acksname}
   2877 }{%
   2878   \endgroup
   2879 }
   2880 \def\grantsponsor#1#2#3{#2}
   2881 \newcommand\grantnum[3][]{#3%
   2882   \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
   2883 \AtEndPreamble{%
   2884 \if@ACM@screen
   2885   \includecomment{screenonly}
   2886   \excludecomment{printonly}
   2887 \else
   2888   \excludecomment{screenonly}
   2889   \includecomment{printonly}
   2890 \fi
   2891 \if@ACM@anonymous
   2892   \excludecomment{anonsuppress}
   2893   \excludecomment{acks}
   2894 \else
   2895   \includecomment{anonsuppress}
   2896 \fi}
   2897 \newcommand\showeprint[2][arxiv]{%
   2898   \def\@tempa{#1}%
   2899   \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
   2900   \def\@tempb{arxiv}%
   2901   \ifx\@tempa\@tempb
   2902      arXiv:\href{https://arxiv.org/abs/#2}{#2}\else arXiv:#2%
   2903   \fi}
   2904 \let\@vspace@orig=\@vspace
   2905 \let\@vspacer@orig=\@vspacer
   2906 \apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should
   2907     only be used to provide space above/below surrounding
   2908     objects}}{}{}
   2909 \apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should
   2910     only be used to provide space above/below surrounding
   2911     objects}}{}{}
   2912 \let\@vspace@acm=\@vspace
   2913 \let\@vspacer@acm=\@vspacer
   2914 \let\ACM@origbaselinestretch\baselinestretch
   2915 \AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else
   2916   \ClassError{\@classname}{An attempt to redefine
   2917     \string\baselinestretch\space detected.  Please do not do this for
   2918     ACM submissions!}\fi}
   2919 \normalsize\normalfont\frenchspacing
   2920 \endinput
   2921 %%
   2922 %% End of file `acmart.cls'.