# This is the official list of people who can contribute
# (and typically have contributed) code to the LUCI project.
# 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.
#
# 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.

Aaron Gable <agable@chromium.org>
Adrian Kuegel <akuegel@chromium.org>
Alan Cutter <alancutter@chromium.org>
Andrii Shyshkalov <tandrii@chromium.org>
Cory Massaro <cmassaro@google.com>
Dan Jacques <dnj@chromium.org>
Dirk Pranke <dpranke@chromium.org>
Eric Boren <borenet@google.com>
Eric Seidel <eseidel@google.com>
Erik Staab <estaab@chromium.org>
Henrik Kjellander <kjellander@chromium.org>
Isaac Levy <ilevy@chromium.org>
John Abd-El-Malek <jam@chromium.org>
Luke Palmer <luqui@chromium.org>
Marc-Antoine Ruel <maruel@chromium.org>
Martin Kosiba <mkosiba@chromium.org>
Maurizio Rapisarda <mrapisarda@google.com>
Michael Achenbach <machenbach@chromium.org>
Michael Moss <mmoss@chromium.org>
Mike Case <mikecase@chromium.org>
Mike Stipicevic <stip@chromium.org>
Nico Weber <thakis@chromium.org>
Nodir Turakulov <nodir@chromium.org>
Patrick Valenzuela <pvalenzuela@chromium.org>
Paweł Hajdan <phajdan.jr@chromium.org>
Peter Mayo <petermayo@chromium.org>
Philippe Gervais <pgervais@chromium.org>
Primiano Tucci <primiano@chromium.org>
Quinten Yearsley <qyearsley@chromium.org>
Robert Iannucci <iannucci@chromium.org>
Robert Sesek <rsesek@chromium.org>
Roberto Carrillo <robertocn@chromium.org>
Ryan Kubiak <rkubiak@chromium.org>
Ryan Tseng <hinoka@chromium.org>
Scott Violet <sky@chromium.org>
Sergiy Belozorov <sergiyb@chromium.org>
Shuotao Gao <stgao@chromium.org>
Sivachandra Reddy <sivachandra@chromium.org>
Stefan Zager <szager@chromium.org>
Stephen Martinis <martiniss@chromium.org>
Sebastien Marchand <sebmarchand@chromium.org>
Tianyin Zhang <zty@chromium.org>
Tony Gentilcore <tonyg@chromium.org>
Vadim Shtayura <vadimsh@chromium.org>
William Hesse <whesse@google.com>
