# This is the official list of people who can contribute
# (and typically have contributed) code to the Wuffs repository.
# The AUTHORS file lists the copyright holders; this file
# lists people.  For example, Google employees are listed here
# but not in AUTHORS, because Google holds the copyright.
#
# The submission process automatically checks to make sure
# that people submitting code are listed in this file (by email address).
#
# Names should be added to this file only after verifying that
# the individual or the individual's organization has agreed to
# the appropriate Contributor License Agreement, found here:
#
#     http://code.google.com/legal/individual-cla-v1.0.html
#     http://code.google.com/legal/corporate-cla-v1.0.html
#
# The agreement for individuals can be filled out on the web.
#
# When adding J Random Contributor's name to this file,
# either J's name or J's organization's name should be
# added to the AUTHORS file, depending on whether the
# individual or corporate CLA was used.

# Names should be added to this file like so:
#     Individual's name <submission email address>
#     Individual's name <submission email address> <email2> <emailN>
#
# An entry with multiple email addresses specifies that the
# first address should be used in the submit logs and
# that the other addresses should be recognized as the
# same person when interacting with Gerrit.

# Please keep the list sorted.

Andrew Dassonville <dassonville.andrew@gmail.com>
Chris Palmer <chris@noncombatant.org>
Damian Kaczmarek <rush@rushbase.net>
Egor Pugin <egor.pugin@gmail.com>
Jimmy Casey <casey.jimmy@gmail.com>
Leo Neat <lneat@google.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>
Nigel Tao <nigeltao@golang.org>
Patrick Georgi <pgeorgi@google.com>
Peter Kasting <pkasting@chromium.org>
Přemysl Eric Janouch <p@janouch.name>
Richard Hughes <rhughes@redhat.com>
Samuel Bronson <naesten@gmail.com>
sarastro-nl <nlsarastro@gmail.com>
zhuzeitou <zhuzeitou@gmail.com>
