# 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

Cody Schroeder <schroederc@google.com>
James Dennett <jdennett@google.com>
Jeffrey van Gogh <jvg@google.com>
Juan Chen <juanch@google.com>
Karl Mazurak <mazurak@google.com>
Luke Zarko <zarko@google.com>
Michael Fromberger <fromberger@google.com>
Shuanglei Tao <tsl0922@gmail.com>
Benjy Weinberger <benjyw@gmail.com>
Nghia Tran <tcnghia@gmail.com>
Michael Zhou <zhoumotongxue008@gmail.com>
Peter Collingbourne <peter@pcc.me.uk>
Jeremy Roman <jbroman@chromium.org>
Jinwoo Lee <jinwoo@google.com>
John Renner <john@jrenner.net>
Michel Alexandre Salim <michel@michel-slm.name>
Misha Zatsman <mishaz@gmail.com>
Marcel Hlopko <hlopko@google.com>
Jacob Parker <jacob@solidangle.ca>
Peter Ludemann <pludemann@google.com>
Clement Courbet <courbet@google.com>
Mikita Belahlazau <nbeloglazov@google.com>
John Edmonds <jedmonds@spotify.com>
Daniel Smith <smith.daniel.br@gmail.com>
Justin Buchanan <justinbuchanan@google.com>
Shahms King <shahms@google.com>
Daniel Moy <danielmoy@google.com>
Salvatore Guarnieri <salguarnieri@google.com>
Jay Sachs <jsachs@google.com>
Alexander Bezzubov <alex@sourced.tech>
Ayaz Hafiz <ayaz.hafiz.1@gmail.com>
