# Names should be added to this file with this pattern:
#
# For individuals:
#   Name <email address>
#
# For organizations:
#   Organization <fnmatch pattern>
#
# See python fnmatch module documentation for more information.

The Chromium Authors <*@chromium.org>
Google Inc. <*@google.com>
Sergiy Byelozyorov <rryk.ua@gmail.com>
Seo Sanghyeon <sanxiyn@gmail.com>
Alex Scheele <alexscheele@gmail.com>
Andrew Brampton <me@bramp.net>
Paweł Hajdan jr <phajdan.jr@gmail.com>
Jesse Miller <jesse@jmiller.biz>
Szymon Piechowicz <szymonpiechowicz@o2.pl>
James Vega <vega.james@gmail.com>
Marco Rodrigues <gothicx@gmail.com>
Matthias Reitinger <reimarvin@gmail.com>
Peter Bright <drpizza@quiscalusmexicanus.org>
Arthur Lussos <developer0420@gmail.com>
Masahiro Yado <yado.masa@gmail.com>
Yarin Kaul <yarin.kaul@gmail.com>
Gaetano Mendola <mendola@gmail.com>
Comodo CA Limited
Torchmobile Inc.
Craig Schlenter <craig.schlenter@gmail.com>
Ibrar Ahmed <ibrar.ahmad@gmail.com>
Naoki Takano <takano.naoki@gmail.com>
Fabien Tassin <fta@sofaraway.org>
Kunal Thakar <kunalt@gmail.com>
Mohamed Mansour <m0.interactive@gmail.com>
Joshua Roesslein <jroesslein@gmail.com>
Yong Shin <sy3620@gmail.com>
Laszlo Radanyi <bekkra@gmail.com>
Raman Tenneti <raman.tenneti@gmail.com>
Kyle Nahrgang <kpn24@drexel.edu>
Kim Christensen <kimworking@gmail.com>
Paul Robinson <paulrobinson85@googlemail.com>
Josué Ratelle <jorat1346@gmail.com>
Edward Crossman <tedoc2000@gmail.com>
Nikita Ofitserov <himikof@gmail.com>
Sean Bryant <sean@cyberwang.net>
Robert Sesek <rsesek@bluestatic.org>
Janwar Dinata <j.dinata@gmail.com>
Will Hirsch <chromium@willhirsch.co.uk>
Yoav Zilberberg <yoav.zilberberg@gmail.com>
Joel Stanley <joel@jms.id.au>
Jacob Mandelson <jacob@mandelson.org>
Yuri Gorobets <yuri.gorobets@gmail.com>
Paul Wicks <pwicks86@gmail.com>
Thiago Farina <thiago.farina@gmail.com>
Viet-Trung Luu <viettrungluu@gmail.com>
Pierre-Antoine LaFayette <pierre.lafayette@gmail.com>
Song YeWen <ffmpeg@gmail.com>
Philippe Beauchamp <philippe.beauchamp@gmail.com>
Vedran Šajatović <vedran.sajatovic@gmail.com>
Randy Posynick <randy.posynick@gmail.com>
Bruno Calvignac <bruno@flock.com>
Jaime Soriano Pastor <jsorianopastor@gmail.com>
Bryan Donlan <bdonlan@gmail.com>
Ramkumar Ramachandra <artagnon@gmail.com>
Dominic Jodoin <dominic.jodoin@gmail.com>
Kaspar Brand <googlecontrib@velox.ch>
Clemens Fruhwirth <clemens@endorphin.org>
Kevin Lee Helpingstine <sig11@reprehensible.net>
Bernard Cafarelli <voyageur@gentoo.org>
Vernon Tang <vt@foilhead.net>
Alexander Sulfrian <alexander@sulfrian.net>
Philippe Beaudoin <philippe.beaudoin@gmail.com>
Mark Hahnenberg <mhahnenb@andrew.cmu.edu>
Alex Gartrell <agartrell@cmu.edu>
Leith Bade <leith@leithalweapon.geek.nz>
James Choi <jchoi42@pha.jhu.edu>
Paul Kehrer <paul.l.kehrer@gmail.com>
Chamal De Silva <chamalsl@yahoo.com>
Jay Soffian <jaysoffian@gmail.com>
Brian G. Merrell <bgmerrell@gmail.com>
Matthew Willis <appamatto@gmail.com>
Brian Merrell, Novell Inc. <bgmerrell@gmail.com>
Ryan Sleevi <ryan-chromium-dev@sleevi.com>
Satoshi Matsuzaki <satoshi.matsuzaki@gmail.com>
Benjamin Jemlich <pcgod99@gmail.com>
Ningxin Hu <ningxin.hu@intel.com>
James Wei <james.wei@intel.com>
Haitao Feng <haitao.feng@intel.com>
Jared Wein <weinjared@gmail.com>
Mingmin Xie <melvinxie@gmail.com>
Michael Gilbert <floppymaster@gmail.com>
Giuseppe Iuculano <giuseppe@iuculano.it>
James Willcox <jwillcox@litl.com>
Shreyas VA <v.a.shreyas@gmail.com>
Steven Pennington <spenn@engr.uvic.ca>
Jorge Villatoro <jorge@tomatocannon.com>
Paul Nettleship <pnettleship@gmail.com>
David Benjamin <davidben@mit.edu>
Sevan Janiyan <venture37@geeklan.co.uk>
Peter Beverloo <peter@chromium.org>
Lauri Oherd <lauri.oherd@gmail.com>
Ben Karel <eschew@gmail.com>
Sam McDonald <sam@sammcd.com>
Magnus Danielsson <fuzzac@gmail.com>
Kushal Pisavadia <kushi.p@gmail.com>
Maarten Lankhorst <m.b.lankhorst@gmail.com>
Vipul Bhasin <vipul.bhasin@gmail.com>
Ryan Norton <rnorton10@gmail.com>
Dillon Sellars <dill.sellars@gmail.com>
Seshadri Mahalingam <seshadri.mahalingam@gmail.com>
Clement Scheelfeldt Skau <clementskau@gmail.com>
David Futcher <david.mike.futcher@gmail.com>
Ramkumar Gokarnesan <ramkumar.gokarnesan@gmail.com>
Matt Arpidone <mma.public@gmail.com>
ruben <chromium@hybridsource.org>
NVIDIA Corporation <*@nvidia.com>
Torsten Kurbad <google@tk-webart.de>
Max Perepelitsyn <pph34r@gmail.com>
Luke Zarko <lukezarko@gmail.com>
Felix H. Dahlke <fhd@ubercode.de>
Ali Vathi <ali.akbar@gmail.com>
Mathias Bynens <mathias@qiwi.be>
Mark Seaborn <mrs@mythic-beasts.com>
Amruth Raj <amruthraj@motorola.com>
Amruth Raj <ckqr36@motorola.com>
Gajendra Singh <wxjg68@motorola.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
Christopher Dale <chrelad@gmail.com>
Sanjoy Pal <ncj674@motorola.com>
Mike Tilburg <mtilburg@adobe.com>
Peter Brophy <pbrophy@adobe.com>
Robert Goldberg <goldberg@adobe.com>
Don Woodward <woodward@adobe.com>
Vinay Anantharaman <vinaya@adobe.com>
Naveen Bobbili <naveenbobbili@motorola.com>
Vamshikrishna Yellenki <vamshi@motorola.com>
Robert Nagy <robert.nagy@gmail.com>
Nayan Kumar K <nayankk@motorola.com>
ShankarGanesh K <blr.bmlab@gmail.com>
Goutham Jagannatha <wrm364@motorola.com>
Rosen Dash <rosen.dash@gmail.com>
Naveen Bobbili <qghc36@motorola.com>
Ravi Phaneendra Kasibhatla <ravi.kasibhatla@motorola.com>
Rosen Dash <nqk836@motorola.com>
Parag Radke <nrqv63@motorola.com>
Ted Vessenes <tedvessenes@gmail.com>
Yair Yogev <progame@chromium.org>
Chandra Shekar Vallala <brk376@motorola.com>
Patrasciuc Sorin Cristian <cristian.patrasciuc@gmail.com>
Halton Huo <halton.huo@intel.com>
Shiliu Wang <aofdwsl@gmail.com>
Gao Chun <gaochun.dev@gmail.com>
Clinton Staley <clintstaley@gmail.com>
Clinton Staley <clintstaley@chromium.org>
Devlin Cronin <rdevlin.cronin@gmail.com>
Junmin Zhu <junmin.zhu@intel.com>
Cem Kocagil <cem.kocagil@gmail.com>
Simon Hong <simon.hong81@gmail.com>
Lu Guanqun <guanqun.lu@gmail.com>
François Beaufort <beaufort.francois@gmail.com>
Eriq Augustine <eriq.augustine@gmail.com>
Francois Kritzinger <francoisk777@gmail.com>
Erik Hill <erikghill@gmail.com>
Mao Yujie <maojie0924@gmail.com>
Pan Deng <pan.deng@intel.com>
Aaron Leventhal <aaronlevbugs@gmail.com>
Peter Collingbourne <peter@pcc.me.uk>
Aaron Randolph <aaron.randolph@gmail.com>
Yumikiyo Osanai <yumios.art@gmail.com>
Matthew Robertson <matthewrobertson03@gmail.com>
Mao Yujie <yujie.mao@intel.com>
Xu Samuel <samuel.xu@intel.com>
Jin Yang <jin.a.yang@intel.com>
Xinchao He <hexinchao@gmail.com>
Changbin Shao <changbin.shao@intel.com>
Stephen Searles <stephen.searles@gmail.com>
Arun Mankuzhi <arun.m@samsung.com>
Taylor Price <trprice@gmail.com>
Alexandru Chiculita <achicu@adobe.com>
Eric Rescorla <ekr@rtfm.com>
Alexandre Abreu <wiss1976@gmail.com>
Erik Sjölund <erik.sjolund@gmail.com>
Simon Arlott <simon.arlott@gmail.com>
Alexey Korepanov <alexkorep@gmail.com>
Mitchell Rosen <mitchellwrosen@chromium.org>
Yongsheng Zhu <yongsheng.zhu@intel.com>
Shouqun Liu <shouqun.liu@intel.com>
Jake Helfert <jake@helfert.us>
Hongbo Min <hongbo.min@intel.com>
Anastasios Cassiotis <tom.cassiotis@gmail.com>
Evangelos Foutras <evangelos@foutrelis.com>
Pavel Ivanov <paivanof@gmail.com>
Rene Bolldorf <rb@radix.io>
Petar Jovanovic <petarj@mips.com>
Sergio Carlos Morales Angeles <carloschilazo@gmail.com>
Mihai Maerean <mmaerean@adobe.com>
Kaustubh Atrawalkar <kaustubh.ra@gmail.com>
Robert Bear Travis <betravis@adobe.com>
Robert Bear Travis <bear.travis@gmail.com>
Max Vujovic <mvujovic@adobe.com>
Jakob Weigert <jakob.j.w@googlemail.com>
Catalin Badea <badea@adobe.com>
Joshua Lock <joshua.lock@intel.com>
