# This is the official list of Skia authors for copyright purposes.
#
# Names should be added to this file with one of the following patterns:
#
# For individual contributors:
# Name <email address>
#
# For corporate contributors:
# Organization <fnmatch pattern>
# See examples below or python fnmatch module documentation for more information.
#
# Please keep the list sorted alphabetically.

ACCESS CO., LTD. <*@access-company.com>
Anthony Catel <paraboul@gmail.com>
ARM <*@arm.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
George Wright <george@mozilla.com>
Google Inc. <*@google.com>
Herb Derby <herbderby@gmail.com>
Igalia <*@igalia.com>
Intel <*@intel.com>
Ion Rosca <rosca@adobe.com>
Jacek Caban <cjacek@gmail.com>
Jeff Muizelaar <jmuizelaar@mozilla.com>
MIPS <*@imgtec.com>
NVIDIA <*@nvidia.com>
Opera Software ASA <*@opera.com>
Pavel Krajcevski <pavel@cs.unc.edu>
Samsung <*@samsung.com>
Samsung Open Source Group <*@osg.samsung.com>
Skia <*@skia.org>
Skia Buildbots <skia.buildbots@gmail.com>
Sony Mobile Communications Inc. <*@sonymobile.com>
Steve Singer <steve@ssinger.info>
The Chromium Authors <*@chromium.org>
Thiago Fransosi Farina <thiago.farina@gmail.com>
Jose Mayol <jei.mayol@gmail.com>
