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

Google Inc.
 Dmitry Vyukov
 Andrey Konovalov
 David Drysdale
 Vishwath Mohan
 Billy Lau
 Michael Pratt
 Jess Frazelle
 Zach Riggle
 Willem de Bruijn
 Eric Biggers
 Atul Prakash
 Julia Hansbrough
 Dan Austin
 Victor Hsieh
 Michael A. Specter
Baozeng Ding
Lorenzo Stoakes
Jeremy Huang
Shuai Bai
Alexander Popov
Jean-Baptiste Cayrou
Yuzhe Han
Thomas Garnier
Utkarsh Anand
Tobias Klauser
Tim Tianyang Chen
Ed Maste
Sumukha PK
Mitchell Horne
Denis Efremov
Ondrej Mosnacek
Daniel Borkmann
Joey Jiao
Anton Lindqvist
Tobin Harding
Shankara Pailoor
Michael Tuexen
Hou Jingyi
Kamil Rytarowski
Siddharth Muralee
Dan Robertson
Mark Johnston
Mellanox Technologies
 Noa Osherovich
Cody Holliday
JinWoo Lee
Andrew Turner
