# People who have agreed to one of the CLAs and can contribute patches.
# 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.
#
# https://developers.google.com/open-source/cla/individual
# https://developers.google.com/open-source/cla/corporate
#
# Names should be added to this file as:
#     Name <email address>
#
# Please keep the list sorted by family name.
Dan Anderson <danrand@google.com>
Katherine Applewhite <kapplewhite@google.com>
Benjamin Barenblat <bbaren@google.com>
Ryan Bonick <rbonick@google.com>
Radu Cornea <raduc@google.com>
Isaac Dancy <idancy@google.com>
Nathan Dykhuis <ndykhuis@google.com>
Travis Feuling <feuling@google.com>
Becca Harper <beccaharper@google.com>
Dave Hawkey <dhawkey@google.com>
Joachim Heck <joachimheck@google.com>
Caleb Jares <calebjares@google.com>
Imad Kariapper <imadk@google.com>
Carlos Kirkconnell <ckirk@google.com>
Ariel Krasovsky <krasovsky@google.com>
Christopher Lindsay <cjlindsay@google.com
Daryl Olander <darylo@google.com>
Marissa Stephens <mastephens@google.com>
Manas Tungare <manas@google.com>
