This directory contains the hashes of tar.gz files uploaded to cloud storage.
Hooks in the DEPS files run "download_from_google_storage" to download these
tarfiles, and unpack them.  These tar files contain a stable Dart SDK, which
is used to build the observatory and to run the test scripts.

The hooks use the --auto-platform feature, so that only the SDK for the
current platform (linux, macos, or windows) is downloaded.  This requires
the subdirectories to have the special names "linux", "win", and "mac", which
the download script is hardcoded to recognize.

The linux SDK has three extra dart executables added to the bin directory.
'dart-mips', 'dart-arm', and 'dart-arm64' are executables compiled to run on
mips, arm, and arm64 (aarch64) processors, respectively.

To upload new versions of these tar files, use the "upload_to_google_storage"
tool in depot_tools, and download the new stable SDKs from the dartlang.org
web page.  The mips and arm executables must be copied from the machines that
build them, and stripped.  There should be no need to update these tar files
for every new stable version of Dart.

