<?php
/**
 * Copyright (c) 2015, 2018 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 * Nathan Gervais (Eclipse Foundation) - Initial implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
 ?>
<h1>Thank you Friends of Helios!</h1>
<p>
  A big thank you to all <strong>487</strong> of our Friends of Helios. The funds
  raised will be used to support the Eclipse community through services
  such as providing more bandwidth for users and committers, sponsoring
  Eclipse events around the world and purchasing additional hardware to
  host Eclipse projects. Your generousity is very much appreciated.
  Helios wouldn't be the same without you!
</p>

<strong>Daniele Gagliardi </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Mark Tippetts </strong>
Anonymous
<strong>Anonymous </strong>
Jody Garnett
<strong>Cho Hyunjong </strong>
Anonymous
<strong>Craig Condit </strong>
Anonymous
<strong>Uwe Kitzmann </strong>
Anonymous
<strong>Ian Skerrett </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Wendell Beckwith </strong>
Marcus Hirt
<strong>Anonymous </strong>
Anonymous
<strong>Wolfgang Schell </strong>
Anonymous
<strong>Sam Wu </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Christian Schubert </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Mickael Istria </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Alex Weirig </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Anonymous </strong>
Robert Wloch
<strong>Dong taek Kim </strong>
Bruno Medeiros
<strong>Anonymous </strong>
Robert Meagher
<strong>Anonymous </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Anonymous </strong>
Anonymous
<strong>Anonymous </strong>
Guy Shalev
<strong>Anonymous </strong>
Reibert Arbring
<strong>Dennis Laliberte </strong>


