% \iffalse meta-comment
%
% Package latexbug for use with LaTeX2e
%
% Copyright 2016,2017
%
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file. 
% 
% This file is part of the Standard LaTeX (separate distribution) 
% ---------------------------------------------------------------
% 
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
%    http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX 
% version 2005/12/01 or later.
% 
% This file has the LPPL maintenance status "maintained".
% 
%
% \fi
%
% \title{The \texttt{latexbug} package\thanks{This file
%        has version number \fileversion, last
%        revised \filedate.}}
% \author{The \LaTeX{} Team}   ^^A Frank Mittelbach
% \date{\filedate}
%
% \MaintainedByLaTeXTeam{latex}
%
% \maketitle
%
%
% \section{Introduction}
%
% Software has bugs and \LaTeX{} unfortunately is no exception. If
% somebody encounters a bug then it helps if that bug gets reported to
% the right people so that the bug can be resolved (or a workaround
% documented or whatever is most appropriate). The problem is to know
% to whom to report the bug.
%
% The \LaTeX{} Project Team maintains a bug database for its own code
% base (which consists of the \LaTeX{} kernel and some packages that
% have been written by people in the \LaTeX{} Project
% Team). However, the \LaTeX{} universe consists of several thousand
% contributed packages maintained by individuals all over the
% world. And if a bug happens in one of those packages it doesn't help
% anybody if it is dumped at the \LaTeX{} Project's doorstep.
%
% For one, we can't actually change other people's code even if we are able to
% identify the issue. Furthermore we are only a few people and simply
% do not have the bandwidth to analyse bugs in other people's work.
%
% We have therefore written this little package called
% \texttt{latexbug} that should help in identifying the rightful
% addressee for a bug report. We ask that it will be loaded in any
% test file that is intended to be sent to the \LaTeX{} bug database
% as part of a bug report.
%
% The package will determine if the test file is in a suitable state
% to be sent to us or if it should be modified first or if it should be
% sent to somebody
% else because the bug is (likely) to be in code not maintained by the
% \LaTeX{} Project Team.
%
% Bug reports sent to the \LaTeX{} bug database
% without that prior verification are likely to
% get closed without being looked at at our end in the future.
%
%
%
% \section{The user interface}
%
% The user interface is simple: the package has no option and doesn't
% define any new commands to be used. All that is required is that the
% package is loaded as the very first step in the test file that shows
% the bug --- in other words before the \verb=\documentclass=.
% For that reason it
% must be loaded using \verb=\RequirePackage= instead of the usual
% \verb=\usepackage= that is used in the preamble of a document.
%
% Thus, a bug report test files should look like this:
% \begin{verbatim}
% \RequirePackage{latexbug}       % <- required first line
%                                 %    followed by:
% \documentclass{article}         % or some other class
%                                 %    followed by:
%   ...                           % <- code showing the bug ...
% \end{document}
% \end{verbatim}
%
% If the test file runs through (showing the bug) without any
% complains for \texttt{latexbug} then the test file is ready to be
% sent to the \LaTeX{} bug database at
% \begin{quote}
%   \texttt{https://www.latex-project.org/bugs/}
% \end{quote}
% If \texttt{latexbug} does generate an error, however, then this
% error needs to be addressed first and the depending on the
% resolution the bug report may has to be sent to somebody else.
%
% An error is generated if the test file makes use of third-party code
% that is not maintained by the \LaTeX{} Project Team. For example, if
% the file would load \texttt{geometry}, \texttt{footmisc} and
% \texttt{hyperref} you
% would see the following:
% \begin{verbatim}
% Package latexbug Error: Third-party file(s)
% (latexbug)                
% (latexbug)                This test file uses third-party file(s)
% (latexbug)                
% (latexbug)                ==============
% (latexbug)                geometry.sty  ->  Hideo Umeki 
% (latexbug)                    <latexgeometry [at] gmail [dot] com>
% (latexbug)                footmisc.sty
% (latexbug)                hyperref.sty  ->  Heiko Oberdiek 
% (latexbug)                    https://github.com/ho-tex/hyperref/issues
% (latexbug)                ==============
% (latexbug)                
% \end{verbatim}
% It then continues with advice to remove such third-party code from the
% test file. If that is not possible, because the bug goes away if a
% package is removed, then the problem is (most likely) with this
% package and the bug report should be sent to the maintainer of that
% package and not to the \LaTeX{} bug database.
% \begin{verbatim}
% (latexbug)                So you should contact the authors
% (latexbug)                of these files, not the LaTeX Team!
% (latexbug)                (Or remove the packages that load
% (latexbug)                them, if they are not necessary to
% (latexbug)                exhibit the problem).
% \end{verbatim}
% To make life somewhat easier \texttt{latexbug} will tell you the
% name of the maintainer (if we know it and have added it in) and if
% possible also the canonical bug address for the package (like in the
% case of \texttt{geometry} and  \texttt{hyperref}).
% If we don't have that information, you
% need to find it out for yourself by looking at the package
% documentation.
%
% There may be cases where third-party code is essential to exhibit
% a bug in core \LaTeX{} code maintained by the the \LaTeX{} Team. The
% error text therefore finishes off with the following sentence:
% \begin{verbatim}
% (latexbug)                If you think the bug is in core LaTeX
% (latexbug)                (as maintained by the LaTeX Team) but
% (latexbug)                these files are needed to demonstrate
% (latexbug)                the problem, please continue and mention
% (latexbug)                this explicitly in your bug report.
% \end{verbatim}
% Please explain your reasoning why you think this is the case in
% detail as part of the bug report.
%
% \vspace*{1ex}
%
% \begin{center}
%    \fbox{\fbox{\parbox{.6\textwidth}{\itshape Thank you for taking
%                        the time to report a bug and prepare a test
%                        file showing it!}}}
% \end{center}
%
% \vspace*{3ex}
%
%
% \subsection{A note on the database content in the package}
%

% When a document is run through \LaTeX{} it will load a number of
% files and bug reports that are to be sent to the \LaTeX{} Team should only
% load files that we maintain and not third-party packages.

% The database, if you want to call that, inside \texttt{latexbug} is
% simply comma separated a key value list consisting of file names
% \texttt{=} maintainer info. Most of the time the maintainer info is
% \texttt{us} or \texttt{us*} (meaning we maintain it, so the file is
% fine) or \texttt{ignore} (meaning we do not maintain it, but it is a
% file that is likely to appear for one or the other reason and we
% should accept such a bug report nontheless).
%
% Any file loaded in the bug report not listed will show up in the
% error listing flagged as ``third-party'' code that should be removed
% as explained above.
%

% For a small number of popular third-party packages we have collected
% the name of the external maintainer and if available to us some
% extra info so that it is easier to send to the rightful addressee if
% you encounter a bug in such a third-party package. But to keep this
% manageable this is only done for a very small number of the 5000+
% packages out there (though we might add one or the other over time).

% It is however not impossible that we missed one or the other file
% that should have been listed as ``maintained by us'' but isn't and
% thus incorrectly generates an error. If you run into that problem or
% notice an omission of that sort, please send us a bug report or open
% an issue at the GitHub source of the package which is located at:
% \begin{quote}
%   \texttt{https://github.com/latex3/latexbug/}
% \end{quote}
%
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \section{The documentation driver file}
%
% The next bit of code contains the documentation driver file for
% \TeX{}, i.e., the file that will produce the documentation you are
% currently reading. It will be extracted from this file by the
% \texttt{docstrip} program.
%    \begin{macrocode}
%<*driver>
\RequirePackage{latexbug}
\documentclass{ltxdoc}
\GetFileInfo{latexbug.sty}
%\usepackage{geometry,footmisc,hyperref}  % uncomment for latexbug error
%\usepackage{xparse}                      % uncomment for latexbug error
\EnableCrossrefs
%\DisableCrossrefs    % Say \DisableCrossrefs if index is ready

%\OnlyDescription     % Comment out for implementation details
\begin{document}
   \DocInput{latexbug.dtx}
\end{document}
%</driver>
%    \end{macrocode}
%
% \section{The implementation}
%
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{latexbug}[2017/10/12 v1.0d Bug-classification]
%    \end{macrocode}
%
% \begin{macro}{\latexbug@empty}
% \begin{macro}{\latexbug@us}
% \begin{macro}{\latexbug@ustar}
% \begin{macro}{\latexbug@ignore}
%   Fixed text used in checking what actions to take with different files.
%    \begin{macrocode}
\def\latexbug@empty{}
\def\latexbug@us{us}
\def\latexbug@usstar{us*}
\def\latexbug@ignore{ignore}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Contact}
%   A very simple piece of markup, really.
%    \begin{macrocode}
\def\Contact{\MessageBreak \@spaces}
%    \end{macrocode}
% \end{macro}
%
% The database of packages is set up in a group so we can throw away the
% loop command.
%    \begin{macrocode}
\begingroup
%    \end{macrocode}
%
% \begin{macro}{\latexbug@loop}
%   A simple loop set up which reads a known format for the file-to-maintainer
%   mapping. The trailing space is important (stripping it is not really worth
%   it for this very limited use case).
%    \begin{macrocode}
\long\def\latexbug@loop #1 = #2 , {% spaces matter
  \global\@namedef{latexbug@@#1}{#2}%
  \ifx\latexbug@empty#1\else\expandafter\latexbug@loop\fi}
%    \end{macrocode}
% \end{macro}
%
% A simple database of files. The value \texttt{us} means we accept
% bugs for it. We also take bug reports for \texttt{us*} entries, but
% they need to go to GitHub so are handled separately (and only show up
% if there doesn't seem to be anything else to pick up). A value of
% \texttt{ignore} means that its not our code, but we understand that it may
% show up in legitimate test files and should therefore not trigger an error.
%
% Any file not in there will trigger an error if loaded and any file
% in there with some other value than \texttt{us} or \texttt{ignore}
% will also trigger an error displaying the value (which hopefully is
% the maintainers name). (Handling for \texttt{us*} means these files may
% not show up, depending on the nature of the use case.)
%
% \begin{quote} \itshape
%   The database format is somewhat fragile: one needs to have a space on both sides
%   of the equal sign (or one gets a nasty low-level error) and names can't have
%   no-ascii characters in them, so they end up crippled (sorry for that).
% \end{quote}
%
%    \begin{macrocode}
\latexbug@loop
%--------------------------------- 
latexbug.sty = us ,
regression-test = us ,
%--------------------------------- base
alltt.sty = us ,
ansinew.def = us ,
applemac.def = us ,
article.cls = us ,
article.sty = us ,
ascii.def = us ,
bezier.sty = us ,
bk10.clo = us ,
bk11.clo = us ,
bk12.clo = us ,
book.cls = us ,
book.sty = us ,
cp1250.def = us ,
cp1252.def = us ,
cp1257.def = us ,
cp437.def = us ,
cp437de.def = us ,
cp850.def = us ,
cp852.def = us ,
cp858.def = us ,
cp865.def = us ,
decmulti.def = us ,
doc.sty = us ,
docstrip.tex = us ,
exscale.sty = us ,
fix-cm.sty = us ,
fixltx2e.sty = us ,
flafter.sty = us ,
fleqn.clo = us ,
fleqn.sty = us ,
fltrace.sty = us ,
fontenc.sty = us ,
fontmath.cfg = us ,
fontmath.ltx = us ,
fonttext.cfg = us ,
fonttext.ltx = us ,
graphpap.sty = us ,
hyphen.ltx = us ,
idx.tex = us ,
ifthen.sty = us ,
inputenc.sty = us ,
lablst.tex = us ,
latex.ltx = us ,
latex209.def = us ,
latexbug.tex = us ,
latexrelease.sty = us ,
latexsym.sty = us ,
latin1.def = us ,
latin10.def = us ,
latin2.def = us ,
latin3.def = us ,
latin4.def = us ,
latin5.def = us ,
latin9.def = us ,
lcyenc.dfu = us ,
leqno.clo = us ,
leqno.sty = us ,
letter.cls = us ,
letter.sty = us ,
lppl.tex = us ,
ltluatex.lua = us ,
ltluatex.tex = us ,
ltnews.cls = us ,
ltxcheck.tex = us ,
ltxdoc.cls = us ,
ltxguide.cls = us ,
ly1enc.dfu = us ,
macce.def = us ,
makeidx.sty = us ,
minimal.cls = us ,
newlfont.sty = us ,
next.def = us ,
nfssfont.tex = us ,
oldlfont.sty = us ,
omlcmm.fd = us ,
omlcmr.fd = us ,
omlenc.def = us ,
omllcmm.fd = us ,
omscmr.fd = us ,
omscmsy.fd = us ,
omsenc.def = us ,
omsenc.dfu = us ,
omslcmsy.fd = us ,
omxcmex.fd = us ,
omxlcmex.fd = us ,
openbib.sty = us ,
ot1cmdh.fd = us ,
ot1cmfib.fd = us ,
ot1cmfr.fd = us ,
ot1cmr.fd = us ,
ot1cmss.fd = us ,
ot1cmtt.fd = us ,
ot1cmvtt.fd = us ,
ot1enc.def = us ,
ot1enc.dfu = us ,
ot1lcmss.fd = us ,
ot1lcmtt.fd = us ,
ot2enc.dfu = us ,
ot4enc.def = us ,
preload.cfg = us ,
preload.ltx = us ,
proc.cls = us ,
proc.sty = us ,
report.cls = us ,
report.sty = us ,
sample2e.tex = us ,
sfonts.def = us ,
shortvrb.sty = us ,
showidx.sty = us ,
size10.clo = us ,
size11.clo = us ,
size12.clo = us ,
slides.cls = us ,
slides.def = us ,
slides.sty = us ,
small2e.tex = us ,
source2e.tex = us ,
syntonly.sty = us ,
t1cmdh.fd = us ,
t1cmfib.fd = us ,
t1cmfr.fd = us ,
t1cmr.fd = us ,
t1cmss.fd = us ,
t1cmtt.fd = us ,
t1cmvtt.fd = us ,
t1enc.def = us ,
t1enc.dfu = us ,
t1enc.sty = us ,
t1lcmss.fd = us ,
t1lcmtt.fd = us ,
t2aenc.dfu = us ,
t2benc.dfu = us ,
t2cenc.dfu = us ,
testpage.tex = us ,
texsys.cfg = us ,
textcomp.sty = us ,
tracefnt.sty = us ,
ts1cmr.fd = us ,
ts1cmss.fd = us ,
ts1cmtt.fd = us ,
ts1cmvtt.fd = us ,
ts1enc.def = us ,
ts1enc.dfu = us ,
ucmr.fd = us ,
ucmss.fd = us ,
ucmtt.fd = us ,
ulasy.fd = us ,
ullasy.fd = us ,
utf8-test.tex = us ,
utf8.def = us ,
utf8enc.dfu = us ,
utf8test.tex = us ,
x2enc.dfu = us ,
%--------------------------------- tools
afterpage.sty = us ,
array.sty = us ,
bm.sty = us ,
calc.sty = us ,
dcolumn.sty = us ,
delarray.sty = us ,
e.tex = us ,
enumerate.sty = us ,
fontsmpl.sty = us ,
fontsmpl.tex = us ,
ftnright.sty = us ,
h.tex = us ,
hhline.sty = us ,
indentfirst.sty = us ,
layout.sty = us ,
longtable.sty = us ,
multicol.sty = us ,
q.tex = us ,
r.tex = us ,
rawfonts.sty = us ,
s.tex = us ,
showkeys.sty = us ,
somedefs.sty = us ,
tabularx.sty = us ,
thb.sty = us ,
thc.sty = us ,
thcb.sty = us ,
theorem.sty = us ,
thm.sty = us ,
thmb.sty = us ,
thp.sty = us ,
trace.sty = us ,
varioref.sty = us ,
verbatim.sty = us ,
verbtest.tex = us ,
x.tex = us ,
xr.sty = us ,
xspace.sty = us ,
%--------------------------------- babel (part supported by us)
UKenglish.sty = us ,
USenglish.sty = us ,
afrikaans.sty = us ,
albanian.sty = us ,
american.sty = us ,
austrian.sty = us ,
babel.def = us ,
babel.sty = us ,
bahasa.sty = us ,
bahasam.sty = us ,
basque.sty = us ,
blplain.tex = us ,
bplain.tex = us ,
breton.sty = us ,
british.sty = us ,
bulgarian.sty = us ,
catalan.sty = us ,
croatian.sty = us ,
czech.sty = us ,
danish.sty = us ,
dutch.sty = us ,
english.sty = us ,
esperanto.sty = us ,
estonian.sty = us ,
finnish.sty = us ,
francais.sty = us ,
galician.sty = us ,
germanb.sty = us ,
greek.sty = us ,
hebrew.sty = us ,
hyphen.cfg = us ,
icelandic.sty = us ,
interlingua.sty = us ,
irish.sty = us ,
italian.sty = us ,
latin.sty = us ,
lsorbian.sty = us ,
luababel.def = us ,
magyar.sty = us ,
naustrian.sty = us ,
ngermanb.sty = us ,
nil.ldf = us ,
norsk.sty = us ,
plain.def = us ,
polish.sty = us ,
portuges.sty = us ,
romanian.sty = us ,
russianb.sty = us ,
samin.sty = us ,
scottish.sty = us ,
serbian.sty = us ,
slovak.sty = us ,
slovene.sty = us ,
spanish.sty = us ,
swedish.sty = us ,
switch.def = us ,
turkish.sty = us ,
ukraineb.sty = us ,
usorbian.sty = us ,
welsh.sty = us ,
xebabel.def = us ,
%--------------------------------- graphics
color.cfg = us ,
color.sty = us ,
dvipdf.def = us ,
dvipdfmx.def = us ,
dvips.def = us ,
dvipsnam.def = us ,
dvipsone.def = us ,
dviwin.def = us ,
emtex.def = us ,
epsfig.sty = us ,
graphics.cfg = us ,
graphics.sty = us ,
graphicx.sty = us ,
keyval.sty = us ,
lscape.sty = us ,
luatex.def = us ,
pctex32.def = us ,
pctexhp.def = us ,
pctexps.def = us ,
pctexwin.def = us ,
pdftex.def = us ,
pdftex.def = us ,
tcidvi.def = us ,
trig.sty = us ,
truetex.def = us ,
xetex.def = us ,
%--------------------------------- mfnfss
oldgerm.sty = us ,
ot1panr.fd = us ,
ot1pss.fd = us ,
pandora.sty = us ,
uyfrak.fd = us ,
uygoth.fd = us ,
uyinit.fd = us ,
uyswab.fd = us ,
%--------------------------------- amsmath
amsbsy.sty = us ,
amscd.sty = us ,
amsgen.sty = us ,
amsmath.sty = us ,
amsopn.sty = us ,
amstex.sty = us ,
amstext.sty = us ,
amsxtra.sty = us ,
%--------------------------------- amscls (us?)
amsart.cls = us ,
amsbook.cls = us ,
amsbooka.sty = us ,
amsdtx.cls = us ,
amsldoc.cls = us ,
amsmidx.sty = us ,
amsproc.cls = us ,
amsthm.sty = us ,
upref.sty = us ,
%--------------------------------- amsfonts (us?)
amsfonts.sty = us ,
amssymb.sty = us ,
cmmib57.sty = us ,
eucal.sty = us ,
eufrak.sty = us ,
euscript.sty = us ,
ueuex.fd = us ,
ueuf.fd = us ,
ueur.fd = us ,
ueus.fd = us ,
umsa.fd = us ,
umsb.fd = us ,
%--------------------------------- psnfss
8rbch.fd = us ,
8rpag.fd = us ,
8rpbk.fd = us ,
8rpcr.fd = us ,
8rphv.fd = us ,
8rpnc.fd = us ,
8rppl.fd = us ,
8rptm.fd = us ,
8rput.fd = us ,
8rpzc.fd = us ,
avant.sty = us ,
bookman.sty = us ,
chancery.sty = us ,
charter.sty = us ,
courier.sty = us ,
helvet.sty = us ,
mathpazo.sty = us ,
mathpple.sty = us ,
mathptm.sty = us ,
mathptmx.sty = us ,
newcent.sty = us ,
omlbch.fd = us ,
omlpag.fd = us ,
omlpbk.fd = us ,
omlpcr.fd = us ,
omlphv.fd = us ,
omlpnc.fd = us ,
omlppl.fd = us ,
omlptm.fd = us ,
omlptmcm.fd = us ,
omlput.fd = us ,
omlpzc.fd = us ,
omlzplm.fd = us ,
omlzpple.fd = us ,
omlztmcm.fd = us ,
omsbch.fd = us ,
omspag.fd = us ,
omspbk.fd = us ,
omspcr.fd = us ,
omsphv.fd = us ,
omspnc.fd = us ,
omsppl.fd = us ,
omsptm.fd = us ,
omsput.fd = us ,
omspzc.fd = us ,
omspzccm.fd = us ,
omszplm.fd = us ,
omszpple.fd = us ,
omsztmcm.fd = us ,
omxpsycm.fd = us ,
omxzplm.fd = us ,
omxzpple.fd = us ,
omxztmcm.fd = us ,
ot1bch.fd = us ,
ot1pag.fd = us ,
ot1pbk.fd = us ,
ot1pcr.fd = us ,
ot1phv.fd = us ,
ot1pnc.fd = us ,
ot1ppl.fd = us ,
ot1pplj.fd = us ,
ot1pplx.fd = us ,
ot1ptm.fd = us ,
ot1ptmcm.fd = us ,
ot1put.fd = us ,
ot1pzc.fd = us ,
ot1zplm.fd = us ,
ot1zpple.fd = us ,
ot1ztmcm.fd = us ,
palatino.sty = us ,
pifont.sty = us ,
t1bch.fd = us ,
t1pag.fd = us ,
t1pbk.fd = us ,
t1pcr.fd = us ,
t1phv.fd = us ,
t1pnc.fd = us ,
t1ppl.fd = us ,
t1pplj.fd = us ,
t1pplx.fd = us ,
t1ptm.fd = us ,
t1put.fd = us ,
t1pzc.fd = us ,
times.sty = us ,
ts1bch.fd = us ,
ts1pag.fd = us ,
ts1pbk.fd = us ,
ts1pcr.fd = us ,
ts1phv.fd = us ,
ts1pnc.fd = us ,
ts1ppl.fd = us ,
ts1pplj.fd = us ,
ts1pplx.fd = us ,
ts1ptm.fd = us ,
ts1put.fd = us ,
ts1pzc.fd = us ,
ufplm.fd = us ,
ufplmbb.fd = us ,
upsy.fd = us ,
upzd.fd = us ,
utopia.sty = us ,
%--------------------------------- expl3
expl3.sty  = us* ,
l3sort.sty = us* ,
l3regex.sty = us* ,
l3tl-analysis.sty = us* ,
xfrac.sty = us* ,
xparse.sty = us* ,
xtemplate.sty = us* ,
xfrac.sty = us* ,
xcoffins.sty = us* ,
xgalley.sty = us* ,
l3keys2e.sty = us* ,
expl3-code.tex = ignore ,
%---------------------------------  USEFUL FOR BUG REPORTS
blindtext.sty = ignore ,
etoolbox.sty = ignore ,
lipsum.sty   = ignore ,
%---------------------------------  EXTERNALLY SUPPORTED
%
beamer.cls   = Joseph Wright
               \Contact https://github.com/josephwright/beamer/issues ,
fontspec.sty = Will Robertson
               \Contact https://github.com/wspr/fontspec/issues ,
geometry.sty = Hideo Umeki
               \Contact <latexgeometry [at] gmail [dot] com> ,
hpdftex.def  = ignore ,
hluatex.def  = ignore ,               
hxetex.def   = ignore ,               
hyperref.cfg = ignore ,
hyperref.sty = Heiko Oberdiek
               \Contact https://github.com/ho-tex/hyperref/issues ,
luatex85.sty   = Joseph Wright
               \Contact https://github.com/josephwright/luatex85/issues ,
pd1enc.def   = ignore ,
puenc.def    = ignore ,
siunitx.sty  = Joseph Wright
               \Contact https://github.com/josephwright/siunitx/issues ,
%--------------------------------- babel external
basque.ldf      = Juan M. Aguirregabiria
                  \Contact <http://tp.lc.ehu.es/jma.html> ,
belarusian.ldf  = Aleksey Novodvorsky, Andrew Shadura
                  \Contact <andrew [at] shadura [dot] me> ,
bosnian.ldf     = Samir Halilcevic %% Halilčević
                  \Contact <samir [dot] halilcevic [at] fet [dot] ba> ,
bulgarian.ldf   = Georgi N. Boshnakov
                  \Contact <Georgi Boshnakov [at] manchester [dot] ac [dot] uk> ,
croatian.ldf    = Ivan Kokan
                  \Contact <ivan [dot] kokan [at] gmail [dot] com> ,
estonian.ldf    = Jaan Vajakas
                  \Contact <jaanvajakas [at] hot [dot] ee> ,
frenchb.ldf     = Daniel Flipo
                  \Contact <daniel [dot] flipo [at] free [dot] fr> ,
friulan.ldf     = Claudio Beccari
                  \Contact <claudio [dot] beccari [at] gmail [dot] com> ,
georgian.ldf    = Levan Shoshiashvili
                  \Contact <shoshia [at] hotmail [dot] com> ,
austrian.ldf    = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
german.ldf      = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
germanb.ldf     = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
naustrian.ldf   = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
ngerman.ldf     = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
ngermanb.ldf    = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
nswissgerman.ldf = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
swissgerman.ldf = Juergen Spitzmueller
                  \Contact <juergen [at] spitzmueller [dot] org> ,
greek.ldf       = Guenter Milde
                  \Contact <milde [at] users [dot] sf [dot] net> ,
magyar.ldf      = Peter Szabo %% Péter Szabó
                  \Contact <http://www.math.bme.hu/latex/> ,
italian.ldf     = Claudio Beccari
                  \Contact <claudio [dot] beccari [at] gmail [dot] com> ,
japanese.ldf    = Japanese TEX Development Community
                  \Contact <https://github.com/texjporg/babel-japanese> ,
latin.ldf       = Claudio Beccari
                  \Contact <claudio [dot] beccari [at] gmail [dot] com> ,
macedonian.ldf  = Stojan Trajanovski
                  \Contact <stojan [dot] trajanovski [at] gmail [dot] com> ,
occitan.ldf     = Cedric Valmary %% Cédric Valmary
                  \Contact <cvalmary [at] yahoo [dot] fr> ,
piedmontese.ldf = Claudio Beccari
                  \Contact <claudio [dot] beccari [at] gmail [dot] com> ,
pinyin.ldf      = Werner Lemberg
                  \Contact <wl [at] gnu [dot] org> ,
romansh.ldf     = Claudio Beccari
                  \Contact <claudio [dot] beccari [at] gmail [dot] com> ,
russain.ldf     = Igor A [dot]  Kotelnikov
                  \Contact <kia999 [at] mail [dot] ru> ,
serbianc.ldf    = Filip Brcic
                  \Contact <brcha [at] users [dot] sourceforge [dot] net> ,
spanglish.ldf   = J [dot]  Luis Rivera
                  \Contact <jlrn77 [at] gmail [dot] com> ,
spanish.ldf     = Javier Bezos
                  \Contact <http://www.texnia.com/contact.html> ,
thaicjk.ldf     = Werner Lemberg
                  \Contact <wl [at] gnu [dot] org> ,
ukraineb.ldf    = Sergiy Ponomarenko
                  \Contact <sergiy [dot] pono­marenko [at] gmail [dot] com> ,
vietnamese.ldf  = Werner Lemberg
                  \Contact <wl [at] gnu [dot] org> ,
%--------------------------------- LAST LINE
{\latexbug@empty} = {} ,
%    \end{macrocode}
%
% Keep the data but throw away the loop function.
%    \begin{macrocode}
\endgroup
%    \end{macrocode}
%
% \begin{macro}{\latexbug@addtofilelist}
%   Save the kernel version of \cs{\@addtofilelist}.
%    \begin{macrocode}
\let\latexbug@addtofilelist\@addtofilelist
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\latexbug@zzzz}
% \begin{macro}{\latexbug@expl}
%   Storage for third-party files and those from the \LaTeX3 set on GitHub.
%    \begin{macrocode}
\def\latexbug@zzzz{}
\def\latexbug@expl{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\latexbug@process@table}
% \begin{macro}{\process@table}
%   A hook into a convenient place in the document set up: the
%   initialisation of NFSS during the \cs{document} macro. If either
%   \cs{latexbug@zzzz} or \cs{latexbug@expl} have any content then there is
%   a message to issue, it's just a question of deciding which one.
%    \begin{macrocode}
\let\latexbug@process@table\process@table
\def\process@table{\global\let\@addtofilelist\latexbug@addtofilelist
  \latexbug@process@table
  \ifx\latexbug@zzzz\latexbug@empty
    \ifx\latexbug@expl\latexbug@empty
    \else
      \PackageError{latexbug}%
        {LaTeX3 file(s)\MessageBreak
\MessageBreak
This test files uses the LaTeX3 file(s)\MessageBreak
\MessageBreak
        ==============\MessageBreak
        \latexbug@expl
        ==============\MessageBreak
        \MessageBreak
You should report bugs in these packages\MessageBreak
at the LaTeX3 GitHub site,\MessageBreak
https://github.com/latex3/latex3/issues\MessageBreak
(Or remove them from your example,\MessageBreak
if they are not necessary to\MessageBreak
exhibit the problem).\MessageBreak
}{Please correct your test file prior
                     to submitting the bug report.\MessageBreak
                     Otherwise it is likely to be rejected!}%
    \fi
  \else
      \PackageError{latexbug}%
                   {Third-party file(s)\MessageBreak
\MessageBreak
This test file uses third-party file(s)\MessageBreak
\MessageBreak
        ==============\MessageBreak
        \latexbug@zzzz
        ==============\MessageBreak
        \MessageBreak
So you should contact the authors\MessageBreak
of these files, not the LaTeX Team!\MessageBreak
(Or remove the packages that load\MessageBreak
them, if they are not necessary to\MessageBreak
exhibit the problem).\MessageBreak
\MessageBreak
If you think the bug is in core LaTeX\MessageBreak
(as maintained by the LaTeX Team) but\MessageBreak
these files are needed to demonstrate\MessageBreak
the problem, please continue and mention\MessageBreak
this explicitly in your bug report}{Please correct your test file prior
                     to submitting the bug report.\MessageBreak
                     Otherwise it is likely to be rejected!}%
  \fi
}  
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@addtofilelist}
% \begin{macro}{\latexbug@iftoplevel}
%   First, a test to see if we are at the top level: there's no need to
%   test dependencies of packages. Assuming we are doing a check, the aim
%   is to see if the current name is known, and if it is whether it fits into
%   one of our special cases. If it's one of the \LaTeX3 GitHub packages it
%   gets recorded in a dedicated space. Third-party package can also have
%   information about where to report issues: this is all stored for reporting
%   later.
%    \begin{macrocode}
\def\@addtofilelist#1{%
% \show\@currnamestack
  \expandafter\latexbug@iftoplevel\@currnamestack {}\@nil
  \begingroup
    \xdef\latexbug@x{#1}% TODO: one-level sanitize
    \expandafter
    \ifx\csname latexbug@@\latexbug@x\endcsname\relax
      \def\latexbug@y{}%
    \else
      \xdef\latexbug@y{\csname latexbug@@\latexbug@x\endcsname}%
    \fi
    \ifx\latexbug@y\latexbug@us\else
      \ifx\latexbug@y\latexbug@usstar
        \begingroup
          \let\MessageBreak\relax
          \xdef\latexbug@expl{%
            \latexbug@expl\latexbug@x
            \MessageBreak
          }%
        \endgroup
      \else
        \ifx\latexbug@y\latexbug@ignore\else
           {\let\MessageBreak\relax
             \xdef\latexbug@zzzz{\latexbug@zzzz\latexbug@x
               \ifx\latexbug@y\latexbug@empty\else
                 \space\space -> \space \latexbug@y\fi
               \MessageBreak}}%
        \fi
      \fi
    \fi
    \endgroup
  \fi
  \latexbug@addtofilelist{#1}}
\def\latexbug@iftoplevel #1#2\@nil{%
  \def\next{#1}%
  \ifx\next\@empty
}
\endinput
%</package>
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \Finale
%

