# This is the official list of Wuffs authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.

# Names should be added to this file as one of
#     Organization's name
#     Individual's name <submission email address>
#     Individual's name <submission email address> <email2> <emailN>
# See CONTRIBUTORS for the meaning of multiple email addresses.

# Please keep the list sorted.

Andrew Dassonville <dassonville.andrew@gmail.com>
Google Inc.
Jimmy Casey <casey.jimmy@gmail.com>
Magnus Anderson <magnus@iastate.edu>
Michael Mc Donnell <michael@mcdonnell.dk>
Mike Kaufman <mkaufman@microsoft.com>
Muhammad Aldo Firmansyah <TheCrott@users.noreply.github.com>
Přemysl Eric Janouch <p@janouch.name>
