This is the repository of the Dart programming language and its associated
tools, libraries, and samples.

For license information, please see LICENSE.

You can find more about Dart online at http://dartlang.org or
http://code.google.com/p/dart.

Here's a brief guide to what's in here:

lib/           Libraries that ship with the Dart runtime (core, html, etc.).
pkg/           Packages that are not shipped with the core runtime.
runtime/       Dart VM and code for running it as a standalone app.
samples/       Sample Dart programs.
tests/         Automated tests.
third_party/   External dependencies.
tools/         Build scripts, text editor support files, etc.
utils/         Utilities for Dart applications.
