%% %% This is file `xinttools.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% xint.dtx (with options: `xinttools') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from xinttools.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file xint.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- %% The xint bundle 1.4d 2021/03/29 %% Copyright (C) 2013-2021 by Jean-Francois Burnol %% xinttools: Expandable and non-expandable utilities %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode64=11 % @ \catcode35=6 % # \catcode44=12 % , \catcode45=12 % - \catcode46=12 % . \catcode58=12 % : \let\z\endgroup \expandafter\let\expandafter\x\csname ver@xinttools.sty\endcsname \expandafter\let\expandafter\w\csname ver@xintkernel.sty\endcsname \expandafter \ifx\csname PackageInfo\endcsname\relax \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% \else \def\y#1#2{\PackageInfo{#1}{#2}}% \fi \expandafter \ifx\csname numexpr\endcsname\relax \y{xinttools}{\numexpr not available, aborting input}% \aftergroup\endinput \else \ifx\x\relax % plain-TeX, first loading of xinttools.sty \ifx\w\relax % but xintkernel.sty not yet loaded. \def\z{\endgroup\input xintkernel.sty\relax}% \fi \else \def\empty {}% \ifx\x\empty % LaTeX, first loading, % variable is initialized, but \ProvidesPackage not yet seen \ifx\w\relax % xintkernel.sty not yet loaded. \def\z{\endgroup\RequirePackage{xintkernel}}% \fi \else \aftergroup\endinput % xinttools already loaded. \fi \fi \fi \z% \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xinttools}% [2021/03/29 v1.4d Expandable and non-expandable utilities (JFB)]% \newtoks\XINT_toks \xint_firstofone{\let\XINT_sptoken= } %<- space here! \def\xintgodef {\global\xintodef }% \def\xintgoodef {\global\xintoodef }% \def\xintgfdef {\global\xintfdef }% \def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }% \def\xintRevWithBracesNoExpand {\romannumeral0\xintrevwithbracesnoexpand }% \long\def\xintrevwithbraces #1% {% \expandafter\XINT_revwbr_loop\expandafter{\expandafter}% \romannumeral`&&@#1\xint:\xint:\xint:\xint:% \xint:\xint:\xint:\xint:\xint_bye }% \long\def\xintrevwithbracesnoexpand #1% {% \XINT_revwbr_loop {}% #1\xint:\xint:\xint:\xint:% \xint:\xint:\xint:\xint:\xint_bye }% \long\def\XINT_revwbr_loop #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint: #9\XINT_revwbr_finish_a\xint:% \XINT_revwbr_loop {{#9}{#8}{#7}{#6}{#5}{#4}{#3}{#2}#1}% }% \long\def\XINT_revwbr_finish_a\xint:\XINT_revwbr_loop #1#2\xint_bye {% \XINT_revwbr_finish_b #2\R\R\R\R\R\R\R\Z #1% }% \def\XINT_revwbr_finish_b #1#2#3#4#5#6#7#8\Z {% \xint_gob_til_R #1\XINT_revwbr_finish_c \xint_gobble_viii #2\XINT_revwbr_finish_c \xint_gobble_vii #3\XINT_revwbr_finish_c \xint_gobble_vi #4\XINT_revwbr_finish_c \xint_gobble_v #5\XINT_revwbr_finish_c \xint_gobble_iv #6\XINT_revwbr_finish_c \xint_gobble_iii #7\XINT_revwbr_finish_c \xint_gobble_ii \R\XINT_revwbr_finish_c \xint_gobble_i\Z }% \def\XINT_revwbr_finish_c#1{% \def\XINT_revwbr_finish_c##1##2\Z{\expandafter#1##1}% }\XINT_revwbr_finish_c{ }% \def\xintZapFirstSpaces {\romannumeral0\xintzapfirstspaces }% \def\xintzapfirstspaces#1{\long \def\xintzapfirstspaces ##1{\XINT_zapbsp_a #1##1\xint:#1#1\xint:}% }\xintzapfirstspaces{ }% \def\XINT_zapbsp_a#1{\long\def\XINT_zapbsp_a ##1#1#1{% \XINT_zapbsp_again?##1\xint_bye\XINT_zapbsp_b ##1#1#1}% }\XINT_zapbsp_a{ }% \long\def\XINT_zapbsp_again? #1{\xint_bye #1\XINT_zapbsp_again }% \xint_firstofone{\def\XINT_zapbsp_again\XINT_zapbsp_b} {\XINT_zapbsp_a }% \long\def\XINT_zapbsp_b #1\xint:#2\xint:{#1}% \def\xintZapLastSpaces {\romannumeral0\xintzaplastspaces }% \def\xintzaplastspaces#1{\long \def\xintzaplastspaces ##1{\XINT_zapesp_a {}\empty##1#1#1\xint_bye\xint:}% }\xintzaplastspaces{ }% \xint_firstofone {\long\def\XINT_zapesp_a #1#2 } %<- second space here {\expandafter\XINT_zapesp_b\expandafter{#2}{#1}}% \long\def\XINT_zapesp_b #1#2#3\xint:% {\XINT_zapesp_end? #3\XINT_zapesp_e {#2#1}\empty #3\xint:}% \long\def\XINT_zapesp_end? #1{\xint_bye #1\XINT_zapesp_end }% \long\def\XINT_zapesp_end\XINT_zapesp_e #1#2\xint:{ #1}% \def\XINT_zapesp_e#1{% \long\def\XINT_zapesp_e ##1{\XINT_zapesp_a {##1#1#1}}% }\XINT_zapesp_e{ }% \def\xintZapSpaces {\romannumeral0\xintzapspaces }% \def\xintzapspaces#1{% \long\def\xintzapspaces ##1% like \xintZapFirstSpaces. {\XINT_zapsp_a #1##1\xint:#1#1\xint:}% }\xintzapspaces{ }% \def\XINT_zapsp_a#1{% \long\def\XINT_zapsp_a ##1#1#1% {\XINT_zapsp_again?##1\xint_bye\XINT_zapsp_b##1#1#1}% }\XINT_zapsp_a{ }% \long\def\XINT_zapsp_again? #1{\xint_bye #1\XINT_zapsp_again }% \xint_firstofone{\def\XINT_zapsp_again\XINT_zapsp_b} {\XINT_zapsp_a }% \xint_firstofone{\def\XINT_zapsp_b} {\XINT_zapsp_c }% \def\XINT_zapsp_c#1{% \long\def\XINT_zapsp_c ##1\xint:##2\xint:% {\XINT_zapesp_a{}\empty ##1#1#1\xint_bye\xint:}% }\XINT_zapsp_c{ }% \def\xintZapSpacesB {\romannumeral0\xintzapspacesb }% \long\def\xintzapspacesb #1{\XINT_zapspb_one? #1\xint:\xint:% \xint_bye\xintzapspaces {#1}}% \long\def\XINT_zapspb_one? #1#2% {\xint_gob_til_xint: #1\XINT_zapspb_onlyspaces\xint:% \xint_gob_til_xint: #2\XINT_zapspb_bracedorone\xint:% \xint_bye {#1}}% \def\XINT_zapspb_onlyspaces\xint:% \xint_gob_til_xint:\xint:\XINT_zapspb_bracedorone\xint:% \xint_bye #1\xint_bye\xintzapspaces #2{ }% \long\def\XINT_zapspb_bracedorone\xint:% \xint_bye #1\xint:\xint_bye\xintzapspaces #2{ #1}% \def\xintCSVtoList {\romannumeral0\xintcsvtolist }% \long\def\xintcsvtolist #1{\expandafter\xintApply \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstripped{#1}}}% \def\xintCSVtoListNoExpand {\romannumeral0\xintcsvtolistnoexpand }% \long\def\xintcsvtolistnoexpand #1{\expandafter\xintApply \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstrippednoexpand{#1}}}% \def\xintCSVtoListNonStripped {\romannumeral0\xintcsvtolistnonstripped }% \def\xintCSVtoListNonStrippedNoExpand {\romannumeral0\xintcsvtolistnonstrippednoexpand }% \long\def\xintcsvtolistnonstripped #1% {% \expandafter\XINT_csvtol_loop_a\expandafter {\expandafter}\romannumeral`&&@#1% ,\xint_bye,\xint_bye,\xint_bye,\xint_bye ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% \long\def\xintcsvtolistnonstrippednoexpand #1% {% \XINT_csvtol_loop_a {}#1,\xint_bye,\xint_bye,\xint_bye,\xint_bye ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% \long\def\XINT_csvtol_loop_a #1#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_bye #9\XINT_csvtol_finish_a\xint_bye \XINT_csvtol_loop_b {#1}{{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}% }% \long\def\XINT_csvtol_loop_b #1#2{\XINT_csvtol_loop_a {#1#2}}% \long\def\XINT_csvtol_finish_a\xint_bye\XINT_csvtol_loop_b #1#2#3\Z {% \XINT_csvtol_finish_b #3\R,\R,\R,\R,\R,\R,\R,\Z #2{#1}% }% \def\XINT_csvtol_finish_b #1,#2,#3,#4,#5,#6,#7,#8\Z {% \xint_gob_til_R #1\expandafter\XINT_csvtol_finish_dviii\xint_gob_til_Z #2\expandafter\XINT_csvtol_finish_dvii \xint_gob_til_Z #3\expandafter\XINT_csvtol_finish_dvi \xint_gob_til_Z #4\expandafter\XINT_csvtol_finish_dv \xint_gob_til_Z #5\expandafter\XINT_csvtol_finish_div \xint_gob_til_Z #6\expandafter\XINT_csvtol_finish_diii \xint_gob_til_Z #7\expandafter\XINT_csvtol_finish_dii \xint_gob_til_Z \R\XINT_csvtol_finish_di \Z }% \long\def\XINT_csvtol_finish_dviii #1#2#3#4#5#6#7#8#9{ #9}% \long\def\XINT_csvtol_finish_dvii #1#2#3#4#5#6#7#8#9{ #9{#1}}% \long\def\XINT_csvtol_finish_dvi #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}}% \long\def\XINT_csvtol_finish_dv #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}}% \long\def\XINT_csvtol_finish_div #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}}% \long\def\XINT_csvtol_finish_diii #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}}% \long\def\XINT_csvtol_finish_dii #1#2#3#4#5#6#7#8#9% { #9{#1}{#2}{#3}{#4}{#5}{#6}}% \long\def\XINT_csvtol_finish_di\Z #1#2#3#4#5#6#7#8#9% { #9{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% \def\xintListWithSep {\romannumeral0\xintlistwithsep }% \def\xintListWithSepNoExpand {\romannumeral0\xintlistwithsepnoexpand }% \long\def\xintlistwithsep #1#2% {\expandafter\XINT_lws\expandafter {\romannumeral`&&@#2}{#1}}% \long\def\xintlistwithsepnoexpand #1#2% {% \XINT_lws_loop_a {#1}#2{\xint_bye\XINT_lws_e_vi}% {\xint_bye\XINT_lws_e_v}{\xint_bye\XINT_lws_e_iv}% {\xint_bye\XINT_lws_e_iii}{\xint_bye\XINT_lws_e_ii}% {\xint_bye\XINT_lws_e_i}{\xint_bye\XINT_lws_e}% {\xint_bye\expandafter\space}\xint_bye }% \long\def\XINT_lws #1#2% {% \XINT_lws_loop_a {#2}#1{\xint_bye\XINT_lws_e_vi}% {\xint_bye\XINT_lws_e_v}{\xint_bye\XINT_lws_e_iv}% {\xint_bye\XINT_lws_e_iii}{\xint_bye\XINT_lws_e_ii}% {\xint_bye\XINT_lws_e_i}{\xint_bye\XINT_lws_e}% {\xint_bye\expandafter\space}\xint_bye }% \long\def\XINT_lws_loop_a #1#2#3#4#5#6#7#8#9% {% \xint_bye #9\xint_bye \XINT_lws_loop_b {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}% }% \long\def\XINT_lws_loop_b #1#2#3#4#5#6#7#8#9% {% \XINT_lws_loop_a {#1}{#2#1#3#1#4#1#5#1#6#1#7#1#8#1#9}% }% \long\def\XINT_lws_e_vi\xint_bye\XINT_lws_loop_b #1#2#3#4#5#6#7#8#9\xint_bye { #2#1#3#1#4#1#5#1#6#1#7#1#8}% \long\def\XINT_lws_e_v\xint_bye\XINT_lws_loop_b #1#2#3#4#5#6#7#8\xint_bye { #2#1#3#1#4#1#5#1#6#1#7}% \long\def\XINT_lws_e_iv\xint_bye\XINT_lws_loop_b #1#2#3#4#5#6#7\xint_bye { #2#1#3#1#4#1#5#1#6}% \long\def\XINT_lws_e_iii\xint_bye\XINT_lws_loop_b #1#2#3#4#5#6\xint_bye { #2#1#3#1#4#1#5}% \long\def\XINT_lws_e_ii\xint_bye\XINT_lws_loop_b #1#2#3#4#5\xint_bye { #2#1#3#1#4}% \long\def\XINT_lws_e_i\xint_bye\XINT_lws_loop_b #1#2#3#4\xint_bye { #2#1#3}% \long\def\XINT_lws_e\xint_bye\XINT_lws_loop_b #1#2#3\xint_bye { #2}% \def\xintNthElt {\romannumeral0\xintnthelt }% \def\xintNthEltNoExpand {\romannumeral0\xintntheltnoexpand }% \long\def\xintnthelt #1#2{\expandafter\XINT_nthelt_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xintntheltnoexpand #1{\expandafter\XINT_nthelt_a\the\numexpr #1.}% \def\XINT_nthelt_a #1% {% \xint_UDzerominusfork #1-\XINT_nthelt_zero 0#1\XINT_nthelt_neg 0-{\XINT_nthelt_pos #1}% \krof }% \def\XINT_nthelt_zero #1.{\xintlength }% \long\def\XINT_nthelt_neg #1.#2% {% \expandafter\XINT_nthelt_neg_a\the\numexpr\xint_c_i+\XINT_length_loop #2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye -#1.#2\xint_bye }% \def\XINT_nthelt_neg_a #1% {% \xint_UDzerominusfork #1-\xint_stop_afterbye 0#1\xint_stop_afterbye 0-{}% \krof \expandafter\XINT_nthelt_neg_b \romannumeral\expandafter\XINT_gobble\the\numexpr-\xint_c_i+#1% }% \long\def\XINT_nthelt_neg_b #1#2\xint_bye{ #1}% \long\def\XINT_nthelt_pos #1.#2% {% \expandafter\XINT_nthelt_pos_done \romannumeral0\expandafter\XINT_trim_loop\the\numexpr#1-\xint_c_x.% #2\xint:\xint:\xint:\xint:\xint:% \xint:\xint:\xint:\xint:\xint:% \xint_bye }% \def\XINT_nthelt_pos_done #1{% \long\def\XINT_nthelt_pos_done ##1##2\xint_bye{% \xint_gob_til_xint:##1\expandafter#1\xint_gobble_ii\xint:#1##1}% }\XINT_nthelt_pos_done{ }% \def\xintNthOnePy {\romannumeral0\xintnthonepy }% \def\xintNthOnePyNoExpand {\romannumeral0\xintnthonepynoexpand }% \long\def\xintnthonepy #1#2{\expandafter\XINT_nthonepy_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xintnthonepynoexpand #1{\expandafter\XINT_nthonepy_a\the\numexpr #1.}% \def\XINT_nthonepy_a #1% {% \xint_UDsignfork #1\XINT_nthonepy_neg -{\XINT_nthonepy_nonneg #1}% \krof }% \long\def\XINT_nthonepy_neg #1.#2% {% \expandafter\XINT_nthonepy_neg_a\the\numexpr\xint_c_i+\XINT_length_loop #2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye -#1.#2\xint_bye }% \def\XINT_nthonepy_neg_a #1% {% \xint_UDzerominusfork #1-\xint_stop_afterbye 0#1\xint_stop_afterbye 0-{}% \krof \expandafter\XINT_nthonepy_neg_b \romannumeral\expandafter\XINT_gobble\the\numexpr-\xint_c_i+#1% }% \long\def\XINT_nthonepy_neg_b #1#2\xint_bye{{#1}}% \long\def\XINT_nthonepy_nonneg #1.#2% {% \expandafter\XINT_nthonepy_nonneg_done \romannumeral0\expandafter\XINT_trim_loop\the\numexpr#1-\xint_c_ix.% #2\xint:\xint:\xint:\xint:\xint:% \xint:\xint:\xint:\xint:\xint:% \xint_bye }% \def\XINT_nthonepy_nonneg_done #1{% \long\def\XINT_nthonepy_nonneg_done ##1##2\xint_bye{% \xint_gob_til_xint:##1\expandafter#1\xint_gobble_ii\xint:{##1}}% }\XINT_nthonepy_nonneg_done{ }% \def\xintKeep {\romannumeral0\xintkeep }% \def\xintKeepNoExpand {\romannumeral0\xintkeepnoexpand }% \long\def\xintkeep #1#2{\expandafter\XINT_keep_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xintkeepnoexpand #1{\expandafter\XINT_keep_a\the\numexpr #1.}% \def\XINT_keep_a #1% {% \xint_UDzerominusfork #1-\XINT_keep_keepnone 0#1\XINT_keep_neg 0-{\XINT_keep_pos #1}% \krof }% \long\def\XINT_keep_keepnone .#1{ }% \long\def\XINT_keep_neg #1.#2% {% \expandafter\XINT_keep_neg_a\the\numexpr #1-\numexpr\XINT_length_loop #2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye.#2% }% \def\XINT_keep_neg_a #1% {% \xint_UDsignfork #1{\expandafter\space\romannumeral\XINT_gobble}% -\XINT_keep_keepall \krof }% \def\XINT_keep_keepall #1.{ }% \long\def\XINT_keep_pos #1.#2% {% \expandafter\XINT_keep_loop \the\numexpr#1-\XINT_lengthupto_loop #1.#2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_vii\xint_c_vi\xint_c_v\xint_c_iv \xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye.% -\xint_c_viii.{}#2\xint_bye% }% \def\XINT_keep_loop #1#2.% {% \xint_gob_til_minus#1\XINT_keep_loop_end-% \expandafter\XINT_keep_loop \the\numexpr#1#2-\xint_c_viii\expandafter.\XINT_keep_loop_pickeight }% \long\def\XINT_keep_loop_pickeight #1#2#3#4#5#6#7#8#9{{#1{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}}% \def\XINT_keep_loop_end-\expandafter\XINT_keep_loop \the\numexpr-#1-\xint_c_viii\expandafter.\XINT_keep_loop_pickeight {\csname XINT_keep_end#1\endcsname}% \long\expandafter\def\csname XINT_keep_end1\endcsname #1#2#3#4#5#6#7#8#9\xint_bye { #1{#2}{#3}{#4}{#5}{#6}{#7}{#8}}% \long\expandafter\def\csname XINT_keep_end2\endcsname #1#2#3#4#5#6#7#8\xint_bye { #1{#2}{#3}{#4}{#5}{#6}{#7}}% \long\expandafter\def\csname XINT_keep_end3\endcsname #1#2#3#4#5#6#7\xint_bye { #1{#2}{#3}{#4}{#5}{#6}}% \long\expandafter\def\csname XINT_keep_end4\endcsname #1#2#3#4#5#6\xint_bye { #1{#2}{#3}{#4}{#5}}% \long\expandafter\def\csname XINT_keep_end5\endcsname #1#2#3#4#5\xint_bye { #1{#2}{#3}{#4}}% \long\expandafter\def\csname XINT_keep_end6\endcsname #1#2#3#4\xint_bye { #1{#2}{#3}}% \long\expandafter\def\csname XINT_keep_end7\endcsname #1#2#3\xint_bye { #1{#2}}% \long\expandafter\def\csname XINT_keep_end8\endcsname #1#2\xint_bye { #1}% \def\xintKeepUnbraced {\romannumeral0\xintkeepunbraced }% \def\xintKeepUnbracedNoExpand {\romannumeral0\xintkeepunbracednoexpand }% \long\def\xintkeepunbraced #1#2% {\expandafter\XINT_keepunbr_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xintkeepunbracednoexpand #1% {\expandafter\XINT_keepunbr_a\the\numexpr #1.}% \def\XINT_keepunbr_a #1% {% \xint_UDzerominusfork #1-\XINT_keep_keepnone 0#1\XINT_keep_neg 0-{\XINT_keepunbr_pos #1}% \krof }% \long\def\XINT_keepunbr_pos #1.#2% {% \expandafter\XINT_keepunbr_loop \the\numexpr#1-\XINT_lengthupto_loop #1.#2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_vii\xint_c_vi\xint_c_v\xint_c_iv \xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye.% -\xint_c_viii.{}#2\xint_bye% }% \def\XINT_keepunbr_loop #1#2.% {% \xint_gob_til_minus#1\XINT_keepunbr_loop_end-% \expandafter\XINT_keepunbr_loop \the\numexpr#1#2-\xint_c_viii\expandafter.\XINT_keepunbr_loop_pickeight }% \long\def\XINT_keepunbr_loop_pickeight #1#2#3#4#5#6#7#8#9{{#1#2#3#4#5#6#7#8#9}}% \def\XINT_keepunbr_loop_end-\expandafter\XINT_keepunbr_loop \the\numexpr-#1-\xint_c_viii\expandafter.\XINT_keepunbr_loop_pickeight {\csname XINT_keepunbr_end#1\endcsname}% \long\expandafter\def\csname XINT_keepunbr_end1\endcsname #1#2#3#4#5#6#7#8#9\xint_bye { #1#2#3#4#5#6#7#8}% \long\expandafter\def\csname XINT_keepunbr_end2\endcsname #1#2#3#4#5#6#7#8\xint_bye { #1#2#3#4#5#6#7}% \long\expandafter\def\csname XINT_keepunbr_end3\endcsname #1#2#3#4#5#6#7\xint_bye { #1#2#3#4#5#6}% \long\expandafter\def\csname XINT_keepunbr_end4\endcsname #1#2#3#4#5#6\xint_bye { #1#2#3#4#5}% \long\expandafter\def\csname XINT_keepunbr_end5\endcsname #1#2#3#4#5\xint_bye { #1#2#3#4}% \long\expandafter\def\csname XINT_keepunbr_end6\endcsname #1#2#3#4\xint_bye { #1#2#3}% \long\expandafter\def\csname XINT_keepunbr_end7\endcsname #1#2#3\xint_bye { #1#2}% \long\expandafter\def\csname XINT_keepunbr_end8\endcsname #1#2\xint_bye { #1}% \def\xintTrim {\romannumeral0\xinttrim }% \def\xintTrimNoExpand {\romannumeral0\xinttrimnoexpand }% \long\def\xinttrim #1#2{\expandafter\XINT_trim_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xinttrimnoexpand #1{\expandafter\XINT_trim_a\the\numexpr #1.}% \def\XINT_trim_a #1% {% \xint_UDzerominusfork #1-\XINT_trim_trimnone 0#1\XINT_trim_neg 0-{\XINT_trim_pos #1}% \krof }% \long\def\XINT_trim_trimnone .#1{ #1}% \long\def\XINT_trim_neg #1.#2% {% \expandafter\XINT_trim_neg_a\the\numexpr #1-\numexpr\XINT_length_loop #2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye .{}#2\xint_bye }% \def\XINT_trim_neg_a #1% {% \xint_UDsignfork #1{\expandafter\XINT_keep_loop\the\numexpr-\xint_c_viii+}% -\XINT_trim_trimall \krof }% \def\XINT_trim_trimall#1{% \def\XINT_trim_trimall {\expandafter#1\xint_bye}% }\XINT_trim_trimall{ }% \long\def\XINT_trim_pos #1.#2% {% \expandafter\XINT_trim_pos_done\expandafter\space \romannumeral0\expandafter\XINT_trim_loop\the\numexpr#1-\xint_c_ix.% #2\xint:\xint:\xint:\xint:\xint:% \xint:\xint:\xint:\xint:\xint:% \xint_bye }% \def\XINT_trim_loop #1#2.% {% \xint_gob_til_minus#1\XINT_trim_finish-% \expandafter\XINT_trim_loop\the\numexpr#1#2\XINT_trim_loop_trimnine }% \long\def\XINT_trim_loop_trimnine #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint: #9\XINT_trim_toofew\xint:-\xint_c_ix.% }% \def\XINT_trim_toofew\xint:{*\xint_c_}% \def\XINT_trim_finish#1{% \def\XINT_trim_finish-% \expandafter\XINT_trim_loop\the\numexpr-##1\XINT_trim_loop_trimnine {% \expandafter\expandafter\expandafter#1% \csname xint_gobble_\romannumeral\numexpr\xint_c_ix-##1\endcsname }}\XINT_trim_finish{ }% \long\def\XINT_trim_pos_done #1\xint:#2\xint_bye {#1}% \def\xintTrimUnbraced {\romannumeral0\xinttrimunbraced }% \def\xintTrimUnbracedNoExpand {\romannumeral0\xinttrimunbracednoexpand }% \long\def\xinttrimunbraced #1#2% {\expandafter\XINT_trimunbr_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xinttrimunbracednoexpand #1% {\expandafter\XINT_trimunbr_a\the\numexpr #1.}% \def\XINT_trimunbr_a #1% {% \xint_UDzerominusfork #1-\XINT_trim_trimnone 0#1\XINT_trimunbr_neg 0-{\XINT_trim_pos #1}% \krof }% \long\def\XINT_trimunbr_neg #1.#2% {% \expandafter\XINT_trimunbr_neg_a\the\numexpr #1-\numexpr\XINT_length_loop #2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye .{}#2\xint_bye }% \def\XINT_trimunbr_neg_a #1% {% \xint_UDsignfork #1{\expandafter\XINT_keepunbr_loop\the\numexpr-\xint_c_viii+}% -\XINT_trim_trimall \krof }% \def\xintApply {\romannumeral0\xintapply }% \def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }% \long\def\xintapply #1#2% {% \expandafter\XINT_apply\expandafter {\romannumeral`&&@#2}% {#1}% }% \long\def\XINT_apply #1#2{\XINT_apply_loop_a {}{#2}#1\xint_bye }% \long\def\xintapplynoexpand #1#2{\XINT_apply_loop_a {}{#1}#2\xint_bye }% \long\def\XINT_apply_loop_a #1#2#3% {% \xint_bye #3\XINT_apply_end\xint_bye \expandafter \XINT_apply_loop_b \expandafter {\romannumeral`&&@#2{#3}}{#1}{#2}% }% \long\def\XINT_apply_loop_b #1#2{\XINT_apply_loop_a {#2{#1}}}% \long\def\XINT_apply_end\xint_bye\expandafter\XINT_apply_loop_b \expandafter #1#2#3{ #2}% \def\xintApplyUnbraced {\romannumeral0\xintapplyunbraced }% \def\xintApplyUnbracedNoExpand {\romannumeral0\xintapplyunbracednoexpand }% \long\def\xintapplyunbraced #1#2% {% \expandafter\XINT_applyunbr\expandafter {\romannumeral`&&@#2}% {#1}% }% \long\def\XINT_applyunbr #1#2{\XINT_applyunbr_loop_a {}{#2}#1\xint_bye }% \long\def\xintapplyunbracednoexpand #1#2% {\XINT_applyunbr_loop_a {}{#1}#2\xint_bye }% \long\def\XINT_applyunbr_loop_a #1#2#3% {% \xint_bye #3\XINT_applyunbr_end\xint_bye \expandafter\XINT_applyunbr_loop_b \expandafter {\romannumeral`&&@#2{#3}}{#1}{#2}% }% \long\def\XINT_applyunbr_loop_b #1#2{\XINT_applyunbr_loop_a {#2#1}}% \long\def\XINT_applyunbr_end\xint_bye\expandafter\XINT_applyunbr_loop_b \expandafter #1#2#3{ #2}% \def\xintZip #1{\expanded\XINT_zip_A#1\xint_bye\xint_bye}% \def\XINT_zip_A#1% {% \xint_bye#1{\expandafter}\xint_bye \expanded{\unexpanded{\XINT_ziptwo_A #1\xint_bye\xint_bye\xint_bye\xint_bye\xint:}\expandafter}% \expanded\XINT_zip_a }% \def\XINT_zip_a#1% {% \xint_bye#1\XINT_zip_terminator\xint_bye \expanded{\unexpanded{\XINT_ziptwo_a #1\xint_bye\xint_bye\xint_bye\xint_bye\xint:}\expandafter}% \expanded\XINT_zip_a }% \def\XINT_zip_terminator\xint_bye#1\xint_bye{{}\empty\empty\empty\empty\xint:}% \def\XINT_ziptwo_a #1#2#3#4#5\xint:#6#7#8#9% {% \bgroup \xint_bye #1\XINT_ziptwo_e \xint_bye \xint_bye #6\XINT_ziptwo_e \xint_bye {{#1}#6}% \xint_bye #2\XINT_ziptwo_e \xint_bye \xint_bye #7\XINT_ziptwo_e \xint_bye {{#2}#7}% \xint_bye #3\XINT_ziptwo_e \xint_bye \xint_bye #8\XINT_ziptwo_e \xint_bye {{#3}#8}% \xint_bye #4\XINT_ziptwo_e \xint_bye \xint_bye #9\XINT_ziptwo_e \xint_bye {{#4}#9}% \ifx \empty#6\expandafter\XINT_zipone_a\fi \XINT_ziptwo_b #5\xint: }% \def\XINT_zipone_a\XINT_ziptwo_b{\XINT_zipone_b}% \def\XINT_ziptwo_b #1#2#3#4#5\xint:#6#7#8#9% {% \xint_bye #1\XINT_ziptwo_e \xint_bye \xint_bye #6\XINT_ziptwo_e \xint_bye {{#1}#6}% \xint_bye #2\XINT_ziptwo_e \xint_bye \xint_bye #7\XINT_ziptwo_e \xint_bye {{#2}#7}% \xint_bye #3\XINT_ziptwo_e \xint_bye \xint_bye #8\XINT_ziptwo_e \xint_bye {{#3}#8}% \xint_bye #4\XINT_ziptwo_e \xint_bye \xint_bye #9\XINT_ziptwo_e \xint_bye {{#4}#9}% \XINT_ziptwo_b #5\xint: }% \def\XINT_ziptwo_e #1\XINT_ziptwo_b #2\xint:#3\xint: {\iffalse{\fi}\xint_bye\xint_bye\xint_bye\xint_bye\xint:}% \def\XINT_zipone_b #1#2#3#4% {% \xint_bye #1\XINT_zipone_e \xint_bye {{#1}}% \xint_bye #2\XINT_zipone_e \xint_bye {{#2}}% \xint_bye #3\XINT_zipone_e \xint_bye {{#3}}% \xint_bye #4\XINT_zipone_e \xint_bye {{#4}}% \XINT_zipone_b }% \def\XINT_zipone_e #1\XINT_zipone_b #2\xint: {\iffalse{\fi}\xint_bye\xint_bye\xint_bye\xint_bye\empty}% \def\XINT_ziptwo_A #1#2#3#4#5\xint:#6#7#8#9% {% \bgroup \xint_bye #1\XINT_ziptwo_end \xint_bye \xint_bye #6\XINT_ziptwo_end \xint_bye {{#1}#6}% \xint_bye #2\XINT_ziptwo_end \xint_bye \xint_bye #7\XINT_ziptwo_end \xint_bye {{#2}#7}% \xint_bye #3\XINT_ziptwo_end \xint_bye \xint_bye #8\XINT_ziptwo_end \xint_bye {{#3}#8}% \xint_bye #4\XINT_ziptwo_end \xint_bye \xint_bye #9\XINT_ziptwo_end \xint_bye {{#4}#9}% \ifx \empty#6\expandafter\XINT_zipone_A\fi \XINT_ziptwo_B #5\xint: }% \def\XINT_zipone_A\XINT_ziptwo_B{\XINT_zipone_B}% \def\XINT_ziptwo_B #1#2#3#4#5\xint:#6#7#8#9% {% \xint_bye #1\XINT_ziptwo_end \xint_bye \xint_bye #6\XINT_ziptwo_end \xint_bye {{#1}#6}% \xint_bye #2\XINT_ziptwo_end \xint_bye \xint_bye #7\XINT_ziptwo_end \xint_bye {{#2}#7}% \xint_bye #3\XINT_ziptwo_end \xint_bye \xint_bye #8\XINT_ziptwo_end \xint_bye {{#3}#8}% \xint_bye #4\XINT_ziptwo_end \xint_bye \xint_bye #9\XINT_ziptwo_end \xint_bye {{#4}#9}% \XINT_ziptwo_B #5\xint: }% \def\XINT_ziptwo_end #1\XINT_ziptwo_B #2\xint:#3\xint:{\iffalse{\fi}}% \def\XINT_zipone_B #1#2#3#4% {% \xint_bye #1\XINT_zipone_end \xint_bye {{#1}}% \xint_bye #2\XINT_zipone_end \xint_bye {{#2}}% \xint_bye #3\XINT_zipone_end \xint_bye {{#3}}% \xint_bye #4\XINT_zipone_end \xint_bye {{#4}}% \XINT_zipone_B }% \def\XINT_zipone_end #1\XINT_zipone_B #2\xint:#3\xint:{\iffalse{\fi}}% \def\xintSeq {\romannumeral0\xintseq }% \def\xintseq #1{\XINT_seq_chkopt #1\xint_bye }% \def\XINT_seq_chkopt #1% {% \ifx [#1\expandafter\XINT_seq_opt \else\expandafter\XINT_seq_noopt \fi #1% }% \def\XINT_seq_noopt #1\xint_bye #2% {% \expandafter\XINT_seq\expandafter {\the\numexpr#1\expandafter}\expandafter{\the\numexpr #2}% }% \def\XINT_seq #1#2% {% \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\xint_stop_atfirstoftwo \or \expandafter\XINT_seq_p \else \expandafter\XINT_seq_n \fi {#2}{#1}% }% \def\XINT_seq_p #1#2% {% \ifnum #1>#2 \expandafter\expandafter\expandafter\XINT_seq_p \else \expandafter\XINT_seq_e \fi \expandafter{\the\numexpr #1-\xint_c_i}{#2}{#1}% }% \def\XINT_seq_n #1#2% {% \ifnum #1<#2 \expandafter\expandafter\expandafter\XINT_seq_n \else \expandafter\XINT_seq_e \fi \expandafter{\the\numexpr #1+\xint_c_i}{#2}{#1}% }% \def\XINT_seq_e #1#2#3{ }% \def\XINT_seq_opt [\xint_bye #1]#2#3% {% \expandafter\XINT_seqo\expandafter {\the\numexpr #2\expandafter}\expandafter {\the\numexpr #3\expandafter}\expandafter {\the\numexpr #1}% }% \def\XINT_seqo #1#2% {% \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\XINT_seqo_a \or \expandafter\XINT_seqo_pa \else \expandafter\XINT_seqo_na \fi {#1}{#2}% }% \def\XINT_seqo_a #1#2#3{ {#1}}% \def\XINT_seqo_o #1#2#3#4{ #4}% \def\XINT_seqo_pa #1#2#3% {% \ifcase\ifnum #3=\xint_c_ 0\else\ifnum #3>\xint_c_ 1\else -1\fi\fi\space \expandafter\XINT_seqo_o \or \expandafter\XINT_seqo_pb \else \xint_afterfi{\expandafter\space\xint_gobble_iv}% \fi {#1}{#2}{#3}{{#1}}% }% \def\XINT_seqo_pb #1#2#3% {% \expandafter\XINT_seqo_pc\expandafter{\the\numexpr #1+#3}{#2}{#3}% }% \def\XINT_seqo_pc #1#2% {% \ifnum #1>#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_pd \fi {#1}{#2}% }% \def\XINT_seqo_pd #1#2#3#4{\XINT_seqo_pb {#1}{#2}{#3}{#4{#1}}}% \def\XINT_seqo_na #1#2#3% {% \ifcase\ifnum #3=\xint_c_ 0\else\ifnum #3>\xint_c_ 1\else -1\fi\fi\space \expandafter\XINT_seqo_o \or \xint_afterfi{\expandafter\space\xint_gobble_iv}% \else \expandafter\XINT_seqo_nb \fi {#1}{#2}{#3}{{#1}}% }% \def\XINT_seqo_nb #1#2#3% {% \expandafter\XINT_seqo_nc\expandafter{\the\numexpr #1+#3}{#2}{#3}% }% \def\XINT_seqo_nc #1#2% {% \ifnum #1<#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_nd \fi {#1}{#2}% }% \def\XINT_seqo_nd #1#2#3#4{\XINT_seqo_nb {#1}{#2}{#3}{#4{#1}}}% \long\def\xintloop #1#2\repeat {#1#2\xintloop_again\fi\xint_gobble_i {#1#2}}% \long\def\xintloop_again\fi\xint_gobble_i #1{\fi #1\xintloop_again\fi\xint_gobble_i {#1}}% \long\def\xintbreakloop #1\xintloop_again\fi\xint_gobble_i #2{}% \long\def\xintbreakloopanddo #1#2\xintloop_again\fi\xint_gobble_i #3{#1}% \long\def\xintloopskiptonext #1\xintloop_again\fi\xint_gobble_i #2{% #2\xintloop_again\fi\xint_gobble_i {#2}}% \def\xintiloop [#1+#2]{% \expandafter\xintiloop_a\the\numexpr #1\expandafter.\the\numexpr #2.}% \long\def\xintiloop_a #1.#2.#3#4\repeat{% #3#4\xintiloop_again\fi\xint_gobble_iii {#1}{#2}{#3#4}}% \def\xintiloop_again\fi\xint_gobble_iii #1#2{% \fi\expandafter\xintiloop_again_b\the\numexpr#1+#2.#2.}% \long\def\xintiloop_again_b #1.#2.#3{% #3\xintiloop_again\fi\xint_gobble_iii {#1}{#2}{#3}}% \long\def\xintbreakiloop #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{}% \long\def\xintbreakiloopanddo #1.#2\xintiloop_again\fi\xint_gobble_iii #3#4#5{#1}% \long\def\xintiloopindex #1\xintiloop_again\fi\xint_gobble_iii #2% {#2#1\xintiloop_again\fi\xint_gobble_iii {#2}}% \long\def\xintbracediloopindex #1\xintiloop_again\fi\xint_gobble_iii #2% {{#2}#1\xintiloop_again\fi\xint_gobble_iii {#2}}% \long\def\xintouteriloopindex #1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii #3% {#3#1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii {#3}}% \long\def\xintbracedouteriloopindex #1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii #3% {{#3}#1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii {#3}}% \long\def\xintiloopskiptonext #1\xintiloop_again\fi\xint_gobble_iii #2#3{% \expandafter\xintiloop_again_b \the\numexpr#2+#3.#3.}% \long\def\xintiloopskipandredo #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{% #4\xintiloop_again\fi\xint_gobble_iii {#2}{#3}{#4}}% \def\XINT_xflet #1% {% \def\XINT_xflet_macro {#1}\XINT_xflet_zapsp }% \def\XINT_xflet_zapsp {% \expandafter\futurelet\expandafter\XINT_token \expandafter\XINT_xflet_sp?\romannumeral`&&@% }% \def\XINT_xflet_sp? {% \ifx\XINT_token\XINT_sptoken \expandafter\XINT_xflet_zapsp \else\expandafter\XINT_xflet_zapspB \fi }% \def\XINT_xflet_zapspB {% \expandafter\futurelet\expandafter\XINT_tokenB \expandafter\XINT_xflet_spB?\romannumeral`&&@% }% \def\XINT_xflet_spB? {% \ifx\XINT_tokenB\XINT_sptoken \expandafter\XINT_xflet_zapspB \else\expandafter\XINT_xflet_eq? \fi }% \def\XINT_xflet_eq? {% \ifx\XINT_token\XINT_tokenB \expandafter\XINT_xflet_macro \else\expandafter\XINT_xflet_zapsp \fi }% \catcode`Z 3 \long\def\xintApplyInline #1#2% {% \long\expandafter\def\expandafter\XINT_inline_macro \expandafter ##\expandafter 1\expandafter {#1{##1}}% \XINT_xflet\XINT_inline_b #2Z% this Z has catcode 3 }% \def\XINT_inline_b {% \ifx\XINT_token Z\expandafter\xint_gobble_i \else\expandafter\XINT_inline_d\fi }% \long\def\XINT_inline_d #1% {% \long\def\XINT_item{{#1}}\XINT_xflet\XINT_inline_e }% \def\XINT_inline_e {% \ifx\XINT_token Z\expandafter\XINT_inline_w \else\expandafter\XINT_inline_f\fi }% \def\XINT_inline_f {% \expandafter\XINT_inline_g\expandafter{\XINT_inline_macro {##1}}% }% \long\def\XINT_inline_g #1% {% \expandafter\XINT_inline_macro\XINT_item \long\def\XINT_inline_macro ##1{#1}\XINT_inline_d }% \def\XINT_inline_w #1% {% \expandafter\XINT_inline_macro\XINT_item }% \def\XINT_tmpa #1#2{\ifnum #2<#1 \xint_afterfi {{#########2}}\fi}% \def\XINT_tmpb #1#2{\ifnum #1<#2 \xint_afterfi {{#########2}}\fi}% \def\XINT_tmpc #1% {% \expandafter\edef \csname XINT_for_left#1\endcsname {\xintApplyUnbraced {\XINT_tmpa #1}{123456789}}% \expandafter\edef \csname XINT_for_right#1\endcsname {\xintApplyUnbraced {\XINT_tmpb #1}{123456789}}% }% \xintApplyInline \XINT_tmpc {123456789}% \long\def\xintBreakFor #1Z{}% \long\def\xintBreakForAndDo #1#2Z{#1}% \def\xintFor {\let\xintifForFirst\xint_firstoftwo \let\xintifForLast\xint_secondoftwo \futurelet\XINT_token\XINT_for_ifstar }% \def\XINT_for_ifstar {\ifx\XINT_token*\expandafter\XINT_forx \else\expandafter\XINT_for \fi }% \catcode`U 3 % with numexpr \catcode`V 3 % with xintfrac.sty (xint.sty not enough) \catcode`D 3 % with dimexpr \def\XINT_flet_zapsp {% \futurelet\XINT_token\XINT_flet_sp? }% \def\XINT_flet_sp? {% \ifx\XINT_token\XINT_sptoken \xint_afterfi{\expandafter\XINT_flet_zapsp\romannumeral0}% \else\expandafter\XINT_flet_macro \fi }% \long\def\XINT_for #1#2in#3#4#5% {% \expandafter\XINT_toks\expandafter {\expandafter\XINT_for_d\the\numexpr #2\relax {#5}}% \def\XINT_flet_macro {\expandafter\XINT_for_forever?\space}% \expandafter\XINT_flet_zapsp #3Z% }% \def\XINT_for_forever? #1Z% {% \ifx\XINT_token U\XINT_to_forever\fi \ifx\XINT_token V\XINT_to_forever\fi \ifx\XINT_token D\XINT_to_forever\fi \expandafter\the\expandafter\XINT_toks\romannumeral0\xintcsvtolist {#1}Z% }% \def\XINT_to_forever\fi #1\xintcsvtolist #2{\fi \XINT_forever #2}% \long\def\XINT_forx *#1#2in#3#4#5% {% \expandafter\XINT_toks\expandafter {\expandafter\XINT_forx_d\the\numexpr #2\relax {#5}}% \XINT_xflet\XINT_forx_forever? #3Z% }% \def\XINT_forx_forever? {% \ifx\XINT_token U\XINT_to_forxever\fi \ifx\XINT_token V\XINT_to_forxever\fi \ifx\XINT_token D\XINT_to_forxever\fi \XINT_forx_empty? }% \def\XINT_to_forxever\fi #1\XINT_forx_empty? {\fi \XINT_forever }% \catcode`U 11 \catcode`D 11 \catcode`V 11 \def\XINT_forx_empty? {% \ifx\XINT_token Z\expandafter\xintBreakFor\fi \the\XINT_toks }% \long\def\XINT_for_d #1#2#3% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks {{#3}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo \let\xintifForLast\xint_secondoftwo\XINT_for_d #1{#2}}% \futurelet\XINT_token\XINT_for_last? }% \long\def\XINT_forx_d #1#2#3% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks {{#3}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo \let\xintifForLast\xint_secondoftwo\XINT_forx_d #1{#2}}% \XINT_xflet\XINT_for_last? }% \def\XINT_for_last? {% \ifx\XINT_token Z\expandafter\XINT_for_last?yes\fi \the\XINT_toks }% \def\XINT_for_last?yes {% \let\xintifForLast\xint_firstoftwo \xintBreakForAndDo{\XINT_x\xint_gobble_i Z}% }% \catcode`U 3 \catcode`D 3 \catcode`V 3 \let\xintegers U% \let\xintintegers U% \let\xintdimensions D% \let\xintrationals V% \def\XINT_forever #1% {% \expandafter\XINT_forever_a \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi a\expandafter\endcsname \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi i\expandafter\endcsname \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi \endcsname }% \catcode`U 11 \catcode`D 11 \catcode`V 11 \def\XINT_?expr_Ua #1#2% {\expandafter{\expandafter\numexpr\the\numexpr #1\expandafter\relax \expandafter\relax\expandafter}% \expandafter{\the\numexpr #2}}% \def\XINT_?expr_Da #1#2% {\expandafter{\expandafter\dimexpr\number\dimexpr #1\expandafter\relax \expandafter s\expandafter p\expandafter\relax\expandafter}% \expandafter{\number\dimexpr #2}}% \catcode`Z 11 \def\XINT_?expr_Va #1#2% {% \expandafter\XINT_?expr_Vb\expandafter {\romannumeral`&&@\xintrawwithzeros{\xintZapSpacesB{#2}}}% {\romannumeral`&&@\xintrawwithzeros{\xintZapSpacesB{#1}}}% }% \catcode`Z 3 \def\XINT_?expr_Vb #1#2{\expandafter\XINT_?expr_Vc #2.#1.}% \def\XINT_?expr_Vc #1/#2.#3/#4.% {% \xintifEq {#2}{#4}% {\XINT_?expr_Vf {#3}{#1}{#2}}% {\expandafter\XINT_?expr_Vd\expandafter {\romannumeral0\xintiimul {#2}{#4}}% {\romannumeral0\xintiimul {#1}{#4}}% {\romannumeral0\xintiimul {#2}{#3}}% }% }% \def\XINT_?expr_Vd #1#2#3{\expandafter\XINT_?expr_Ve\expandafter {#2}{#3}{#1}}% \def\XINT_?expr_Ve #1#2{\expandafter\XINT_?expr_Vf\expandafter {#2}{#1}}% \def\XINT_?expr_Vf #1#2#3{{#2/#3}{{0}{#1}{#2}{#3}}}% \def\XINT_?expr_Ui {{\numexpr 1\relax}{1}}% \def\XINT_?expr_Di {{\dimexpr 0pt\relax}{65536}}% \def\XINT_?expr_Vi {{1/1}{0111}}% \def\XINT_?expr_U #1#2% {\expandafter{\expandafter\numexpr\the\numexpr #1+#2\relax\relax}{#2}}% \def\XINT_?expr_D #1#2% {\expandafter{\expandafter\dimexpr\the\numexpr #1+#2\relax sp\relax}{#2}}% \def\XINT_?expr_V #1#2{\XINT_?expr_Vx #2}% \def\XINT_?expr_Vx #1#2% {% \expandafter\XINT_?expr_Vy\expandafter {\romannumeral0\xintiiadd {#1}{#2}}{#2}% }% \def\XINT_?expr_Vy #1#2#3#4% {% \expandafter{\romannumeral0\xintiiadd {#3}{#1}/#4}{{#1}{#2}{#3}{#4}}% }% \def\XINT_forever_a #1#2#3#4% {% \ifx #4[\expandafter\XINT_forever_opt_a \else\expandafter\XINT_forever_b \fi #1#2#3#4% }% \def\XINT_forever_b #1#2#3Z{\expandafter\XINT_forever_c\the\XINT_toks #2#3}% \long\def\XINT_forever_c #1#2#3#4#5% {\expandafter\XINT_forever_d\expandafter #2#4#5{#3}Z}% \def\XINT_forever_opt_a #1#2#3[#4+#5]#6Z% {% \expandafter\expandafter\expandafter \XINT_forever_opt_c\expandafter\the\expandafter\XINT_toks \romannumeral`&&@#1{#4}{#5}#3% }% \long\def\XINT_forever_opt_c #1#2#3#4#5#6{\XINT_forever_d #2{#4}{#5}#6{#3}Z}% \long\def\XINT_forever_d #1#2#3#4#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#5}% \XINT_toks {{#2}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_x \let\xintifForFirst\xint_secondoftwo \let\xintifForLast\xint_secondoftwo \expandafter\XINT_forever_d\expandafter #1\romannumeral`&&@#4{#2}{#3}#4{#5}% }% \catcode`j 3 \long\def\xintForpair #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \let\xintifForLast\xint_secondoftwo \XINT_toks {\XINT_forpair_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forpair_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_i\endcsname}% \ifx #5j\expandafter\XINT_for_last?yes\fi \XINT_x \let\xintifForFirst\xint_secondoftwo \let\xintifForLast\xint_secondoftwo \XINT_forpair_d #1{#2}% }% \long\def\xintForthree #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \let\xintifForLast\xint_secondoftwo \XINT_toks {\XINT_forthree_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forthree_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_ii\endcsname}% \ifx #5j\expandafter\XINT_for_last?yes\fi \XINT_x \let\xintifForFirst\xint_secondoftwo \let\xintifForLast\xint_secondoftwo \XINT_forthree_d #1{#2}% }% \long\def\xintForfour #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \let\xintifForLast\xint_secondoftwo \XINT_toks {\XINT_forfour_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forfour_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_iii\endcsname}% \ifx #5j\expandafter\XINT_for_last?yes\fi \XINT_x \let\xintifForFirst\xint_secondoftwo \let\xintifForLast\xint_secondoftwo \XINT_forfour_d #1{#2}% }% \catcode`Z 11 \catcode`j 11 \def\xintAssign{\def\XINT_flet_macro {\XINT_assign_fork}\XINT_flet_zapsp }% \def\XINT_assign_fork {% \let\XINT_assign_def\def \ifx\XINT_token[\expandafter\XINT_assign_opt \else\expandafter\XINT_assign_a \fi }% \def\XINT_assign_opt [#1]% {% \ifcsname #1def\endcsname \expandafter\let\expandafter\XINT_assign_def \csname #1def\endcsname \else \expandafter\let\expandafter\XINT_assign_def \csname xint#1def\endcsname \fi \XINT_assign_a }% \long\def\XINT_assign_a #1\to {% \def\XINT_flet_macro{\XINT_assign_b}% \expandafter\XINT_flet_zapsp\romannumeral`&&@#1\xint:\to }% \long\def\XINT_assign_b {% \ifx\XINT_token\bgroup \expandafter\XINT_assign_c \else\expandafter\XINT_assign_f \fi }% \long\def\XINT_assign_f #1\xint:\to #2% {% \XINT_assign_def #2{#1}% }% \long\def\XINT_assign_c #1% {% \def\xint_temp {#1}% \ifx\xint_temp\xint_bracedstopper \expandafter\XINT_assign_e \else \expandafter\XINT_assign_d \fi }% \long\def\XINT_assign_d #1\to #2% {% \expandafter\XINT_assign_def\expandafter #2\expandafter{\xint_temp}% \XINT_assign_c #1\to }% \def\XINT_assign_e #1\to {}% \def\xintRelaxArray #1% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax}% \escapechar -1 \expandafter\def\expandafter\xint_arrayname\expandafter {\string #1}% \XINT_restoreescapechar \xintiloop [\csname\xint_arrayname 0\endcsname+-1] \global \expandafter\let\csname\xint_arrayname\xintiloopindex\endcsname\relax \ifnum \xintiloopindex > \xint_c_ \repeat \global\expandafter\let\csname\xint_arrayname 00\endcsname\relax \global\let #1\relax }% \def\xintAssignArray{\def\XINT_flet_macro {\XINT_assignarray_fork}% \XINT_flet_zapsp }% \def\XINT_assignarray_fork {% \let\XINT_assignarray_def\def \ifx\XINT_token[\expandafter\XINT_assignarray_opt \else\expandafter\XINT_assignarray \fi }% \def\XINT_assignarray_opt [#1]% {% \ifcsname #1def\endcsname \expandafter\let\expandafter\XINT_assignarray_def \csname #1def\endcsname \else \expandafter\let\expandafter\XINT_assignarray_def \csname xint#1def\endcsname \fi \XINT_assignarray }% \long\def\XINT_assignarray #1\to #2% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax }% \escapechar -1 \expandafter\def\expandafter\xint_arrayname\expandafter {\string #2}% \XINT_restoreescapechar \def\xint_itemcount {0}% \expandafter\XINT_assignarray_loop \romannumeral`&&@#1\xint: \csname\xint_arrayname 00\expandafter\endcsname \csname\xint_arrayname 0\expandafter\endcsname \expandafter {\xint_arrayname}#2% }% \long\def\XINT_assignarray_loop #1% {% \def\xint_temp {#1}% \ifx\xint_temp\xint_bracedstopper \expandafter\def\csname\xint_arrayname 0\expandafter\endcsname \expandafter{\the\numexpr\xint_itemcount}% \expandafter\expandafter\expandafter\XINT_assignarray_end \else \expandafter\def\expandafter\xint_itemcount\expandafter {\the\numexpr\xint_itemcount+\xint_c_i}% \expandafter\XINT_assignarray_def \csname\xint_arrayname\xint_itemcount\expandafter\endcsname \expandafter{\xint_temp }% \expandafter\XINT_assignarray_loop \fi }% \def\XINT_assignarray_end #1#2#3#4% {% \def #4##1% {% \romannumeral0\expandafter #1\expandafter{\the\numexpr ##1}% }% \def #1##1% {% \ifnum ##1<\xint_c_ \xint_afterfi{\XINT_expandableerror{Array index negative: 0 > ##1} }% \else \xint_afterfi {% \ifnum ##1>#2 \xint_afterfi {\XINT_expandableerror{Array index beyond range: ##1 > #2} }% \else\xint_afterfi {\expandafter\expandafter\expandafter\space\csname #3##1\endcsname}% \fi}% \fi }% }% \let\xintDigitsOf\xintAssignArray \def\xintLength:f:csv {\romannumeral0\xintlength:f:csv}% \def\xintlength:f:csv #1% {\long\def\xintlength:f:csv ##1{% \expandafter#1\the\numexpr\expandafter\XINT_length:f:csv_a \romannumeral`&&@##1\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,\xint:,% \xint_c_ix,\xint_c_viii,\xint_c_vii,\xint_c_vi,% \xint_c_v,\xint_c_iv,\xint_c_iii,\xint_c_ii,\xint_c_i,\xint_bye \relax }}\xintlength:f:csv { }% \long\def\XINT_length:f:csv_a #1% {% \xint_gob_til_xint: #1\xint_c_\xint_bye\xint:% \XINT_length:f:csv_loop #1% }% \long\def\XINT_length:f:csv_loop #1,#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint: #9\XINT_length:f:csv_finish\xint:% \xint_c_ix+\XINT_length:f:csv_loop }% \def\XINT_length:f:csv_finish\xint:\xint_c_ix+\XINT_length:f:csv_loop #1,#2,#3,#4,#5,#6,#7,#8,#9,{#9\xint_bye}% \def\xintLengthUpTo:f:csv {\romannumeral0\xintlengthupto:f:csv}% \long\def\xintlengthupto:f:csv #1#2% {% \expandafter\XINT_lengthupto:f:csv_a \the\numexpr#1\expandafter.% \romannumeral`&&@#2\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,% \xint_c_viii,\xint_c_vii,\xint_c_vi,\xint_c_v,% \xint_c_iv,\xint_c_iii,\xint_c_ii,\xint_c_i,\xint_bye.% }% \long\def\XINT_lengthupto:f:csv_a #1.#2% {% \xint_gob_til_xint: #2\XINT_lengthupto:f:csv_empty\xint:% \XINT_lengthupto:f:csv_loop_b #1.#2% }% \def\XINT_lengthupto:f:csv_empty\xint:% \XINT_lengthupto:f:csv_loop_b #1.#2\xint_bye.{ #1}% \def\XINT_lengthupto:f:csv_loop_a #1% {% \xint_UDsignfork #1\XINT_lengthupto:f:csv_gt -\XINT_lengthupto:f:csv_loop_b \krof #1% }% \long\def\XINT_lengthupto:f:csv_gt #1\xint_bye.{-0}% \long\def\XINT_lengthupto:f:csv_loop_b #1.#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint: #9\XINT_lengthupto:f:csv_finish_a\xint:% \expandafter\XINT_lengthupto:f:csv_loop_a\the\numexpr #1-\xint_c_viii.% }% \def\XINT_lengthupto:f:csv_finish_a\xint: \expandafter\XINT_lengthupto:f:csv_loop_a \the\numexpr #1-\xint_c_viii.#2,#3,#4,#5,#6,#7,#8,#9,% {% \expandafter\XINT_lengthupto:f:csv_finish_b\the\numexpr #1-#9\xint_bye }% \def\XINT_lengthupto:f:csv_finish_b #1#2.% {% \xint_UDsignfork #1{-0}% -{ #1#2}% \krof }% \def\xintKeep:f:csv {\romannumeral0\xintkeep:f:csv }% \long\def\xintkeep:f:csv #1#2% {% \expandafter\xint_stop_aftergobble \romannumeral0\expandafter\XINT_keep:f:csv_a \the\numexpr #1\expandafter.\expandafter{\romannumeral`&&@#2}% }% \def\XINT_keep:f:csv_a #1% {% \xint_UDzerominusfork #1-\XINT_keep:f:csv_keepnone 0#1\XINT_keep:f:csv_neg 0-{\XINT_keep:f:csv_pos #1}% \krof }% \long\def\XINT_keep:f:csv_keepnone .#1{,}% \long\def\XINT_keep:f:csv_neg #1.#2% {% \expandafter\XINT_keep:f:csv_neg_done\expandafter,% \romannumeral0% \expandafter\XINT_keep:f:csv_neg_a\the\numexpr #1-\numexpr\XINT_length:f:csv_a #2\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,\xint:,% \xint_c_ix,\xint_c_viii,\xint_c_vii,\xint_c_vi,% \xint_c_v,\xint_c_iv,\xint_c_iii,\xint_c_ii,\xint_c_i,\xint_bye .#2\xint_bye }% \def\XINT_keep:f:csv_neg_a #1% {% \xint_UDsignfork #1{\expandafter\XINT_keep:f:csv_trimloop\the\numexpr-\xint_c_ix+}% -\XINT_keep:f:csv_keepall \krof }% \def\XINT_keep:f:csv_keepall #1.{ }% \long\def\XINT_keep:f:csv_neg_done #1\xint_bye{#1}% \def\XINT_keep:f:csv_trimloop #1#2.% {% \xint_gob_til_minus#1\XINT_keep:f:csv_trimloop_finish-% \expandafter\XINT_keep:f:csv_trimloop \the\numexpr#1#2-\xint_c_ix\expandafter.\XINT_keep:f:csv_trimloop_trimnine }% \long\def\XINT_keep:f:csv_trimloop_trimnine #1,#2,#3,#4,#5,#6,#7,#8,#9,{}% \def\XINT_keep:f:csv_trimloop_finish-% \expandafter\XINT_keep:f:csv_trimloop \the\numexpr-#1-\xint_c_ix\expandafter.\XINT_keep:f:csv_trimloop_trimnine {\csname XINT_trim:f:csv_finish#1\endcsname}% \long\def\XINT_keep:f:csv_pos #1.#2% {% \expandafter\XINT_keep:f:csv_pos_fork \romannumeral0\XINT_lengthupto:f:csv_a #1.#2\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,% \xint_c_viii,\xint_c_vii,\xint_c_vi,\xint_c_v,% \xint_c_iv,\xint_c_iii,\xint_c_ii,\xint_c_i,\xint_bye.% .#1.{}#2\xint_bye% }% \def\XINT_keep:f:csv_pos_fork #1#2.% {% \xint_UDsignfork #1{\expandafter\XINT_keep:f:csv_loop\the\numexpr-\xint_c_viii+}% -\XINT_keep:f:csv_pos_keepall \krof }% \long\def\XINT_keep:f:csv_pos_keepall #1.#2#3\xint_bye{,#3}% \def\XINT_keep:f:csv_loop #1#2.% {% \xint_gob_til_minus#1\XINT_keep:f:csv_loop_end-% \expandafter\XINT_keep:f:csv_loop \the\numexpr#1#2-\xint_c_viii\expandafter.\XINT_keep:f:csv_loop_pickeight }% \long\def\XINT_keep:f:csv_loop_pickeight #1#2,#3,#4,#5,#6,#7,#8,#9,{{#1,#2,#3,#4,#5,#6,#7,#8,#9}}% \def\XINT_keep:f:csv_loop_end-\expandafter\XINT_keep:f:csv_loop \the\numexpr-#1-\xint_c_viii\expandafter.\XINT_keep:f:csv_loop_pickeight {\csname XINT_keep:f:csv_end#1\endcsname}% \long\expandafter\def\csname XINT_keep:f:csv_end1\endcsname #1#2,#3,#4,#5,#6,#7,#8,#9\xint_bye {#1,#2,#3,#4,#5,#6,#7,#8}% \long\expandafter\def\csname XINT_keep:f:csv_end2\endcsname #1#2,#3,#4,#5,#6,#7,#8\xint_bye {#1,#2,#3,#4,#5,#6,#7}% \long\expandafter\def\csname XINT_keep:f:csv_end3\endcsname #1#2,#3,#4,#5,#6,#7\xint_bye {#1,#2,#3,#4,#5,#6}% \long\expandafter\def\csname XINT_keep:f:csv_end4\endcsname #1#2,#3,#4,#5,#6\xint_bye {#1,#2,#3,#4,#5}% \long\expandafter\def\csname XINT_keep:f:csv_end5\endcsname #1#2,#3,#4,#5\xint_bye {#1,#2,#3,#4}% \long\expandafter\def\csname XINT_keep:f:csv_end6\endcsname #1#2,#3,#4\xint_bye {#1,#2,#3}% \long\expandafter\def\csname XINT_keep:f:csv_end7\endcsname #1#2,#3\xint_bye {#1,#2}% \long\expandafter\def\csname XINT_keep:f:csv_end8\endcsname #1#2\xint_bye {#1}% \def\xintTrim:f:csv {\romannumeral0\xinttrim:f:csv }% \long\def\xinttrim:f:csv #1#2% {% \expandafter\xint_stop_aftergobble \romannumeral0\expandafter\XINT_trim:f:csv_a \the\numexpr #1\expandafter.\expandafter{\romannumeral`&&@#2}% }% \def\XINT_trim:f:csv_a #1% {% \xint_UDzerominusfork #1-\XINT_trim:f:csv_trimnone 0#1\XINT_trim:f:csv_neg 0-{\XINT_trim:f:csv_pos #1}% \krof }% \long\def\XINT_trim:f:csv_trimnone .#1{,#1}% \long\def\XINT_trim:f:csv_neg #1.#2% {% \expandafter\XINT_trim:f:csv_neg_a\the\numexpr #1-\numexpr\XINT_length:f:csv_a #2\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,\xint:,% \xint_c_ix,\xint_c_viii,\xint_c_vii,\xint_c_vi,% \xint_c_v,\xint_c_iv,\xint_c_iii,\xint_c_ii,\xint_c_i,\xint_bye .{}#2\xint_bye }% \def\XINT_trim:f:csv_neg_a #1% {% \xint_UDsignfork #1{\expandafter\XINT_keep:f:csv_loop\the\numexpr-\xint_c_viii+}% -\XINT_trim:f:csv_trimall \krof }% \def\XINT_trim:f:csv_trimall {\expandafter,\xint_bye}% \long\def\XINT_trim:f:csv_pos #1.#2% {% \expandafter\XINT_trim:f:csv_pos_done\expandafter,% \romannumeral0% \expandafter\XINT_trim:f:csv_loop\the\numexpr#1-\xint_c_ix.% #2\xint:,\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,\xint:\xint_bye }% \def\XINT_trim:f:csv_loop #1#2.% {% \xint_gob_til_minus#1\XINT_trim:f:csv_finish-% \expandafter\XINT_trim:f:csv_loop\the\numexpr#1#2\XINT_trim:f:csv_loop_trimnine }% \long\def\XINT_trim:f:csv_loop_trimnine #1,#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint: #9\XINT_trim:f:csv_toofew\xint:-\xint_c_ix.% }% \def\XINT_trim:f:csv_toofew\xint:{*\xint_c_}% \def\XINT_trim:f:csv_finish-% \expandafter\XINT_trim:f:csv_loop\the\numexpr-#1\XINT_trim:f:csv_loop_trimnine {% \csname XINT_trim:f:csv_finish#1\endcsname }% \long\expandafter\def\csname XINT_trim:f:csv_finish1\endcsname #1,#2,#3,#4,#5,#6,#7,#8,{ }% \long\expandafter\def\csname XINT_trim:f:csv_finish2\endcsname #1,#2,#3,#4,#5,#6,#7,{ }% \long\expandafter\def\csname XINT_trim:f:csv_finish3\endcsname #1,#2,#3,#4,#5,#6,{ }% \long\expandafter\def\csname XINT_trim:f:csv_finish4\endcsname #1,#2,#3,#4,#5,{ }% \long\expandafter\def\csname XINT_trim:f:csv_finish5\endcsname #1,#2,#3,#4,{ }% \long\expandafter\def\csname XINT_trim:f:csv_finish6\endcsname #1,#2,#3,{ }% \long\expandafter\def\csname XINT_trim:f:csv_finish7\endcsname #1,#2,{ }% \long\expandafter\def\csname XINT_trim:f:csv_finish8\endcsname #1,{ }% \expandafter\let\csname XINT_trim:f:csv_finish9\endcsname\space \long\def\XINT_trim:f:csv_pos_done #1\xint:#2\xint_bye{#1}% \def\xintNthEltPy:f:csv {\romannumeral0\xintntheltpy:f:csv }% \long\def\xintntheltpy:f:csv #1#2% {% \expandafter\XINT_nthelt:f:csv_a \the\numexpr #1\expandafter.\expandafter{\romannumeral`&&@#2}% }% \def\XINT_nthelt:f:csv_a #1% {% \xint_UDsignfork #1\XINT_nthelt:f:csv_neg -\XINT_nthelt:f:csv_pos \krof #1% }% \long\def\XINT_nthelt:f:csv_neg -#1.#2% {% \expandafter\XINT_nthelt:f:csv_neg_fork \the\numexpr\XINT_length:f:csv_a #2\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,\xint:,% \xint_c_ix,\xint_c_viii,\xint_c_vii,\xint_c_vi,% \xint_c_v,\xint_c_iv,\xint_c_iii,\xint_c_ii,\xint_c_i,\xint_bye -#1.#2,\xint_bye }% \def\XINT_nthelt:f:csv_neg_fork #1% {% \if#1-\expandafter\xint_stop_afterbye\fi \expandafter\XINT_nthelt:f:csv_neg_done \romannumeral0% \expandafter\XINT_keep:f:csv_trimloop\the\numexpr-\xint_c_ix+#1% }% \long\def\XINT_nthelt:f:csv_neg_done#1,#2\xint_bye{ #1}% \long\def\XINT_nthelt:f:csv_pos #1.#2% {% \expandafter\XINT_nthelt:f:csv_pos_done \romannumeral0% \expandafter\XINT_trim:f:csv_loop\the\numexpr#1-\xint_c_ix.% #2\xint:,\xint:,\xint:,\xint:,\xint:,% \xint:,\xint:,\xint:,\xint:,\xint:,\xint_bye }% \def\XINT_nthelt:f:csv_pos_done #1{% \long\def\XINT_nthelt:f:csv_pos_done ##1,##2\xint_bye{% \xint_gob_til_xint:##1\XINT_nthelt:f:csv_pos_cleanup\xint:#1##1}% }\XINT_nthelt:f:csv_pos_done{ }% \xint_firstofone{\long\def\XINT_nthelt:f:csv_pos_cleanup\xint:} % #1\xint:{ #1}% \def\xintReverse:f:csv {\romannumeral0\xintreverse:f:csv }% \long\def\xintreverse:f:csv #1% {% \expandafter\XINT_reverse:f:csv_loop \expandafter{\expandafter}\romannumeral`&&@#1,% \xint:,% \xint_bye,\xint_bye,\xint_bye,\xint_bye,% \xint_bye,\xint_bye,\xint_bye,\xint_bye,% \xint: }% \long\def\XINT_reverse:f:csv_loop #1#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_bye #9\XINT_reverse:f:csv_cleanup\xint_bye \XINT_reverse:f:csv_loop {,#9,#8,#7,#6,#5,#4,#3,#2#1}% }% \long\def\XINT_reverse:f:csv_cleanup\xint_bye\XINT_reverse:f:csv_loop #1#2\xint: {% \XINT_reverse:f:csv_finish #1% }% \long\def\XINT_reverse:f:csv_finish #1\xint:,{ }% \def\xintFirstItem:f:csv {\romannumeral0\xintfirstitem:f:csv}% \long\def\xintfirstitem:f:csv #1% {% \expandafter\XINT_first:f:csv_a\romannumeral`&&@#1,\xint_bye }% \long\def\XINT_first:f:csv_a #1,#2\xint_bye{ #1}% \def\xintLastItem:f:csv {\romannumeral0\xintlastitem:f:csv}% \long\def\xintlastitem:f:csv #1% {% \expandafter\XINT_last:f:csv_loop\expandafter{\expandafter}\expandafter.% \romannumeral`&&@#1,% \xint:\XINT_last_loop_enda,\xint:\XINT_last_loop_endb,% \xint:\XINT_last_loop_endc,\xint:\XINT_last_loop_endd,% \xint:\XINT_last_loop_ende,\xint:\XINT_last_loop_endf,% \xint:\XINT_last_loop_endg,\xint:\XINT_last_loop_endh,\xint_bye }% \long\def\XINT_last:f:csv_loop #1.#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint: #9% {#8}{#7}{#6}{#5}{#4}{#3}{#2}{#1}\xint: \XINT_last:f:csv_loop {#9}.% }% \def\xintKeep:x:csv #1#2% {% \expandafter\xint_gobble_i \romannumeral0\expandafter\XINT_keep:x:csv_pos \the\numexpr #1\expandafter.\expandafter{\romannumeral`&&@#2}% }% \def\XINT_keep:x:csv_pos #1.#2% {% \expandafter\XINT_keep:x:csv_loop\the\numexpr#1-\xint_c_viii.% #2\xint_Bye,\xint_Bye,\xint_Bye,\xint_Bye,% \xint_Bye,\xint_Bye,\xint_Bye,\xint_Bye,\xint_bye }% \def\XINT_keep:x:csv_loop #1% {% \xint_gob_til_minus#1\XINT_keep:x:csv_finish-% \XINT_keep:x:csv_loop_pickeight #1% }% \def\XINT_keep:x:csv_loop_pickeight #1.#2,#3,#4,#5,#6,#7,#8,#9,% {% ,#2,#3,#4,#5,#6,#7,#8,#9% \expandafter\XINT_keep:x:csv_loop\the\numexpr#1-\xint_c_viii.% }% \def\XINT_keep:x:csv_finish-\XINT_keep:x:csv_loop_pickeight -#1.% {% \csname XINT_keep:x:csv_finish#1\endcsname }% \expandafter\def\csname XINT_keep:x:csv_finish1\endcsname #1,#2,#3,#4,#5,#6,#7,{,#1,#2,#3,#4,#5,#6,#7\xint_Bye}% \expandafter\def\csname XINT_keep:x:csv_finish2\endcsname #1,#2,#3,#4,#5,#6,{,#1,#2,#3,#4,#5,#6\xint_Bye}% \expandafter\def\csname XINT_keep:x:csv_finish3\endcsname #1,#2,#3,#4,#5,{,#1,#2,#3,#4,#5\xint_Bye}% \expandafter\def\csname XINT_keep:x:csv_finish4\endcsname #1,#2,#3,#4,{,#1,#2,#3,#4\xint_Bye}% \expandafter\def\csname XINT_keep:x:csv_finish5\endcsname #1,#2,#3,{,#1,#2,#3\xint_Bye}% \expandafter\def\csname XINT_keep:x:csv_finish6\endcsname #1,#2,{,#1,#2\xint_Bye}% \expandafter\def\csname XINT_keep:x:csv_finish7\endcsname #1,{,#1\xint_Bye}% \expandafter\let\csname XINT_keep:x:csv_finish8\endcsname\xint_Bye \let\xintCSVLength \xintLength:f:csv \let\xintCSVKeep \xintKeep:f:csv \let\xintCSVKeepx \xintKeep:x:csv \let\xintCSVTrim \xintTrim:f:csv \let\xintCSVNthEltPy \xintNthEltPy:f:csv \let\xintCSVReverse \xintReverse:f:csv \let\xintCSVFirstItem\xintFirstItem:f:csv \let\xintCSVLastItem \xintLastItem:f:csv \let\XINT_tmpa\relax \let\XINT_tmpb\relax \let\XINT_tmpc\relax \XINT_restorecatcodes_endinput% \endinput %% %% End of file `xinttools.sty'.