diff --git a/.gn b/.gn
index 1f94854..5d79ebc3 100644
--- a/.gn
+++ b/.gn
@@ -48,20 +48,29 @@
   "//components/omnibox/*",
   "//components/os_crypt/*",
   "//components/pref_registry/*",
+  "//components/translate/*",
+  "//components/ui/*",
   "//components/undo/*",
   "//components/update_client/*",
+  "//components/upload_list/*",
   "//components/url_formatter/*",
   "//components/url_matcher/*",
   "//components/user_manager/*",
   "//components/user_prefs/*",
   "//components/variations/*",
+  "//components/visitedlink/*",
   "//components/wallpaper/*",
   "//components/web_cache/*",
-  "//components/webcrypto/*",
   "//components/web_modal/*",
+  "//components/web_resource/*",
   "//components/web_view/*",
+  "//components/webcrypto/*",
   "//components/webdata/*",
   "//components/webdata_services/*",
+  "//components/webp_transcode/*",
+  "//components/webui_generator/*",
+  "//components/webusb/*",
+  "//components/wifi/*",
 
   #"//content/*",  # A whole lot of errors.
   "//content/public/common:result_codes",
diff --git a/DEPS b/DEPS
index d0491d1e..452c1a3 100644
--- a/DEPS
+++ b/DEPS
@@ -43,7 +43,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '97a062a564b09b498633305a4500a6c5a5016f93',
+  'v8_revision': 'b01f6b3838a1c00f9da6ffe6a746287a59a78bdd',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -59,7 +59,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': 'ae2d47b22d213cb36a66326c3167cfbbae90b9d4',
+  'pdfium_revision': 'b5cbfb4cd12b6499912367f9a1e11c666157acb8',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
diff --git a/base/json/json_file_value_serializer.cc b/base/json/json_file_value_serializer.cc
index 72a09700..9862703 100644
--- a/base/json/json_file_value_serializer.cc
+++ b/base/json/json_file_value_serializer.cc
@@ -100,8 +100,9 @@
   }
 }
 
-base::Value* JSONFileValueDeserializer::Deserialize(int* error_code,
-                                                    std::string* error_str) {
+scoped_ptr<base::Value> JSONFileValueDeserializer::Deserialize(
+    int* error_code,
+    std::string* error_str) {
   std::string json_string;
   int error = ReadFileToString(&json_string);
   if (error != JSON_NO_ERROR) {
diff --git a/base/json/json_file_value_serializer.h b/base/json/json_file_value_serializer.h
index aab47ee..4e5e09c 100644
--- a/base/json/json_file_value_serializer.h
+++ b/base/json/json_file_value_serializer.h
@@ -58,8 +58,8 @@
   // If |error_message| is non-null, it will be filled in with a formatted
   // error message including the location of the error if appropriate.
   // The caller takes ownership of the returned value.
-  base::Value* Deserialize(int* error_code,
-                           std::string* error_message) override;
+  scoped_ptr<base::Value> Deserialize(int* error_code,
+                                      std::string* error_message) override;
 
   // This enum is designed to safely overlap with JSONReader::JsonParseError.
   enum JsonFileError {
diff --git a/base/json/json_string_value_serializer.cc b/base/json/json_string_value_serializer.cc
index f2d078f3..af7e010 100644
--- a/base/json/json_string_value_serializer.cc
+++ b/base/json/json_string_value_serializer.cc
@@ -48,12 +48,11 @@
 
 JSONStringValueDeserializer::~JSONStringValueDeserializer() {}
 
-Value* JSONStringValueDeserializer::Deserialize(int* error_code,
-                                                std::string* error_str) {
+scoped_ptr<Value> JSONStringValueDeserializer::Deserialize(
+    int* error_code,
+    std::string* error_str) {
   return base::JSONReader::ReadAndReturnError(
-             json_string_,
-             allow_trailing_comma_ ? base::JSON_ALLOW_TRAILING_COMMAS
-                                   : base::JSON_PARSE_RFC,
-             error_code, error_str)
-      .release();
+      json_string_, allow_trailing_comma_ ? base::JSON_ALLOW_TRAILING_COMMAS
+                                          : base::JSON_PARSE_RFC,
+      error_code, error_str);
 }
diff --git a/base/json/json_string_value_serializer.h b/base/json/json_string_value_serializer.h
index bc0e66d..90f697d9 100644
--- a/base/json/json_string_value_serializer.h
+++ b/base/json/json_string_value_serializer.h
@@ -59,8 +59,8 @@
   // If |error_message| is non-null, it will be filled in with a formatted
   // error message including the location of the error if appropriate.
   // The caller takes ownership of the returned value.
-  base::Value* Deserialize(int* error_code,
-                           std::string* error_message) override;
+  scoped_ptr<base::Value> Deserialize(int* error_code,
+                                      std::string* error_message) override;
 
   void set_allow_trailing_comma(bool new_value) {
     allow_trailing_comma_ = new_value;
diff --git a/base/json/json_value_serializer_unittest.cc b/base/json/json_value_serializer_unittest.cc
index 3164d100..7da11cf 100644
--- a/base/json/json_value_serializer_unittest.cc
+++ b/base/json/json_value_serializer_unittest.cc
@@ -93,8 +93,8 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value(
-      str_deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<Value> value =
+      str_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(0, error_code);
   ASSERT_TRUE(error_message.empty());
@@ -112,8 +112,8 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value(
-      str_deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<Value> value =
+      str_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(0, error_code);
   ASSERT_TRUE(error_message.empty());
@@ -129,14 +129,14 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value(
-      str_deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<Value> value =
+      str_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_FALSE(value.get());
   ASSERT_NE(0, error_code);
   ASSERT_FALSE(error_message.empty());
   // Now the flag is set and it must pass.
   str_deserializer.set_allow_trailing_comma(true);
-  value.reset(str_deserializer.Deserialize(&error_code, &error_message));
+  value = str_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code);
   // Verify if the same JSON is still there.
@@ -157,8 +157,8 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value(
-      file_deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<Value> value =
+      file_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(0, error_code);
   ASSERT_TRUE(error_message.empty());
@@ -182,14 +182,14 @@
   // This must fail without the proper flag.
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value(
-      file_deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<Value> value =
+      file_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_FALSE(value.get());
   ASSERT_NE(0, error_code);
   ASSERT_FALSE(error_message.empty());
   // Now the flag is set and it must pass.
   file_deserializer.set_allow_trailing_comma(true);
-  value.reset(file_deserializer.Deserialize(&error_code, &error_message));
+  value = file_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code);
   // Verify if the same JSON is still there.
@@ -205,9 +205,9 @@
   JSONStringValueDeserializer deserializer(kTestWithCommas);
   deserializer.set_allow_trailing_comma(true);
   JSONStringValueDeserializer deserializer_expected(kTestNoCommas);
-  root.reset(deserializer.Deserialize(NULL, NULL));
+  root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(root.get());
-  root_expected.reset(deserializer_expected.Deserialize(NULL, NULL));
+  root_expected = deserializer_expected.Deserialize(NULL, NULL);
   ASSERT_TRUE(root_expected.get());
   ASSERT_TRUE(root->Equals(root_expected.get()));
 }
@@ -216,7 +216,7 @@
   static const char kOriginalSerialization[] =
     "{\"bool\":true,\"double\":3.14,\"int\":42,\"list\":[1,2],\"null\":null}";
   JSONStringValueDeserializer deserializer(kOriginalSerialization);
-  scoped_ptr<Value> root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<Value> root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(root.get());
   ASSERT_TRUE(root->IsType(Value::TYPE_DICTIONARY));
 
@@ -326,7 +326,7 @@
 
   // escaped ascii text -> json
   JSONStringValueDeserializer deserializer(kExpected);
-  scoped_ptr<Value> deserial_root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<Value> deserial_root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(deserial_root.get());
   DictionaryValue* dict_root =
       static_cast<DictionaryValue*>(deserial_root.get());
@@ -350,7 +350,7 @@
 
   // escaped ascii text -> json
   JSONStringValueDeserializer deserializer(kExpected);
-  scoped_ptr<Value> deserial_root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<Value> deserial_root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(deserial_root.get());
   DictionaryValue* dict_root =
       static_cast<DictionaryValue*>(deserial_root.get());
@@ -361,7 +361,7 @@
   // Test converting escaped regular chars
   static const char kEscapedChars[] = "{\"test\":\"\\u0067\\u006f\"}";
   JSONStringValueDeserializer deserializer2(kEscapedChars);
-  deserial_root.reset(deserializer2.Deserialize(NULL, NULL));
+  deserial_root = deserializer2.Deserialize(NULL, NULL);
   ASSERT_TRUE(deserial_root.get());
   dict_root = static_cast<DictionaryValue*>(deserial_root.get());
   ASSERT_TRUE(dict_root->GetString("test", &test_value));
@@ -413,7 +413,7 @@
 
   JSONFileValueDeserializer deserializer(original_file_path);
   scoped_ptr<Value> root;
-  root.reset(deserializer.Deserialize(NULL, NULL));
+  root = deserializer.Deserialize(NULL, NULL);
 
   ASSERT_TRUE(root.get());
   ASSERT_TRUE(root->IsType(Value::TYPE_DICTIONARY));
@@ -461,7 +461,7 @@
 
   JSONFileValueDeserializer deserializer(original_file_path);
   scoped_ptr<Value> root;
-  root.reset(deserializer.Deserialize(NULL, NULL));
+  root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(root.get());
 
   // Now try writing.
@@ -486,7 +486,7 @@
   ASSERT_TRUE(PathExists(source_file_path));
   JSONFileValueDeserializer deserializer(source_file_path);
   scoped_ptr<Value> root;
-  root.reset(deserializer.Deserialize(NULL, NULL));
+  root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(root.get());
 }
 
diff --git a/base/mac/authorization_util.mm b/base/mac/authorization_util.mm
index 1dfd5a01..a97796e8 100644
--- a/base/mac/authorization_util.mm
+++ b/base/mac/authorization_util.mm
@@ -50,8 +50,8 @@
   const char* icon_path_c = [icon_path fileSystemRepresentation];
   size_t icon_path_length = icon_path_c ? strlen(icon_path_c) : 0;
 
-  // The OS will append " Type an administrator's name and password to allow
-  // <CFBundleDisplayName> to make changes."
+  // The OS will dispay |prompt| along with a sentence asking the user to type
+  // the "password to allow this."
   NSString* prompt_ns = base::mac::CFToNSCast(prompt);
   const char* prompt_c = [prompt_ns UTF8String];
   size_t prompt_length = prompt_c ? strlen(prompt_c) : 0;
diff --git a/base/prefs/json_pref_store.cc b/base/prefs/json_pref_store.cc
index 87943d1..22036de 100644
--- a/base/prefs/json_pref_store.cc
+++ b/base/prefs/json_pref_store.cc
@@ -118,7 +118,7 @@
   scoped_ptr<JsonPrefStore::ReadResult> read_result(
       new JsonPrefStore::ReadResult);
   JSONFileValueDeserializer deserializer(path);
-  read_result->value.reset(deserializer.Deserialize(&error_code, &error_msg));
+  read_result->value = deserializer.Deserialize(&error_code, &error_msg);
   read_result->error =
       HandleReadErrors(read_result->value.get(), path, error_code, error_msg);
   read_result->no_dir = !base::PathExists(path.DirName());
diff --git a/base/test/gtest_util.cc b/base/test/gtest_util.cc
index 19cec51..3f44d74 100644
--- a/base/test/gtest_util.cc
+++ b/base/test/gtest_util.cc
@@ -60,8 +60,8 @@
   JSONFileValueDeserializer deserializer(path);
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_message);
   if (!value.get())
     return false;
 
diff --git a/base/values.h b/base/values.h
index 56be542..a64f6a8f 100644
--- a/base/values.h
+++ b/base/values.h
@@ -531,7 +531,8 @@
   // error_code will be set with the underlying error.
   // If |error_message| is non-null, it will be filled in with a formatted
   // error message including the location of the error if appropriate.
-  virtual Value* Deserialize(int* error_code, std::string* error_str) = 0;
+  virtual scoped_ptr<Value> Deserialize(int* error_code,
+                                        std::string* error_str) = 0;
 };
 
 // Stream operator so Values can be used in assertion statements.  In order that
diff --git a/build/ios/grit_whitelist.txt b/build/ios/grit_whitelist.txt
index d1771cc..576d6bb 100644
--- a/build/ios/grit_whitelist.txt
+++ b/build/ios/grit_whitelist.txt
@@ -1,6 +1,3 @@
-IDR_ABOUT_VERSION_CSS
-IDR_ABOUT_VERSION_HTML
-IDR_ABOUT_VERSION_JS
 IDR_APPLE_FLAGS_HTML
 IDR_AUTOFILL_TOOLTIP_ICON
 IDR_AUTOFILL_TOOLTIP_ICON_H
@@ -62,6 +59,9 @@
 IDR_SIGNIN_INTERNALS_INDEX_JS
 IDR_TOOLBAR_SHADOW_FULL_BLEED
 IDR_UBER_UTILS_JS
+IDR_VERSION_UI_CSS
+IDR_VERSION_UI_HTML
+IDR_VERSION_UI_JS
 IDR_WEBUI_CSS_ACTION_LINK
 IDR_WEBUI_CSS_ALERT_OVERLAY
 IDR_WEBUI_CSS_APPS_COMMON
@@ -143,18 +143,8 @@
 IDS_ABOUT_MAC
 IDS_ABOUT_VERSION_32BIT
 IDS_ABOUT_VERSION_64BIT
-IDS_ABOUT_VERSION_COMMAND_LINE
 IDS_ABOUT_VERSION_COMPANY_NAME
 IDS_ABOUT_VERSION_COPYRIGHT
-IDS_ABOUT_VERSION_EXECUTABLE_PATH
-IDS_ABOUT_VERSION_OFFICIAL
-IDS_ABOUT_VERSION_OS
-IDS_ABOUT_VERSION_PATH_NOTFOUND
-IDS_ABOUT_VERSION_PROFILE_PATH
-IDS_ABOUT_VERSION_REVISION
-IDS_ABOUT_VERSION_TITLE
-IDS_ABOUT_VERSION_USER_AGENT
-IDS_ABOUT_VERSION_VARIATIONS
 IDS_ACCEPT_LANGUAGES
 IDS_ACCNAME_BACK
 IDS_ACCNAME_CLEAR_TEXT
@@ -861,5 +851,16 @@
 IDS_TOUCH_EVENTS_NAME
 IDS_UPGRADE_AVAILABLE
 IDS_UPGRADE_AVAILABLE_BUTTON
+IDS_VERSION_UI_COMMAND_LINE
+IDS_VERSION_UI_EXECUTABLE_PATH
+IDS_VERSION_UI_OFFICIAL
+IDS_VERSION_UI_OS
+IDS_VERSION_UI_PATH_NOTFOUND
+IDS_VERSION_UI_PROFILE_PATH
+IDS_VERSION_UI_REVISION
+IDS_VERSION_UI_TITLE
+IDS_VERSION_UI_UNOFFICIAL
+IDS_VERSION_UI_USER_AGENT
+IDS_VERSION_UI_VARIATIONS
 IDS_WEB_FONT_FAMILY
 IDS_WEB_FONT_SIZE
diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc
index e3b0f5ec..16987cb8 100644
--- a/cc/surfaces/surface.cc
+++ b/cc/surfaces/surface.cc
@@ -98,22 +98,11 @@
 
 void Surface::RequestCopyOfOutput(scoped_ptr<CopyOutputRequest> copy_request) {
   if (current_frame_ &&
-      !current_frame_->delegated_frame_data->render_pass_list.empty()) {
-    ScopedPtrVector<CopyOutputRequest>& copy_requests =
-        current_frame_->delegated_frame_data->render_pass_list.back()
-            ->copy_requests;
-
-    if (void* source = copy_request->source()) {
-      // Remove existing CopyOutputRequests made on the Surface by the same
-      // source.
-      auto to_remove = copy_requests.remove_if([source](
-          const CopyOutputRequest* x) { return x->source() == source; });
-      copy_requests.erase(to_remove, copy_requests.end());
-    }
-    copy_requests.push_back(copy_request.Pass());
-  } else {
+      !current_frame_->delegated_frame_data->render_pass_list.empty())
+    current_frame_->delegated_frame_data->render_pass_list.back()
+        ->copy_requests.push_back(copy_request.Pass());
+  else
     copy_request->SendEmptyResult();
-  }
 }
 
 void Surface::TakeCopyOutputRequests(
diff --git a/cc/surfaces/surface_aggregator.cc b/cc/surfaces/surface_aggregator.cc
index 902f836..69618ba8b 100644
--- a/cc/surfaces/surface_aggregator.cc
+++ b/cc/surfaces/surface_aggregator.cc
@@ -547,6 +547,9 @@
   if (provider_)
     provider_->DeclareUsedResourcesFromChild(child_id, referenced_resources);
 
+  for (const auto& render_pass : frame_data->render_pass_list)
+    has_copy_requests_ |= !render_pass->copy_requests.empty();
+
   gfx::Rect damage_rect;
   if (!frame_data->render_pass_list.empty()) {
     RenderPass* last_pass = frame_data->render_pass_list.back();
@@ -563,13 +566,6 @@
     damage_rect.Union(
         MathUtil::MapEnclosingClippedRect(surface_info.second, surface_damage));
   }
-
-  if (surface->factory())
-    surface->factory()->WillDrawSurface(surface->surface_id(), damage_rect);
-
-  for (const auto& render_pass : frame_data->render_pass_list)
-    has_copy_requests_ |= !render_pass->copy_requests.empty();
-
   referenced_surfaces_.erase(it);
   return damage_rect;
 }
diff --git a/cc/surfaces/surface_aggregator_unittest.cc b/cc/surfaces/surface_aggregator_unittest.cc
index bee479c..bfec6e6 100644
--- a/cc/surfaces/surface_aggregator_unittest.cc
+++ b/cc/surfaces/surface_aggregator_unittest.cc
@@ -43,13 +43,6 @@
 class EmptySurfaceFactoryClient : public SurfaceFactoryClient {
  public:
   void ReturnResources(const ReturnedResourceArray& resources) override {}
-  void WillDrawSurface(SurfaceId id, const gfx::Rect& damage_rect) override {
-    last_surface_id_ = id;
-    last_damage_rect_ = damage_rect;
-  }
-
-  gfx::Rect last_damage_rect_;
-  SurfaceId last_surface_id_;
 };
 
 class SurfaceAggregatorTest : public testing::Test {
@@ -173,10 +166,6 @@
 
   SurfaceId ids[] = {root_surface_id_};
   AggregateAndVerify(passes, arraysize(passes), ids, arraysize(ids));
-
-  // Check that WillDrawSurface was called.
-  EXPECT_EQ(gfx::Rect(SurfaceSize()), empty_client_.last_damage_rect_);
-  EXPECT_EQ(root_surface_id_, empty_client_.last_surface_id_);
 }
 
 TEST_F(SurfaceAggregatorValidSurfaceTest, OpacityCopied) {
diff --git a/cc/surfaces/surface_factory.cc b/cc/surfaces/surface_factory.cc
index 72ebdc40d..3e83c8c 100644
--- a/cc/surfaces/surface_factory.cc
+++ b/cc/surfaces/surface_factory.cc
@@ -8,7 +8,6 @@
 #include "cc/output/compositor_frame.h"
 #include "cc/output/copy_output_request.h"
 #include "cc/surfaces/surface.h"
-#include "cc/surfaces/surface_factory_client.h"
 #include "cc/surfaces/surface_manager.h"
 #include "ui/gfx/geometry/size.h"
 
@@ -76,11 +75,6 @@
   manager_->SurfaceModified(surface_id);
 }
 
-void SurfaceFactory::WillDrawSurface(SurfaceId id,
-                                     const gfx::Rect& damage_rect) {
-  client_->WillDrawSurface(id, damage_rect);
-}
-
 void SurfaceFactory::ReceiveFromChild(
     const TransferableResourceArray& resources) {
   holder_.ReceiveFromChild(resources);
diff --git a/cc/surfaces/surface_factory.h b/cc/surfaces/surface_factory.h
index 762d5a2..5af8d2e 100644
--- a/cc/surfaces/surface_factory.h
+++ b/cc/surfaces/surface_factory.h
@@ -11,7 +11,6 @@
 #include "base/containers/scoped_ptr_hash_map.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
-#include "base/observer_list.h"
 #include "cc/output/compositor_frame.h"
 #include "cc/surfaces/surface_id.h"
 #include "cc/surfaces/surface_resource_holder.h"
@@ -56,8 +55,6 @@
   void RequestCopyOfSurface(SurfaceId surface_id,
                             scoped_ptr<CopyOutputRequest> copy_request);
 
-  void WillDrawSurface(SurfaceId id, const gfx::Rect& damage_rect);
-
   SurfaceFactoryClient* client() { return client_; }
 
   void ReceiveFromChild(const TransferableResourceArray& resources);
diff --git a/cc/surfaces/surface_factory_client.h b/cc/surfaces/surface_factory_client.h
index c2a04af6..9866b27 100644
--- a/cc/surfaces/surface_factory_client.h
+++ b/cc/surfaces/surface_factory_client.h
@@ -6,9 +6,7 @@
 #define CC_SURFACES_SURFACE_FACTORY_CLIENT_H_
 
 #include "cc/resources/returned_resource.h"
-#include "cc/surfaces/surface_id.h"
 #include "cc/surfaces/surfaces_export.h"
-#include "ui/gfx/geometry/rect.h"
 
 namespace cc {
 
@@ -17,9 +15,6 @@
   virtual ~SurfaceFactoryClient() {}
 
   virtual void ReturnResources(const ReturnedResourceArray& resources) = 0;
-
-  virtual void WillDrawSurface(SurfaceId surface_id,
-                               const gfx::Rect& damage_rect) {}
 };
 
 }  // namespace cc
diff --git a/cc/surfaces/surface_factory_unittest.cc b/cc/surfaces/surface_factory_unittest.cc
index 9629a4e..c7ce9640 100644
--- a/cc/surfaces/surface_factory_unittest.cc
+++ b/cc/surfaces/surface_factory_unittest.cc
@@ -4,8 +4,6 @@
 
 #include "base/bind.h"
 #include "cc/output/compositor_frame.h"
-#include "cc/output/copy_output_request.h"
-#include "cc/output/copy_output_result.h"
 #include "cc/output/delegated_frame_data.h"
 #include "cc/resources/resource_provider.h"
 #include "cc/surfaces/surface.h"
@@ -521,61 +519,5 @@
   surface_id_ = SurfaceId();
 }
 
-void CopyRequestTestCallback(bool* called,
-                             scoped_ptr<CopyOutputResult> result) {
-  *called = true;
-}
-
-TEST_F(SurfaceFactoryTest, DuplicateCopyRequest) {
-  {
-    scoped_ptr<RenderPass> render_pass(RenderPass::Create());
-    render_pass->referenced_surfaces.push_back(surface_id_);
-    scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
-    frame_data->render_pass_list.push_back(render_pass.Pass());
-    scoped_ptr<CompositorFrame> frame(new CompositorFrame);
-    frame->delegated_frame_data = frame_data.Pass();
-    factory_.SubmitCompositorFrame(surface_id_, frame.Pass(),
-                                   SurfaceFactory::DrawCallback());
-  }
-  void* source1 = &source1;
-  void* source2 = &source2;
-
-  bool called1 = false;
-  scoped_ptr<CopyOutputRequest> request;
-  request = CopyOutputRequest::CreateRequest(
-      base::Bind(&CopyRequestTestCallback, &called1));
-  request->set_source(source1);
-
-  factory_.RequestCopyOfSurface(surface_id_, request.Pass());
-  EXPECT_FALSE(called1);
-
-  bool called2 = false;
-  request = CopyOutputRequest::CreateRequest(
-      base::Bind(&CopyRequestTestCallback, &called2));
-  request->set_source(source2);
-
-  factory_.RequestCopyOfSurface(surface_id_, request.Pass());
-  // Callbacks have different sources so neither should be called.
-  EXPECT_FALSE(called1);
-  EXPECT_FALSE(called2);
-
-  bool called3 = false;
-  request = CopyOutputRequest::CreateRequest(
-      base::Bind(&CopyRequestTestCallback, &called3));
-  request->set_source(source1);
-
-  factory_.RequestCopyOfSurface(surface_id_, request.Pass());
-  // Two callbacks are from source1, so the first should be called.
-  EXPECT_TRUE(called1);
-  EXPECT_FALSE(called2);
-  EXPECT_FALSE(called3);
-
-  factory_.Destroy(surface_id_);
-  surface_id_ = SurfaceId();
-  EXPECT_TRUE(called1);
-  EXPECT_TRUE(called2);
-  EXPECT_TRUE(called3);
-}
-
 }  // namespace
 }  // namespace cc
diff --git a/chrome/VERSION b/chrome/VERSION
index 1110489e..d50d23de 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=48
 MINOR=0
-BUILD=2537
+BUILD=2538
 PATCH=0
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd
index 8fbedbd..fe42ebb 100644
--- a/chrome/app/chromium_strings.grd
+++ b/chrome/app/chromium_strings.grd
@@ -207,9 +207,6 @@
       <message name="IDS_ABOUT_VERSION_COPYRIGHT" desc="Copyright information on the about pages">
         Copyright <ph name="YEAR">$1</ph> The Chromium Authors. All rights reserved.
       </message>
-      <message name="IDS_ABOUT_VERSION_LICENSE" desc="The label below the copyright message, containing the URLs.">
-        Chromium is made possible by the <ph name="BEGIN_LINK_CHROMIUM">&lt;a target="_blank" href="$1"&gt;</ph>Chromium<ph name="END_LINK_CHROMIUM">&lt;/a&gt;</ph> open source project and other <ph name="BEGIN_LINK_OSS">&lt;a target="_blank" href="$2"&gt;</ph>open source software<ph name="END_LINK_OSS">&lt;/a&gt;</ph>.
-      </message>
       <if expr="chromeos">
         <message name="IDS_ABOUT_VERSION_LICENSE_EULA" desc="The label below the copyright message, containing the URLs.">
           Chromium open source licenses
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 2b63aab..4fffff0 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -7014,54 +7014,6 @@
         This page uses a Native Client app that doesn't work on your computer.
       </message>
 
-      <!-- about:version strings -->
-      <message name="IDS_ABOUT_VERSION_TITLE" desc="Title on the about:version page">
-        About Version
-      </message>
-      <message name="IDS_ABOUT_VERSION_OFFICIAL" desc="official build on the about:version page">
-        Official Build
-      </message>
-      <message name="IDS_ABOUT_VERSION_32BIT" desc="32-bit on the chrome://version page">
-        (32-bit)
-      </message>
-      <message name="IDS_ABOUT_VERSION_64BIT" desc="64-bit on the chrome://version page">
-        (64-bit)
-      </message>
-      <message name="IDS_ABOUT_VERSION_REVISION" desc="label for the revision on the about:version page">
-        Revision
-      </message>
-      <message name="IDS_ABOUT_VERSION_OS" desc="label for the OS on the about:version page">
-        OS
-      </message>
-      <message name="IDS_ABOUT_VERSION_USER_AGENT" desc="label for the user agent on the about:version page">
-        User Agent
-      </message>
-      <message name="IDS_ABOUT_VERSION_COMMAND_LINE" desc="label for the command line on the about:version page">
-        Command Line
-      </message>
-      <if expr="chromeos">
-        <message name="IDS_ABOUT_VERSION_BUILD_DATE" desc="label for build date on the about:version page">
-          Build Date
-        </message>
-      </if>
-      <message name="IDS_ABOUT_VERSION_EXECUTABLE_PATH" desc="label for the executable path on the about:version page">
-        Executable Path
-      </message>
-      <message name="IDS_ABOUT_VERSION_PROFILE_PATH" desc="label for the profile path on the about:version page">
-        Profile Path
-      </message>
-      <message name="IDS_ABOUT_VERSION_PATH_NOTFOUND" desc="label for the non-existent path on the about:version page">
-        No such file or directory
-      </message>
-      <message name="IDS_ABOUT_VERSION_VARIATIONS" desc="label for the variations list on the about:version page">
-        Variations
-      </message>
-      <if expr="is_android">
-        <message name="IDS_ABOUT_VERSION_BUILD_ID" desc="label for the build identifier on the about:version page">
-          Build ID
-        </message>
-      </if>
-
       <!-- chrome://voicesearch strings -->
       <if expr="chromeos">
         <message name="IDS_VOICESEARCH_LOADING_MESSAGE" desc="Shown while loading until full list of modules is retrieved">
diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd
index 77d6aea..740690b3 100644
--- a/chrome/app/google_chrome_strings.grd
+++ b/chrome/app/google_chrome_strings.grd
@@ -206,9 +206,6 @@
       <message name="IDS_ABOUT_VERSION_COMPANY_NAME" desc="Company name on the about pages">
         Google Inc.
       </message>
-      <message name="IDS_ABOUT_VERSION_COPYRIGHT" desc="Copyright information on the about pages">
-        Copyright <ph name="YEAR">$1</ph> Google Inc. All rights reserved.
-      </message>
       <message name="IDS_ABOUT_VERSION_LICENSE" desc="The label below the copyright message, containing the URLs.">
         Google Chrome is made possible by the <ph name="BEGIN_LINK_CHROMIUM">&lt;a target="_blank" href="$1"&gt;</ph>Chromium<ph name="END_LINK_CHROMIUM">&lt;/a&gt;</ph> open source project and other <ph name="BEGIN_LINK_OSS">&lt;a target="_blank" href="$2"&gt;</ph>open source software<ph name="END_LINK_OSS">&lt;/a&gt;</ph>.
       </message>
diff --git a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
index e690b02..637c532 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
+++ b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
@@ -429,7 +429,7 @@
   const std::string& proper_json =
       contains_xssi_escape ? response.substr(strlen(kXssiEscape)) : response;
   JSONStringValueDeserializer deserializer(proper_json);
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL);
 
   if (root.get() != NULL && root->IsType(base::Value::TYPE_DICTIONARY)) {
     base::DictionaryValue* dict =
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index 5ab7e27..4b5f85e 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -18,7 +18,6 @@
         <structure name="IDR_ABOUT_MEMORY_HTML" file="resources\about_memory.html" flattenhtml="true" type="chrome_html" />
       </if>
       <structure name="IDR_ABOUT_MEMORY_CSS" file="resources\about_memory.css" flattenhtml="true" type="chrome_html" />
-      <structure name="IDR_ABOUT_VERSION_HTML" file="resources\about_version.html" flattenhtml="true" allowexternalscript="true" type="chrome_html" />
       <if expr="enable_app_list">
         <structure name="IDR_APP_LIST_START_PAGE_CSS" file="resources\app_list\start_page.css" flattenhtml="true" type="chrome_html" />
         <structure name="IDR_APP_LIST_START_PAGE_HTML" file="resources\app_list\start_page.html" flattenhtml="true" type="chrome_html" />
@@ -89,8 +88,6 @@
       <if expr="not is_android">
         <include name="IDR_ABOUT_SYS_HTML" file="resources\about_sys\about_sys.html" flattenhtml="true" type="BINDATA" />
       </if>
-      <include name="IDR_ABOUT_VERSION_JS" file="resources\about_version.js" type="BINDATA" />
-      <include name="IDR_ABOUT_VERSION_CSS" file="resources\about_version.css" type="BINDATA" />
       <include name="IDR_AD_NETWORK_HASHES" file="resources\ad_networks.dat" type="BINDATA" />
       <include name="IDR_BOOKMARKS_MANIFEST" file="resources\bookmark_manager\manifest.json" type="BINDATA" />
       <if expr="is_posix and not is_macosx and not is_ios">
diff --git a/chrome/browser/chromeos/app_mode/kiosk_external_updater.cc b/chrome/browser/chromeos/app_mode/kiosk_external_updater.cc
index a875b8e..a753217 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_external_updater.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_external_updater.cc
@@ -44,7 +44,9 @@
 
   JSONFileValueDeserializer deserializer(manifest);
   std::string error_msg;
-  base::Value* extensions = deserializer.Deserialize(NULL, &error_msg);
+  base::Value* extensions =
+      deserializer.Deserialize(NULL, &error_msg).release();
+  // TODO(Olli Raula) possible memory leak http://crbug.com/543015
   if (!extensions) {
     *error_code = KioskExternalUpdater::ERROR_INVALID_MANIFEST;
     return;
diff --git a/chrome/browser/chromeos/app_mode/startup_app_launcher.cc b/chrome/browser/chromeos/app_mode/startup_app_launcher.cc
index 512aa214..61e125b2 100644
--- a/chrome/browser/chromeos/app_mode/startup_app_launcher.cc
+++ b/chrome/browser/chromeos/app_mode/startup_app_launcher.cc
@@ -132,8 +132,8 @@
   base::FilePath auth_file = user_data_dir.Append(kOAuthFileName);
   scoped_ptr<JSONFileValueDeserializer> deserializer(
       new JSONFileValueDeserializer(user_data_dir.Append(kOAuthFileName)));
-  scoped_ptr<base::Value> value(
-      deserializer->Deserialize(&error_code, &error_msg));
+  scoped_ptr<base::Value> value =
+      deserializer->Deserialize(&error_code, &error_msg);
   base::DictionaryValue* dict = NULL;
   if (error_code != JSONFileValueDeserializer::JSON_NO_ERROR ||
       !value.get() || !value->GetAsDictionary(&dict)) {
diff --git a/chrome/browser/chromeos/extensions/default_app_order.cc b/chrome/browser/chromeos/extensions/default_app_order.cc
index 4abcbaa..855b537 100644
--- a/chrome/browser/chromeos/extensions/default_app_order.cc
+++ b/chrome/browser/chromeos/extensions/default_app_order.cc
@@ -65,7 +65,7 @@
 
   JSONFileValueDeserializer deserializer(path);
   std::string error_msg;
-  base::Value* value = deserializer.Deserialize(NULL, &error_msg);
+  base::Value* value = deserializer.Deserialize(NULL, &error_msg).release();
   if (!value) {
     LOG(WARNING) << "Unable to deserialize default app ordinals json data:"
         << error_msg << ", file=" << path.value();
@@ -77,6 +77,7 @@
     return ordinal_list_value;
 
   LOG(WARNING) << "Expect a JSON list in file " << path.value();
+  // TODO(Olli Raula) possible memory leak http://crbug.com/543015
   return NULL;
 }
 
diff --git a/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc b/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc
index 05957334..b3059ae 100644
--- a/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc
+++ b/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc
@@ -167,7 +167,7 @@
     const std::string& manifest_string) {
   std::string error;
   JSONStringValueDeserializer deserializer(manifest_string);
-  scoped_ptr<base::Value> manifest(deserializer.Deserialize(NULL, &error));
+  scoped_ptr<base::Value> manifest = deserializer.Deserialize(NULL, &error);
   if (!manifest.get())
     LOG(ERROR) << "Failed at getting manifest";
 
diff --git a/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc b/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc
index 389dcc5..7485604 100644
--- a/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc
+++ b/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc
@@ -58,8 +58,8 @@
       profile_dir.Append(kPasswordUpdateFile));
   std::string error_message;
   int error_code = JSONFileValueDeserializer::JSON_NO_ERROR;
-  scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_message);
   if (JSONFileValueDeserializer::JSON_NO_ERROR != error_code) {
     LOG(ERROR) << "Could not deserialize password data, error = " << error_code
                << " / " << error_message;
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc
index e257de7..c026ab78 100644
--- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc
+++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc
@@ -353,7 +353,8 @@
   DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyManagerChromeOSTest);
 };
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, BlockingFirstFetch) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest, DISABLED_BlockingFirstFetch) {
   // Tests the initialization of a manager whose Profile is waiting for the
   // initial fetch, when the policy cache is empty.
   ASSERT_NO_FATAL_FAILURE(CreateManager(true, 1000));
@@ -376,7 +377,8 @@
                          DM_STATUS_SUCCESS, register_blob_));
 }
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, BlockingRefreshFetch) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest, DISABLED_BlockingRefreshFetch) {
   // Tests the initialization of a manager whose Profile is waiting for the
   // initial fetch, when a previously cached policy and DMToken already exist.
   ASSERT_NO_FATAL_FAILURE(CreateManager(true, 1000));
@@ -388,7 +390,8 @@
                          base::Unretained(store_)));
 }
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, BlockingFetchStoreError) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest, DISABLED_BlockingFetchStoreError) {
   // Tests the initialization of a manager whose Profile is waiting for the
   // initial fetch, when the initial store load fails.
   ASSERT_NO_FATAL_FAILURE(CreateManager(true, 1000));
@@ -411,7 +414,8 @@
                          DM_STATUS_SUCCESS, register_blob_));
 }
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, BlockingFetchOAuthError) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest, DISABLED_BlockingFetchOAuthError) {
   // Tests the initialization of a manager whose Profile is waiting for the
   // initial fetch, when the OAuth2 token fetch fails.
   ASSERT_NO_FATAL_FAILURE(CreateManager(true, 1000));
@@ -440,7 +444,9 @@
   Mock::VerifyAndClearExpectations(&observer_);
 }
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, BlockingFetchRegisterError) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest,
+       DISABLED_BlockingFetchRegisterError) {
   // Tests the initialization of a manager whose Profile is waiting for the
   // initial fetch, when the device management registration fails.
   ASSERT_NO_FATAL_FAILURE(CreateManager(true, 1000));
@@ -466,7 +472,9 @@
   Mock::VerifyAndClearExpectations(&observer_);
 }
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, BlockingFetchPolicyFetchError) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest,
+       DISABLED_BlockingFetchPolicyFetchError) {
   // Tests the initialization of a manager whose Profile is waiting for the
   // initial fetch, when the policy fetch request fails.
   ASSERT_NO_FATAL_FAILURE(CreateManager(true, 1000));
@@ -507,7 +515,8 @@
   EXPECT_TRUE(PolicyBundle().Equals(manager_->policies()));
 }
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, BlockingFetchTimeout) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest, DISABLED_BlockingFetchTimeout) {
   // The blocking fetch should be abandoned after the timeout.
   ASSERT_NO_FATAL_FAILURE(CreateManager(true, 0));
 
@@ -526,8 +535,8 @@
   EXPECT_TRUE(PolicyBundle().Equals(manager_->policies()));
 }
 
-
-TEST_F(UserCloudPolicyManagerChromeOSTest, NonBlockingFirstFetch) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest, DISABLED_NonBlockingFirstFetch) {
   // Tests the first policy fetch request by a Profile that isn't managed.
   ASSERT_NO_FATAL_FAILURE(CreateManager(false, 1000));
 
@@ -572,7 +581,8 @@
       base::Bind(&base::TestSimpleTaskRunner::RunUntilIdle, task_runner_));
 }
 
-TEST_F(UserCloudPolicyManagerChromeOSTest, NonBlockingRefreshFetch) {
+// Test disabled. See crbug.com/534733.
+TEST_F(UserCloudPolicyManagerChromeOSTest, DISABLED_NonBlockingRefreshFetch) {
   // Tests a non-blocking initial policy fetch for a Profile that already has
   // a cached DMToken.
   ASSERT_NO_FATAL_FAILURE(CreateManager(false, 1000));
diff --git a/chrome/browser/component_updater/component_installers_unittest.cc b/chrome/browser/component_updater/component_installers_unittest.cc
index 10c58348..57db885 100644
--- a/chrome/browser/component_updater/component_installers_unittest.cc
+++ b/chrome/browser/component_updater/component_installers_unittest.cc
@@ -74,8 +74,10 @@
 
   JSONFileValueDeserializer deserializer(manifest);
   std::string error;
-  scoped_ptr<base::DictionaryValue> root(static_cast<base::DictionaryValue*>(
-      deserializer.Deserialize(NULL, &error)));
+
+  scoped_ptr<base::DictionaryValue> root =
+      base::DictionaryValue::From(deserializer.Deserialize(NULL, &error));
+
   ASSERT_TRUE(root);
   ASSERT_TRUE(root->IsType(base::Value::TYPE_DICTIONARY));
 
diff --git a/chrome/browser/component_updater/pnacl_component_installer.cc b/chrome/browser/component_updater/pnacl_component_installer.cc
index 1198d60..f10940b 100644
--- a/chrome/browser/component_updater/pnacl_component_installer.cc
+++ b/chrome/browser/component_updater/pnacl_component_installer.cc
@@ -127,7 +127,7 @@
 base::DictionaryValue* ReadJSONManifest(const base::FilePath& manifest_path) {
   JSONFileValueDeserializer deserializer(manifest_path);
   std::string error;
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, &error));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, &error);
   if (!root.get())
     return NULL;
   if (!root->IsType(base::Value::TYPE_DICTIONARY))
diff --git a/chrome/browser/component_updater/recovery_component_installer.cc b/chrome/browser/component_updater/recovery_component_installer.cc
index 3657d645..8943ab45 100644
--- a/chrome/browser/component_updater/recovery_component_installer.cc
+++ b/chrome/browser/component_updater/recovery_component_installer.cc
@@ -118,12 +118,7 @@
 scoped_ptr<base::DictionaryValue> ReadManifest(const base::FilePath& manifest) {
   JSONFileValueDeserializer deserializer(manifest);
   std::string error;
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, &error));
-  if (root.get() && root->IsType(base::Value::TYPE_DICTIONARY)) {
-    return scoped_ptr<base::DictionaryValue>(
-        static_cast<base::DictionaryValue*>(root.release()));
-  }
-  return scoped_ptr<base::DictionaryValue>();
+  return base::DictionaryValue::From(deserializer.Deserialize(NULL, &error));
 }
 
 void WaitForElevatedInstallToComplete(base::Process process) {
diff --git a/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc b/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc
index 05c8c9e..5dbbdc14 100644
--- a/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc
+++ b/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc
@@ -436,45 +436,13 @@
   ProtocolHandler test_protocol_handler_;
 };
 
-// ProtocolHandlerRegistryTest tests are flaky on Linux & ChromeOS.
-// http://crbug.com/133023
-#if defined(OS_LINUX)
-#define MAYBE_AcceptProtocolHandlerHandlesProtocol \
-    DISABLED_AcceptProtocolHandlerHandlesProtocol
-#define MAYBE_DeniedProtocolIsntHandledUntilAccepted \
-    DISABLED_DeniedProtocolIsntHandledUntilAccepted
-#define MAYBE_TestStartsAsDefault DISABLED_TestStartsAsDefault
-#define MAYBE_TestRemoveHandlerRemovesDefault \
-    DISABLED_TestRemoveHandlerRemovesDefault
-#define MAYBE_TestClearDefaultGetsPropagatedToIO \
-    DISABLED_TestClearDefaultGetsPropagatedToIO
-#define MAYBE_TestIsHandledProtocolWorksOnIOThread \
-    DISABLED_TestIsHandledProtocolWorksOnIOThread
-#define MAYBE_TestInstallDefaultHandler \
-    DISABLED_TestInstallDefaultHandler
-#else
-#define MAYBE_AcceptProtocolHandlerHandlesProtocol \
-    AcceptProtocolHandlerHandlesProtocol
-#define MAYBE_DeniedProtocolIsntHandledUntilAccepted \
-    DeniedProtocolIsntHandledUntilAccepted
-#define MAYBE_TestStartsAsDefault TestStartsAsDefault
-#define MAYBE_TestRemoveHandlerRemovesDefault TestRemoveHandlerRemovesDefault
-#define MAYBE_TestClearDefaultGetsPropagatedToIO \
-    TestClearDefaultGetsPropagatedToIO
-#define MAYBE_TestIsHandledProtocolWorksOnIOThread \
-    TestIsHandledProtocolWorksOnIOThread
-#define MAYBE_TestInstallDefaultHandler TestInstallDefaultHandler
-#endif  // defined(OS_LINUX)
-
-TEST_F(ProtocolHandlerRegistryTest,
-       MAYBE_AcceptProtocolHandlerHandlesProtocol) {
+TEST_F(ProtocolHandlerRegistryTest, AcceptProtocolHandlerHandlesProtocol) {
   ASSERT_FALSE(registry()->IsHandledProtocol("test"));
   registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler());
   ASSERT_TRUE(registry()->IsHandledProtocol("test"));
 }
 
-TEST_F(ProtocolHandlerRegistryTest,
-       MAYBE_DeniedProtocolIsntHandledUntilAccepted) {
+TEST_F(ProtocolHandlerRegistryTest, DeniedProtocolIsntHandledUntilAccepted) {
   registry()->OnDenyRegisterProtocolHandler(test_protocol_handler());
   ASSERT_FALSE(registry()->IsHandledProtocol("test"));
   registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler());
@@ -554,7 +522,7 @@
   ASSERT_TRUE(registry()->CanSchemeBeOverridden("test"));
 }
 
-TEST_F(ProtocolHandlerRegistryTest, MAYBE_TestStartsAsDefault) {
+TEST_F(ProtocolHandlerRegistryTest, TestStartsAsDefault) {
   registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler());
   ASSERT_TRUE(registry()->IsDefault(test_protocol_handler()));
 }
@@ -682,7 +650,7 @@
   ASSERT_TRUE(registry()->HasIgnoredEquivalent(ph4));
 }
 
-TEST_F(ProtocolHandlerRegistryTest, MAYBE_TestRemoveHandlerRemovesDefault) {
+TEST_F(ProtocolHandlerRegistryTest, TestRemoveHandlerRemovesDefault) {
   ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
   ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
   ProtocolHandler ph3 = CreateProtocolHandler("test", "test3");
@@ -802,7 +770,7 @@
 
 #if defined(OS_LINUX)
 // TODO(benwells): When Linux support is more reliable and
-// http://crbut.com/88255 is fixed this test will pass.
+// http://crbug.com/88255 is fixed this test will pass.
 #define MAYBE_TestOSRegistrationFailure DISABLED_TestOSRegistrationFailure
 #else
 #define MAYBE_TestOSRegistrationFailure TestOSRegistrationFailure
@@ -841,7 +809,7 @@
 }
 
 TEST_F(ProtocolHandlerRegistryTest,
-       MAYBE_TestIsHandledProtocolWorksOnIOThread) {
+       TestIsHandledProtocolWorksOnIOThread) {
   std::string scheme("mailto");
   ProtocolHandler ph1 = CreateProtocolHandler(scheme, "test1");
   registry()->OnAcceptRegisterProtocolHandler(ph1);
@@ -887,7 +855,7 @@
   ASSERT_EQ(ph1, handlers[1]);
 }
 
-TEST_F(ProtocolHandlerRegistryTest, MAYBE_TestClearDefaultGetsPropagatedToIO) {
+TEST_F(ProtocolHandlerRegistryTest, TestClearDefaultGetsPropagatedToIO) {
   std::string scheme("mailto");
   ProtocolHandler ph1 = CreateProtocolHandler(scheme, "test1");
   registry()->OnAcceptRegisterProtocolHandler(ph1);
@@ -970,7 +938,7 @@
       ph3.IsSameOrigin(ph2));
 }
 
-TEST_F(ProtocolHandlerRegistryTest, MAYBE_TestInstallDefaultHandler) {
+TEST_F(ProtocolHandlerRegistryTest, TestInstallDefaultHandler) {
   RecreateRegistry(false);
   registry()->AddPredefinedHandler(
       CreateProtocolHandler("test", GURL("http://test.com/%s")));
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
index 5e43a11..94f1b0e7 100644
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
@@ -36,10 +36,8 @@
 scoped_ptr<base::DictionaryValue> DeserializeJSONTestData(
     const base::FilePath& path,
     std::string *error) {
-  base::Value* value = nullptr;
   JSONFileValueDeserializer deserializer(path);
-  value = deserializer.Deserialize(nullptr, error);
-  return make_scoped_ptr(static_cast<base::DictionaryValue*>(value));
+  return base::DictionaryValue::From(deserializer.Deserialize(nullptr, error));
 }
 
 }  // namespace
diff --git a/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc b/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc
index 8479b13..6b458b1 100644
--- a/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc
+++ b/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc
@@ -44,7 +44,8 @@
   DCHECK(error_message);
 
   JSONFileValueDeserializer deserializer(file_path);
-  scoped_ptr<base::Value> parsed(deserializer.Deserialize(NULL, error_message));
+  scoped_ptr<base::Value> parsed =
+      deserializer.Deserialize(NULL, error_message);
   if (!parsed) {
     return scoped_ptr<NativeMessagingHostManifest>();
   }
diff --git a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
index 04b908f..cefad21 100644
--- a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
+++ b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
@@ -71,9 +71,11 @@
         base::IntToString(tab_id));
     return NULL;
   }
-  if (contents->GetURL().GetOrigin().spec() != security_origin) {
+  GURL visible_origin = contents->GetVisibleURL().GetOrigin();
+  if (visible_origin.spec() != security_origin) {
     error_ = extensions::ErrorUtils::FormatErrorMessage(
-        "Invalid security origin",
+        "Invalid security origin. Expected=" + visible_origin.spec() +
+            ", actual=" + security_origin,
         base::IntToString(tab_id));
     return NULL;
   }
diff --git a/chrome/browser/extensions/chrome_info_map_unittest.cc b/chrome/browser/extensions/chrome_info_map_unittest.cc
index 5ee4a1f6..afa7bef 100644
--- a/chrome/browser/extensions/chrome_info_map_unittest.cc
+++ b/chrome/browser/extensions/chrome_info_map_unittest.cc
@@ -25,7 +25,7 @@
   path = path.AppendASCII("extensions").AppendASCII(dir).AppendASCII(test_file);
 
   JSONFileValueDeserializer deserializer(path);
-  scoped_ptr<base::Value> result(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> result = deserializer.Deserialize(NULL, NULL);
   if (!result)
     return NULL;
 
diff --git a/chrome/browser/extensions/component_loader.cc b/chrome/browser/extensions/component_loader.cc
index 0f5aa98f2..cdb717b2 100644
--- a/chrome/browser/extensions/component_loader.cc
+++ b/chrome/browser/extensions/component_loader.cc
@@ -164,7 +164,7 @@
 base::DictionaryValue* ComponentLoader::ParseManifest(
     const std::string& manifest_contents) const {
   JSONStringValueDeserializer deserializer(manifest_contents);
-  scoped_ptr<base::Value> manifest(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> manifest = deserializer.Deserialize(NULL, NULL);
 
   if (!manifest.get() || !manifest->IsType(base::Value::TYPE_DICTIONARY)) {
     LOG(ERROR) << "Failed to parse extension manifest.";
diff --git a/chrome/browser/extensions/extension_action_icon_factory_unittest.cc b/chrome/browser/extensions/extension_action_icon_factory_unittest.cc
index 6af5c77..673a03b4 100644
--- a/chrome/browser/extensions/extension_action_icon_factory_unittest.cc
+++ b/chrome/browser/extensions/extension_action_icon_factory_unittest.cc
@@ -109,10 +109,8 @@
     std::string error;
     JSONFileValueDeserializer deserializer(
         test_file.AppendASCII("manifest.json"));
-    scoped_ptr<base::DictionaryValue> valid_value(
-        static_cast<base::DictionaryValue*>(
-            deserializer.Deserialize(&error_code,
-                                     &error)));
+    scoped_ptr<base::DictionaryValue> valid_value = base::DictionaryValue::From(
+        deserializer.Deserialize(&error_code, &error));
     EXPECT_EQ(0, error_code) << error;
     if (error_code != 0)
       return NULL;
diff --git a/chrome/browser/extensions/extension_icon_manager_unittest.cc b/chrome/browser/extensions/extension_icon_manager_unittest.cc
index bcec7a8..3ca1104 100644
--- a/chrome/browser/extensions/extension_icon_manager_unittest.cc
+++ b/chrome/browser/extensions/extension_icon_manager_unittest.cc
@@ -109,9 +109,8 @@
       "extensions/image_loading_tracker/app.json");
 
   JSONFileValueDeserializer deserializer(manifest_path);
-  scoped_ptr<base::DictionaryValue> manifest(
-      static_cast<base::DictionaryValue*>(deserializer.Deserialize(NULL,
-                                                                   NULL)));
+  scoped_ptr<base::DictionaryValue> manifest =
+      base::DictionaryValue::From(deserializer.Deserialize(NULL, NULL));
   ASSERT_TRUE(manifest.get() != NULL);
 
   std::string error;
@@ -152,9 +151,8 @@
       "extensions/file_manager/app.json");
 
   JSONFileValueDeserializer deserializer(manifest_path);
-  scoped_ptr<base::DictionaryValue> manifest(
-      static_cast<base::DictionaryValue*>(deserializer.Deserialize(NULL,
-                                                                   NULL)));
+  scoped_ptr<base::DictionaryValue> manifest =
+      base::DictionaryValue::From(deserializer.Deserialize(NULL, NULL));
   ASSERT_TRUE(manifest.get() != NULL);
 
   std::string error;
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index e031b50..6c014b3 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -365,15 +365,13 @@
     // We also parse the file into a dictionary to compare what we get back
     // from the provider.
     JSONStringValueDeserializer deserializer(json_data);
-    base::Value* json_value = deserializer.Deserialize(NULL, NULL);
+    scoped_ptr<base::Value> json_value = deserializer.Deserialize(NULL, NULL);
 
     if (!json_value || !json_value->IsType(base::Value::TYPE_DICTIONARY)) {
       NOTREACHED() << "Unable to deserialize json data";
       return -1;
     } else {
-      base::DictionaryValue* external_extensions =
-          static_cast<base::DictionaryValue*>(json_value);
-      prefs_.reset(external_extensions);
+      prefs_ = base::DictionaryValue::From(json_value.Pass());
     }
 
     // Reset our counter.
diff --git a/chrome/browser/extensions/external_pref_loader.cc b/chrome/browser/extensions/external_pref_loader.cc
index c0775d2..0e71a49d 100644
--- a/chrome/browser/extensions/external_pref_loader.cc
+++ b/chrome/browser/extensions/external_pref_loader.cc
@@ -72,20 +72,24 @@
 // occurs). An empty dictionary is returned in case of failure (e.g. invalid
 // path or json content).
 // Caller takes ownership of the returned dictionary.
+// TODO(Olli Raula) Make return scoped_ptr
 base::DictionaryValue* ExtractExtensionPrefs(
     base::ValueDeserializer* deserializer,
     const base::FilePath& path) {
   std::string error_msg;
-  base::Value* extensions = deserializer->Deserialize(NULL, &error_msg);
+  scoped_ptr<base::Value> extensions =
+      deserializer->Deserialize(NULL, &error_msg);
   if (!extensions) {
     LOG(WARNING) << "Unable to deserialize json data: " << error_msg
                  << " in file " << path.value() << ".";
     return new base::DictionaryValue;
   }
 
-  base::DictionaryValue* ext_dictionary = NULL;
-  if (extensions->GetAsDictionary(&ext_dictionary))
-    return ext_dictionary;
+  scoped_ptr<base::DictionaryValue> ext_dictionary =
+      base::DictionaryValue::From(extensions.Pass());
+  if (ext_dictionary) {
+    return ext_dictionary.release();
+  }
 
   LOG(WARNING) << "Expected a JSON dictionary in file "
                << path.value() << ".";
diff --git a/chrome/browser/extensions/user_script_listener_unittest.cc b/chrome/browser/extensions/user_script_listener_unittest.cc
index 64099b8b..b4147f7 100644
--- a/chrome/browser/extensions/user_script_listener_unittest.cc
+++ b/chrome/browser/extensions/user_script_listener_unittest.cc
@@ -74,12 +74,13 @@
 };
 
 // Yoinked from extension_manifest_unittest.cc.
+// TODO(Olli Raula) Make this return scoped_ptr
 base::DictionaryValue* LoadManifestFile(const base::FilePath path,
                                         std::string* error) {
   EXPECT_TRUE(base::PathExists(path));
   JSONFileValueDeserializer deserializer(path);
-  return static_cast<base::DictionaryValue*>(
-      deserializer.Deserialize(NULL, error));
+  return base::DictionaryValue::From(deserializer.Deserialize(NULL, error))
+      .release();
 }
 
 scoped_refptr<Extension> LoadExtension(const std::string& filename,
diff --git a/chrome/browser/media/webrtc_logging_handler_host.cc b/chrome/browser/media/webrtc_logging_handler_host.cc
index 8def219..74cf281e 100644
--- a/chrome/browser/media/webrtc_logging_handler_host.cc
+++ b/chrome/browser/media/webrtc_logging_handler_host.cc
@@ -104,26 +104,6 @@
   message->resize(message->size() - 1);
 }
 
-void FireGenericDoneCallback(
-    const WebRtcLoggingHandlerHost::GenericDoneCallback& callback,
-    bool success,
-    const std::string& error_message) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  DCHECK(!callback.is_null());
-  content::BrowserThread::PostTask(
-      content::BrowserThread::UI,
-      FROM_HERE,
-      base::Bind(callback, success, error_message));
-}
-
-void FireAndResetGenericDoneCallback(
-    WebRtcLoggingHandlerHost::GenericDoneCallback* callback,
-    bool success,
-    const std::string& error_message) {
-  FireGenericDoneCallback(*callback, success, error_message);
-  callback->Reset();
-}
-
 }  // namespace
 
 WebRtcLogBuffer::WebRtcLogBuffer()
@@ -202,7 +182,7 @@
   DCHECK(!callback.is_null());
 
   if (logging_state_ != CLOSED) {
-    FireGenericDoneCallback(callback, false, "A log is already open");
+    FireGenericDoneCallback(callback, false, "A log is already open.");
     return;
   }
 
@@ -217,7 +197,7 @@
   DCHECK(!callback.is_null());
 
   if (logging_state_ != STARTED) {
-    FireGenericDoneCallback(callback, false, "Logging not started");
+    FireGenericDoneCallback(callback, false, "Logging not started.");
     return;
   }
 
@@ -498,7 +478,8 @@
   }
   logging_started_time_ = base::Time();
   logging_state_ = STOPPED;
-  FireAndResetGenericDoneCallback(&stop_callback_, true, "");
+  FireGenericDoneCallback(stop_callback_, true, "");
+  stop_callback_.Reset();
 }
 
 void WebRtcLoggingHandlerHost::StartLoggingIfAllowed(
@@ -770,3 +751,47 @@
 
   return true;
 }
+
+void WebRtcLoggingHandlerHost::FireGenericDoneCallback(
+    const WebRtcLoggingHandlerHost::GenericDoneCallback& callback,
+    bool success,
+    const std::string& error_message) {
+  DCHECK_CURRENTLY_ON(BrowserThread::IO);
+  DCHECK(!callback.is_null());
+
+  if (error_message.empty()) {
+    DCHECK(success);
+    content::BrowserThread::PostTask(
+        content::BrowserThread::UI,
+        FROM_HERE,
+        base::Bind(callback, success, error_message));
+    return;
+  }
+
+  DCHECK(!success);
+
+  // Add current logging state to error message.
+  std::string error_message_with_state(error_message);
+  switch (logging_state_) {
+  case CLOSED:
+    error_message_with_state += " State=closed.";
+    break;
+  case STARTING:
+    error_message_with_state += " State=starting.";
+    break;
+  case STARTED:
+    error_message_with_state += " State=started.";
+    break;
+  case STOPPING:
+    error_message_with_state += " State=stopping.";
+    break;
+  case STOPPED:
+    error_message_with_state += " State=stopped.";
+    break;
+  }
+
+  content::BrowserThread::PostTask(
+      content::BrowserThread::UI,
+      FROM_HERE,
+      base::Bind(callback, success, error_message_with_state));
+}
diff --git a/chrome/browser/media/webrtc_logging_handler_host.h b/chrome/browser/media/webrtc_logging_handler_host.h
index 4cc68d81..1b1793a 100644
--- a/chrome/browser/media/webrtc_logging_handler_host.h
+++ b/chrome/browser/media/webrtc_logging_handler_host.h
@@ -233,6 +233,11 @@
 
   bool ReleaseRtpDumps(WebRtcLogPaths* log_paths);
 
+  void FireGenericDoneCallback(
+      const WebRtcLoggingHandlerHost::GenericDoneCallback& callback,
+      bool success,
+      const std::string& error_message);
+
   scoped_ptr<WebRtcLogBuffer> log_buffer_;
 
   // The profile associated with our renderer process.
diff --git a/chrome/browser/password_manager/password_manager_util_mac.mm b/chrome/browser/password_manager/password_manager_util_mac.mm
index e8d81cd..b1a22833 100644
--- a/chrome/browser/password_manager/password_manager_util_mac.mm
+++ b/chrome/browser/password_manager/password_manager_util_mac.mm
@@ -10,7 +10,6 @@
 
 #include "base/basictypes.h"
 #include "base/mac/authorization_util.h"
-#include "base/mac/bundle_locations.h"
 #include "base/mac/foundation_util.h"
 #include "base/mac/scoped_authorizationref.h"
 #include "chrome/grit/chromium_strings.h"
@@ -19,12 +18,14 @@
 namespace password_manager_util_mac {
 
 bool AuthenticateUser() {
-  NSString* identifier = [base::mac::MainBundle() bundleIdentifier];
-  AuthorizationString name =
-      [[identifier stringByAppendingString:@".show-passwords"] UTF8String];
-  AuthorizationItem right_items[] = {
-    {name, 0, NULL, 0}
-  };
+  // Use the system-defined "system.login.screensaver" access right rather than
+  // creating our own. The screensaver does exactly the same check we need --
+  // verifying whether the legitimate session user is present. If we needed to
+  // create a separate access right, we would have to define it with the
+  // AuthorizationDB, using the flag
+  // kAuthorizationRuleAuthenticateAsSessionUser, to ensure that the session
+  // user password, as opposed to an admin's password, is required.
+  AuthorizationItem right_items[] = {{"system.login.screensaver", 0, NULL, 0}};
   AuthorizationRights rights = {arraysize(right_items), right_items};
 
   NSString* prompt =
diff --git a/chrome/browser/platform_util_unittest.cc b/chrome/browser/platform_util_unittest.cc
index cd30a7f..caaf200 100644
--- a/chrome/browser/platform_util_unittest.cc
+++ b/chrome/browser/platform_util_unittest.cc
@@ -92,8 +92,8 @@
         "    }"
         "}";
     JSONStringValueDeserializer json_string_deserializer(json_manifest);
-    scoped_ptr<base::Value> manifest(
-        json_string_deserializer.Deserialize(&error_code, &error));
+    scoped_ptr<base::Value> manifest =
+        json_string_deserializer.Deserialize(&error_code, &error);
     base::DictionaryValue* manifest_dictionary;
 
     manifest->GetAsDictionary(&manifest_dictionary);
diff --git a/chrome/browser/prefs/pref_service_browsertest.cc b/chrome/browser/prefs/pref_service_browsertest.cc
index 47e1007..35ea009f 100644
--- a/chrome/browser/prefs/pref_service_browsertest.cc
+++ b/chrome/browser/prefs/pref_service_browsertest.cc
@@ -102,7 +102,7 @@
   // The window should open with the new reference profile, with window
   // placement values stored in the user data directory.
   JSONFileValueDeserializer deserializer(original_pref_file_);
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL);
 
   ASSERT_TRUE(root.get());
   ASSERT_TRUE(root->IsType(base::Value::TYPE_DICTIONARY));
diff --git a/chrome/browser/prefs/tracked/pref_hash_browsertest.cc b/chrome/browser/prefs/tracked/pref_hash_browsertest.cc
index 6df10cf..43cfa0c 100644
--- a/chrome/browser/prefs/tracked/pref_hash_browsertest.cc
+++ b/chrome/browser/prefs/tracked/pref_hash_browsertest.cc
@@ -88,8 +88,8 @@
   JSONFileValueDeserializer deserializer(pref_file);
   int error_code = JSONFileValueDeserializer::JSON_NO_ERROR;
   std::string error_str;
-  scoped_ptr<base::Value> prefs(
-      deserializer.Deserialize(&error_code, &error_str));
+  scoped_ptr<base::Value> prefs =
+      deserializer.Deserialize(&error_code, &error_str);
   if (!prefs || error_code != JSONFileValueDeserializer::JSON_NO_ERROR) {
     ADD_FAILURE() << "Error #" << error_code << ": " << error_str;
     return scoped_ptr<base::DictionaryValue>();
diff --git a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
index b90a9a4a..42c6f59 100644
--- a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
+++ b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
@@ -24,6 +24,7 @@
 #include "components/version_info/version_info.h"
 #include "content/public/browser/browser_thread.h"
 #include "extensions/browser/extension_registry.h"
+#include "grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 
 using feedback::FeedbackData;
@@ -255,7 +256,7 @@
           l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_LOCALE),
           g_browser_process->GetApplicationLocale());
   AddPair(list.get(),
-          l10n_util::GetStringUTF16(IDS_ABOUT_VERSION_USER_AGENT),
+          l10n_util::GetStringUTF16(IDS_VERSION_UI_USER_AGENT),
           GetUserAgent());
   std::string version = version_info::GetVersionNumber();
   version += chrome::GetChannelString();
diff --git a/chrome/browser/resources/md_downloads/crisper.js b/chrome/browser/resources/md_downloads/crisper.js
index de97497..d124ab6 100644
--- a/chrome/browser/resources/md_downloads/crisper.js
+++ b/chrome/browser/resources/md_downloads/crisper.js
@@ -10853,41 +10853,6 @@
     }
 
   });
-Polymer({
-    is: 'paper-material',
-
-    properties: {
-
-      /**
-       * The z-depth of this element, from 0-5. Setting to 0 will remove the
-       * shadow, and each increasing number greater than 0 will be "deeper"
-       * than the last.
-       *
-       * @attribute elevation
-       * @type number
-       * @default 1
-       */
-      elevation: {
-        type: Number,
-        reflectToAttribute: true,
-        value: 1
-      },
-
-      /**
-       * Set this to true to animate the shadow when setting a new
-       * `elevation` value.
-       *
-       * @attribute animated
-       * @type boolean
-       * @default false
-       */
-      animated: {
-        type: Boolean,
-        reflectToAttribute: true,
-        value: false
-      }
-    }
-  });
 (function() {
     'use strict';
 
@@ -11295,6 +11260,286 @@
       }
     };
   })();
+/**
+   * @demo demo/index.html
+   * @polymerBehavior
+   */
+  Polymer.IronControlState = {
+
+    properties: {
+
+      /**
+       * If true, the element currently has focus.
+       */
+      focused: {
+        type: Boolean,
+        value: false,
+        notify: true,
+        readOnly: true,
+        reflectToAttribute: true
+      },
+
+      /**
+       * If true, the user cannot interact with this element.
+       */
+      disabled: {
+        type: Boolean,
+        value: false,
+        notify: true,
+        observer: '_disabledChanged',
+        reflectToAttribute: true
+      },
+
+      _oldTabIndex: {
+        type: Number
+      },
+
+      _boundFocusBlurHandler: {
+        type: Function,
+        value: function() {
+          return this._focusBlurHandler.bind(this);
+        }
+      }
+
+    },
+
+    observers: [
+      '_changedControlState(focused, disabled)'
+    ],
+
+    ready: function() {
+      this.addEventListener('focus', this._boundFocusBlurHandler, true);
+      this.addEventListener('blur', this._boundFocusBlurHandler, true);
+    },
+
+    _focusBlurHandler: function(event) {
+      // NOTE(cdata):  if we are in ShadowDOM land, `event.target` will
+      // eventually become `this` due to retargeting; if we are not in
+      // ShadowDOM land, `event.target` will eventually become `this` due
+      // to the second conditional which fires a synthetic event (that is also
+      // handled). In either case, we can disregard `event.path`.
+
+      if (event.target === this) {
+        var focused = event.type === 'focus';
+        this._setFocused(focused);
+      } else if (!this.shadowRoot) {
+        this.fire(event.type, {sourceEvent: event}, {
+          node: this,
+          bubbles: event.bubbles,
+          cancelable: event.cancelable
+        });
+      }
+    },
+
+    _disabledChanged: function(disabled, old) {
+      this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
+      this.style.pointerEvents = disabled ? 'none' : '';
+      if (disabled) {
+        this._oldTabIndex = this.tabIndex;
+        this.focused = false;
+        this.tabIndex = -1;
+      } else if (this._oldTabIndex !== undefined) {
+        this.tabIndex = this._oldTabIndex;
+      }
+    },
+
+    _changedControlState: function() {
+      // _controlStateChanged is abstract, follow-on behaviors may implement it
+      if (this._controlStateChanged) {
+        this._controlStateChanged();
+      }
+    }
+
+  };
+/**
+   * @demo demo/index.html
+   * @polymerBehavior Polymer.IronButtonState
+   */
+  Polymer.IronButtonStateImpl = {
+
+    properties: {
+
+      /**
+       * If true, the user is currently holding down the button.
+       */
+      pressed: {
+        type: Boolean,
+        readOnly: true,
+        value: false,
+        reflectToAttribute: true,
+        observer: '_pressedChanged'
+      },
+
+      /**
+       * If true, the button toggles the active state with each tap or press
+       * of the spacebar.
+       */
+      toggles: {
+        type: Boolean,
+        value: false,
+        reflectToAttribute: true
+      },
+
+      /**
+       * If true, the button is a toggle and is currently in the active state.
+       */
+      active: {
+        type: Boolean,
+        value: false,
+        notify: true,
+        reflectToAttribute: true
+      },
+
+      /**
+       * True if the element is currently being pressed by a "pointer," which
+       * is loosely defined as mouse or touch input (but specifically excluding
+       * keyboard input).
+       */
+      pointerDown: {
+        type: Boolean,
+        readOnly: true,
+        value: false
+      },
+
+      /**
+       * True if the input device that caused the element to receive focus
+       * was a keyboard.
+       */
+      receivedFocusFromKeyboard: {
+        type: Boolean,
+        readOnly: true
+      },
+
+      /**
+       * The aria attribute to be set if the button is a toggle and in the
+       * active state.
+       */
+      ariaActiveAttribute: {
+        type: String,
+        value: 'aria-pressed',
+        observer: '_ariaActiveAttributeChanged'
+      }
+    },
+
+    listeners: {
+      down: '_downHandler',
+      up: '_upHandler',
+      tap: '_tapHandler'
+    },
+
+    observers: [
+      '_detectKeyboardFocus(focused)',
+      '_activeChanged(active, ariaActiveAttribute)'
+    ],
+
+    keyBindings: {
+      'enter:keydown': '_asyncClick',
+      'space:keydown': '_spaceKeyDownHandler',
+      'space:keyup': '_spaceKeyUpHandler',
+    },
+
+    _mouseEventRe: /^mouse/,
+
+    _tapHandler: function() {
+      if (this.toggles) {
+       // a tap is needed to toggle the active state
+        this._userActivate(!this.active);
+      } else {
+        this.active = false;
+      }
+    },
+
+    _detectKeyboardFocus: function(focused) {
+      this._setReceivedFocusFromKeyboard(!this.pointerDown && focused);
+    },
+
+    // to emulate native checkbox, (de-)activations from a user interaction fire
+    // 'change' events
+    _userActivate: function(active) {
+      if (this.active !== active) {
+        this.active = active;
+        this.fire('change');
+      }
+    },
+
+    _downHandler: function(event) {
+      this._setPointerDown(true);
+      this._setPressed(true);
+      this._setReceivedFocusFromKeyboard(false);
+    },
+
+    _upHandler: function() {
+      this._setPointerDown(false);
+      this._setPressed(false);
+    },
+
+    _spaceKeyDownHandler: function(event) {
+      var keyboardEvent = event.detail.keyboardEvent;
+      keyboardEvent.preventDefault();
+      keyboardEvent.stopImmediatePropagation();
+      this._setPressed(true);
+    },
+
+    _spaceKeyUpHandler: function() {
+      if (this.pressed) {
+        this._asyncClick();
+      }
+      this._setPressed(false);
+    },
+
+    // trigger click asynchronously, the asynchrony is useful to allow one
+    // event handler to unwind before triggering another event
+    _asyncClick: function() {
+      this.async(function() {
+        this.click();
+      }, 1);
+    },
+
+    // any of these changes are considered a change to button state
+
+    _pressedChanged: function(pressed) {
+      this._changedButtonState();
+    },
+
+    _ariaActiveAttributeChanged: function(value, oldValue) {
+      if (oldValue && oldValue != value && this.hasAttribute(oldValue)) {
+        this.removeAttribute(oldValue);
+      }
+    },
+
+    _activeChanged: function(active, ariaActiveAttribute) {
+      if (this.toggles) {
+        this.setAttribute(this.ariaActiveAttribute,
+                          active ? 'true' : 'false');
+      } else {
+        this.removeAttribute(this.ariaActiveAttribute);
+      }
+      this._changedButtonState();
+    },
+
+    _controlStateChanged: function() {
+      if (this.disabled) {
+        this._setPressed(false);
+      } else {
+        this._changedButtonState();
+      }
+    },
+
+    // provide hook for follow-on behaviors to react to button-state
+
+    _changedButtonState: function() {
+      if (this._buttonStateChanged) {
+        this._buttonStateChanged(); // abstract
+      }
+    }
+
+  };
+
+  /** @polymerBehavior */
+  Polymer.IronButtonState = [
+    Polymer.IronA11yKeysBehavior,
+    Polymer.IronButtonStateImpl
+  ];
 (function() {
     var Utility = {
       distance: function(x1, y1, x2, y2) {
@@ -11898,286 +12143,6 @@
       }
     });
   })();
-/**
-   * @demo demo/index.html
-   * @polymerBehavior
-   */
-  Polymer.IronControlState = {
-
-    properties: {
-
-      /**
-       * If true, the element currently has focus.
-       */
-      focused: {
-        type: Boolean,
-        value: false,
-        notify: true,
-        readOnly: true,
-        reflectToAttribute: true
-      },
-
-      /**
-       * If true, the user cannot interact with this element.
-       */
-      disabled: {
-        type: Boolean,
-        value: false,
-        notify: true,
-        observer: '_disabledChanged',
-        reflectToAttribute: true
-      },
-
-      _oldTabIndex: {
-        type: Number
-      },
-
-      _boundFocusBlurHandler: {
-        type: Function,
-        value: function() {
-          return this._focusBlurHandler.bind(this);
-        }
-      }
-
-    },
-
-    observers: [
-      '_changedControlState(focused, disabled)'
-    ],
-
-    ready: function() {
-      this.addEventListener('focus', this._boundFocusBlurHandler, true);
-      this.addEventListener('blur', this._boundFocusBlurHandler, true);
-    },
-
-    _focusBlurHandler: function(event) {
-      // NOTE(cdata):  if we are in ShadowDOM land, `event.target` will
-      // eventually become `this` due to retargeting; if we are not in
-      // ShadowDOM land, `event.target` will eventually become `this` due
-      // to the second conditional which fires a synthetic event (that is also
-      // handled). In either case, we can disregard `event.path`.
-
-      if (event.target === this) {
-        var focused = event.type === 'focus';
-        this._setFocused(focused);
-      } else if (!this.shadowRoot) {
-        this.fire(event.type, {sourceEvent: event}, {
-          node: this,
-          bubbles: event.bubbles,
-          cancelable: event.cancelable
-        });
-      }
-    },
-
-    _disabledChanged: function(disabled, old) {
-      this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
-      this.style.pointerEvents = disabled ? 'none' : '';
-      if (disabled) {
-        this._oldTabIndex = this.tabIndex;
-        this.focused = false;
-        this.tabIndex = -1;
-      } else if (this._oldTabIndex !== undefined) {
-        this.tabIndex = this._oldTabIndex;
-      }
-    },
-
-    _changedControlState: function() {
-      // _controlStateChanged is abstract, follow-on behaviors may implement it
-      if (this._controlStateChanged) {
-        this._controlStateChanged();
-      }
-    }
-
-  };
-/**
-   * @demo demo/index.html
-   * @polymerBehavior Polymer.IronButtonState
-   */
-  Polymer.IronButtonStateImpl = {
-
-    properties: {
-
-      /**
-       * If true, the user is currently holding down the button.
-       */
-      pressed: {
-        type: Boolean,
-        readOnly: true,
-        value: false,
-        reflectToAttribute: true,
-        observer: '_pressedChanged'
-      },
-
-      /**
-       * If true, the button toggles the active state with each tap or press
-       * of the spacebar.
-       */
-      toggles: {
-        type: Boolean,
-        value: false,
-        reflectToAttribute: true
-      },
-
-      /**
-       * If true, the button is a toggle and is currently in the active state.
-       */
-      active: {
-        type: Boolean,
-        value: false,
-        notify: true,
-        reflectToAttribute: true
-      },
-
-      /**
-       * True if the element is currently being pressed by a "pointer," which
-       * is loosely defined as mouse or touch input (but specifically excluding
-       * keyboard input).
-       */
-      pointerDown: {
-        type: Boolean,
-        readOnly: true,
-        value: false
-      },
-
-      /**
-       * True if the input device that caused the element to receive focus
-       * was a keyboard.
-       */
-      receivedFocusFromKeyboard: {
-        type: Boolean,
-        readOnly: true
-      },
-
-      /**
-       * The aria attribute to be set if the button is a toggle and in the
-       * active state.
-       */
-      ariaActiveAttribute: {
-        type: String,
-        value: 'aria-pressed',
-        observer: '_ariaActiveAttributeChanged'
-      }
-    },
-
-    listeners: {
-      down: '_downHandler',
-      up: '_upHandler',
-      tap: '_tapHandler'
-    },
-
-    observers: [
-      '_detectKeyboardFocus(focused)',
-      '_activeChanged(active, ariaActiveAttribute)'
-    ],
-
-    keyBindings: {
-      'enter:keydown': '_asyncClick',
-      'space:keydown': '_spaceKeyDownHandler',
-      'space:keyup': '_spaceKeyUpHandler',
-    },
-
-    _mouseEventRe: /^mouse/,
-
-    _tapHandler: function() {
-      if (this.toggles) {
-       // a tap is needed to toggle the active state
-        this._userActivate(!this.active);
-      } else {
-        this.active = false;
-      }
-    },
-
-    _detectKeyboardFocus: function(focused) {
-      this._setReceivedFocusFromKeyboard(!this.pointerDown && focused);
-    },
-
-    // to emulate native checkbox, (de-)activations from a user interaction fire
-    // 'change' events
-    _userActivate: function(active) {
-      if (this.active !== active) {
-        this.active = active;
-        this.fire('change');
-      }
-    },
-
-    _downHandler: function(event) {
-      this._setPointerDown(true);
-      this._setPressed(true);
-      this._setReceivedFocusFromKeyboard(false);
-    },
-
-    _upHandler: function() {
-      this._setPointerDown(false);
-      this._setPressed(false);
-    },
-
-    _spaceKeyDownHandler: function(event) {
-      var keyboardEvent = event.detail.keyboardEvent;
-      keyboardEvent.preventDefault();
-      keyboardEvent.stopImmediatePropagation();
-      this._setPressed(true);
-    },
-
-    _spaceKeyUpHandler: function() {
-      if (this.pressed) {
-        this._asyncClick();
-      }
-      this._setPressed(false);
-    },
-
-    // trigger click asynchronously, the asynchrony is useful to allow one
-    // event handler to unwind before triggering another event
-    _asyncClick: function() {
-      this.async(function() {
-        this.click();
-      }, 1);
-    },
-
-    // any of these changes are considered a change to button state
-
-    _pressedChanged: function(pressed) {
-      this._changedButtonState();
-    },
-
-    _ariaActiveAttributeChanged: function(value, oldValue) {
-      if (oldValue && oldValue != value && this.hasAttribute(oldValue)) {
-        this.removeAttribute(oldValue);
-      }
-    },
-
-    _activeChanged: function(active, ariaActiveAttribute) {
-      if (this.toggles) {
-        this.setAttribute(this.ariaActiveAttribute,
-                          active ? 'true' : 'false');
-      } else {
-        this.removeAttribute(this.ariaActiveAttribute);
-      }
-      this._changedButtonState();
-    },
-
-    _controlStateChanged: function() {
-      if (this.disabled) {
-        this._setPressed(false);
-      } else {
-        this._changedButtonState();
-      }
-    },
-
-    // provide hook for follow-on behaviors to react to button-state
-
-    _changedButtonState: function() {
-      if (this._buttonStateChanged) {
-        this._buttonStateChanged(); // abstract
-      }
-    }
-
-  };
-
-  /** @polymerBehavior */
-  Polymer.IronButtonState = [
-    Polymer.IronA11yKeysBehavior,
-    Polymer.IronButtonStateImpl
-  ];
 /** 
    * `Polymer.PaperRippleBehavior` dynamically implements a ripple 
    * when the element has focus via pointer or keyboard.
@@ -12279,6 +12244,78 @@
     }
 
   };
+/**
+   * `Polymer.PaperInkyFocusBehavior` implements a ripple when the element has keyboard focus.
+   *
+   * @polymerBehavior Polymer.PaperInkyFocusBehaviorImpl
+   */
+  Polymer.PaperInkyFocusBehaviorImpl = {
+
+    observers: [
+      '_focusedChanged(receivedFocusFromKeyboard)'
+    ],
+
+    _focusedChanged: function(receivedFocusFromKeyboard) {
+      if (receivedFocusFromKeyboard) {
+        this.ensureRipple();
+      }
+      if (this.hasRipple()) {
+        this._ripple.holdDown = receivedFocusFromKeyboard;
+      }
+    },
+
+    _createRipple: function() {
+      var ripple = Polymer.PaperRippleBehavior._createRipple();
+      ripple.id = 'ink';
+      ripple.setAttribute('center', '');
+      ripple.classList.add('circle');
+      return ripple;
+    }
+
+  };
+
+  /** @polymerBehavior Polymer.PaperInkyFocusBehavior */
+  Polymer.PaperInkyFocusBehavior = [
+    Polymer.IronButtonState,
+    Polymer.IronControlState,
+    Polymer.PaperRippleBehavior,
+    Polymer.PaperInkyFocusBehaviorImpl
+  ];
+Polymer({
+    is: 'paper-material',
+
+    properties: {
+
+      /**
+       * The z-depth of this element, from 0-5. Setting to 0 will remove the
+       * shadow, and each increasing number greater than 0 will be "deeper"
+       * than the last.
+       *
+       * @attribute elevation
+       * @type number
+       * @default 1
+       */
+      elevation: {
+        type: Number,
+        reflectToAttribute: true,
+        value: 1
+      },
+
+      /**
+       * Set this to true to animate the shadow when setting a new
+       * `elevation` value.
+       *
+       * @attribute animated
+       * @type boolean
+       * @default false
+       */
+      animated: {
+        type: Boolean,
+        reflectToAttribute: true,
+        value: false
+      }
+    }
+  });
 /** @polymerBehavior Polymer.PaperButtonBehavior */
   Polymer.PaperButtonBehaviorImpl = {
 
@@ -12584,6 +12621,19 @@
 // found in the LICENSE file.
 
 cr.define('downloads', function() {
+  var InkyTextButton = Polymer({
+    is: 'inky-text-button',
+
+    behaviors: [
+      Polymer.PaperInkyFocusBehavior
+    ],
+
+    hostAttributes: {
+      role: 'button',
+      tabindex: 0,
+    },
+  });
+
   var Item = Polymer({
     is: 'downloads-item',
 
@@ -12900,7 +12950,10 @@
     },
   });
 
-  return {Item: Item};
+  return {
+    InkyTextButton: InkyTextButton,
+    Item: Item,
+  };
 });
 Polymer({
       is: 'paper-item',
@@ -15882,43 +15935,6 @@
 
     Polymer.PaperMenuButton = PaperMenuButton;
   })();
-/**
-   * `Polymer.PaperInkyFocusBehavior` implements a ripple when the element has keyboard focus.
-   *
-   * @polymerBehavior Polymer.PaperInkyFocusBehaviorImpl
-   */
-  Polymer.PaperInkyFocusBehaviorImpl = {
-
-    observers: [
-      '_focusedChanged(receivedFocusFromKeyboard)'
-    ],
-
-    _focusedChanged: function(receivedFocusFromKeyboard) {
-      if (receivedFocusFromKeyboard) {
-        this.ensureRipple();
-      }
-      if (this.hasRipple()) {
-        this._ripple.holdDown = receivedFocusFromKeyboard;
-      }
-    },
-
-    _createRipple: function() {
-      var ripple = Polymer.PaperRippleBehavior._createRipple();
-      ripple.id = 'ink';
-      ripple.setAttribute('center', '');
-      ripple.classList.add('circle');
-      return ripple;
-    }
-
-  };
-
-  /** @polymerBehavior Polymer.PaperInkyFocusBehavior */
-  Polymer.PaperInkyFocusBehavior = [
-    Polymer.IronButtonState,
-    Polymer.IronControlState,
-    Polymer.PaperRippleBehavior,
-    Polymer.PaperInkyFocusBehaviorImpl
-  ];
 Polymer({
       is: 'paper-icon-button',
 
diff --git a/chrome/browser/resources/md_downloads/item.css b/chrome/browser/resources/md_downloads/item.css
index 9a4576f..3216ab4 100644
--- a/chrome/browser/resources/md_downloads/item.css
+++ b/chrome/browser/resources/md_downloads/item.css
@@ -186,13 +186,10 @@
 }
 
 #remove {
-  --iron-icon-height: 16px;
-  --iron-icon-width: 16px;
-  --layout-inline: {
-    /* HACK(dbeam): we probably shouldn't be overriding Polymer like this. */
-  };
   color: #969696;
+  font-size: 16px;
   height: 16px;
+  line-height: 17px;  /* TODO(dbeam): why is this necesssary? */
   padding: 8px;
   width: 16px;
 }
diff --git a/chrome/browser/resources/md_downloads/item.html b/chrome/browser/resources/md_downloads/item.html
index ffe95f5..91fbd4f 100644
--- a/chrome/browser/resources/md_downloads/item.html
+++ b/chrome/browser/resources/md_downloads/item.html
@@ -4,11 +4,26 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/polymer/polymer.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icons/iron-icons.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/paper-behaviors/paper-inky-focus-behavior.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-progress/paper-progress.html">
 <link rel="import" href="chrome://downloads/action_service.html">
 <link rel="import" href="chrome://downloads/constants.html">
 
+<dom-module id="inky-text-button">
+  <template><content></content></template>
+  <style>
+    :host {
+      -webkit-user-select: none;
+      cursor: pointer;
+      display: inline-block;
+      outline: none;
+      position: relative;
+      text-align: center;
+    }
+  </style>
+</dom-module>
+
 <dom-module id="downloads-item">
   <template>
     <template is="dom-if" if="[[!hideDate]]">
@@ -90,10 +105,9 @@
       </div>
 
       <div id="remove-wrapper" class="icon-wrapper">
-        <paper-icon-button id="remove" icon="clear"
-            i18n-values="title:controlRemoveFromList"
+        <inky-text-button id="remove" i18n-values="title:controlRemoveFromList"
             style$="[[computeRemoveStyle_(isDangerous_, showCancel_)]]"
-            on-tap="onRemoveTap_"></paper-icon-button>
+            on-tap="onRemoveTap_">&#x2715;</inky-text-button>
       </div>
 
       <div id="incognito" i18n-values="title:inIncognito"
diff --git a/chrome/browser/resources/md_downloads/item.js b/chrome/browser/resources/md_downloads/item.js
index 3bce0bf9..e4fc85d 100644
--- a/chrome/browser/resources/md_downloads/item.js
+++ b/chrome/browser/resources/md_downloads/item.js
@@ -3,6 +3,19 @@
 // found in the LICENSE file.
 
 cr.define('downloads', function() {
+  var InkyTextButton = Polymer({
+    is: 'inky-text-button',
+
+    behaviors: [
+      Polymer.PaperInkyFocusBehavior
+    ],
+
+    hostAttributes: {
+      role: 'button',
+      tabindex: 0,
+    },
+  });
+
   var Item = Polymer({
     is: 'downloads-item',
 
@@ -319,5 +332,8 @@
     },
   });
 
-  return {Item: Item};
+  return {
+    InkyTextButton: InkyTextButton,
+    Item: Item,
+  };
 });
diff --git a/chrome/browser/resources/md_downloads/vulcanized.html b/chrome/browser/resources/md_downloads/vulcanized.html
index fff21ea..c6b8ba2 100644
--- a/chrome/browser/resources/md_downloads/vulcanized.html
+++ b/chrome/browser/resources/md_downloads/vulcanized.html
@@ -35,9 +35,7 @@
   font-style: normal;
   font-weight: 400;
   src: local('Roboto'), local('Roboto-Regular'),
-      url("chrome://resources/roboto/roboto-regular-latin.woff2") format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC,
-      U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
+      url("chrome://resources/roboto/roboto-regular.woff2") format('woff2');
 }
 
 @font-face {
@@ -45,9 +43,7 @@
   font-style: normal;
   font-weight: 500;
   src: local('Roboto Medium'), local('Roboto-Medium'),
-      url("chrome://resources/roboto/roboto-medium-latin.woff2") format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC,
-      U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
+      url("chrome://resources/roboto/roboto-medium.woff2") format('woff2');
 }
 
 </style>
@@ -416,8 +412,6 @@
 
 
 
-
-
 <style is="custom-style">
 
   :root {
@@ -1366,9 +1360,7 @@
   font-style: normal;
   font-weight: 400;
   src: local('Roboto'), local('Roboto-Regular'),
-      url("chrome://resources/roboto/roboto-regular-latin.woff2") format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC,
-      U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
+      url("chrome://resources/roboto/roboto-regular.woff2") format('woff2');
 }
 
 @font-face {
@@ -1376,9 +1368,7 @@
   font-style: normal;
   font-weight: 500;
   src: local('Roboto Medium'), local('Roboto-Medium'),
-      url("chrome://resources/roboto/roboto-medium-latin.woff2") format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC,
-      U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
+      url("chrome://resources/roboto/roboto-medium.woff2") format('woff2');
 }
 
 </style>
@@ -2098,41 +2088,6 @@
 <g id="zoom-out"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z"></path></g>
 </defs></svg>
 </iron-iconset-svg>
-<dom-module id="paper-material" assetpath="chrome://resources/polymer/v1_0/paper-material/">
-  <style>
-    :host {
-      display: block;
-      position: relative;
-    }
-
-    :host([animated]) {
-      @apply(--shadow-transition);
-    }
-
-    :host([elevation="1"]) {
-      @apply(--shadow-elevation-2dp);
-    }
-
-    :host([elevation="2"]) {
-      @apply(--shadow-elevation-4dp);
-    }
-
-    :host([elevation="3"]) {
-      @apply(--shadow-elevation-6dp);
-    }
-
-    :host([elevation="4"]) {
-      @apply(--shadow-elevation-8dp);
-    }
-
-    :host([elevation="5"]) {
-      @apply(--shadow-elevation-16dp);
-    }
-  </style>
-  <template>
-    <content></content>
-  </template>
-</dom-module>
 <dom-module id="paper-ripple" assetpath="chrome://resources/polymer/v1_0/paper-ripple/">
 
   
@@ -2207,6 +2162,41 @@
     <div id="waves"></div>
   </template>
 </dom-module>
+<dom-module id="paper-material" assetpath="chrome://resources/polymer/v1_0/paper-material/">
+  <style>
+    :host {
+      display: block;
+      position: relative;
+    }
+
+    :host([animated]) {
+      @apply(--shadow-transition);
+    }
+
+    :host([elevation="1"]) {
+      @apply(--shadow-elevation-2dp);
+    }
+
+    :host([elevation="2"]) {
+      @apply(--shadow-elevation-4dp);
+    }
+
+    :host([elevation="3"]) {
+      @apply(--shadow-elevation-6dp);
+    }
+
+    :host([elevation="4"]) {
+      @apply(--shadow-elevation-8dp);
+    }
+
+    :host([elevation="5"]) {
+      @apply(--shadow-elevation-16dp);
+    }
+  </style>
+  <template>
+    <content></content>
+  </template>
+</dom-module>
 <dom-module id="paper-button" assetpath="chrome://resources/polymer/v1_0/paper-button/">
   <template strip-whitespace="">
 
@@ -2428,6 +2418,20 @@
   </template>
 </dom-module>
 
+<dom-module id="inky-text-button" assetpath="chrome://downloads/">
+  <template><content></content></template>
+  <style>
+    :host {
+      -webkit-user-select: none;
+      cursor: pointer;
+      display: inline-block;
+      outline: none;
+      position: relative;
+      text-align: center;
+    }
+  </style>
+</dom-module>
+
 <dom-module id="downloads-item" assetpath="chrome://downloads/">
   <template>
     <template is="dom-if" if="[[!hideDate]]">
@@ -2488,7 +2492,7 @@
       </div>
 
       <div id="remove-wrapper" class="icon-wrapper">
-        <paper-icon-button id="remove" icon="clear" i18n-values="title:controlRemoveFromList" style$="[[computeRemoveStyle_(isDangerous_, showCancel_)]]" on-tap="onRemoveTap_"></paper-icon-button>
+        <inky-text-button id="remove" i18n-values="title:controlRemoveFromList" style$="[[computeRemoveStyle_(isDangerous_, showCancel_)]]" on-tap="onRemoveTap_">✕</inky-text-button>
       </div>
 
       <div id="incognito" i18n-values="title:inIncognito" hidden="[[!data.otr]]"></div>
@@ -2732,13 +2736,10 @@
 }
 
 #remove {
-  --iron-icon-height: 16px;
-  --iron-icon-width: 16px;
-  --layout-inline: {
-    /* HACK(dbeam): we probably shouldn't be overriding Polymer like this. */
-  };
   color: #969696;
+  font-size: 16px;
   height: 16px;
+  line-height: 17px;  /* TODO(dbeam): why is this necesssary? */
   padding: 8px;
   width: 16px;
 }
diff --git a/chrome/browser/resources/settings/default_browser_page/default_browser_page.html b/chrome/browser/resources/settings/default_browser_page/default_browser_page.html
index 6e49233..0e7c01582 100644
--- a/chrome/browser/resources/settings/default_browser_page/default_browser_page.html
+++ b/chrome/browser/resources/settings/default_browser_page/default_browser_page.html
@@ -1,7 +1,7 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/polymer/polymer.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html">
-<link rel="import" href="chrome://md-settings/i18n_behavior/i18n_behavior.html">
+<link rel="import" href="chrome://resources/html/i18n_behavior.html">
 
 <dom-module id="settings-default-browser-page">
   <link rel="import" type="css"
diff --git a/chrome/browser/resources/settings/i18n_behavior/i18n_behavior.html b/chrome/browser/resources/settings/i18n_behavior/i18n_behavior.html
deleted file mode 100644
index 6a18a85..0000000
--- a/chrome/browser/resources/settings/i18n_behavior/i18n_behavior.html
+++ /dev/null
@@ -1 +0,0 @@
-<script src="i18n_behavior.js"></script>
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd
index b75cc76a..1fc6a7e 100644
--- a/chrome/browser/resources/settings/settings_resources.grd
+++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -65,12 +65,6 @@
       <structure name="IDR_SETTINGS_BASIC_PAGE_CSS"
                  file="basic_page/basic_page.css"
                  type="chrome_html" />
-      <structure name="IDR_SETTINGS_I18N_BEHAVIOR_HTML"
-                 file="i18n_behavior/i18n_behavior.html"
-                 type="chrome_html" />
-      <structure name="IDR_SETTINGS_I18N_BEHAVIOR_JS"
-                 file="i18n_behavior/i18n_behavior.js"
-                 type="chrome_html" />
       <structure name="IDR_SETTINGS_ON_STARTUP_PAGE_HTML"
                  file="on_startup_page/on_startup_page.html"
                  type="chrome_html" />
diff --git a/chrome/browser/supervised_user/supervised_user_site_list.cc b/chrome/browser/supervised_user/supervised_user_site_list.cc
index de3baac..84ba29f 100644
--- a/chrome/browser/supervised_user/supervised_user_site_list.cc
+++ b/chrome/browser/supervised_user/supervised_user_site_list.cc
@@ -29,8 +29,8 @@
   JSONFileValueDeserializer deserializer(path);
   int error_code;
   std::string error_msg;
-  scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_msg));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_msg);
   if (!value) {
     LOG(ERROR) << "Couldn't load site list " << path.value() << ": "
                << error_msg;
diff --git a/chrome/browser/themes/browser_theme_pack_unittest.cc b/chrome/browser/themes/browser_theme_pack_unittest.cc
index 404dbda..6dbc596 100644
--- a/chrome/browser/themes/browser_theme_pack_unittest.cc
+++ b/chrome/browser/themes/browser_theme_pack_unittest.cc
@@ -155,9 +155,8 @@
         extension_path.AppendASCII("manifest.json");
     std::string error;
     JSONFileValueDeserializer deserializer(manifest_path);
-    scoped_ptr<base::DictionaryValue> valid_value(
-        static_cast<base::DictionaryValue*>(
-            deserializer.Deserialize(NULL, &error)));
+    scoped_ptr<base::DictionaryValue> valid_value =
+        base::DictionaryValue::From(deserializer.Deserialize(NULL, &error));
     EXPECT_EQ("", error);
     ASSERT_TRUE(valid_value.get());
     scoped_refptr<Extension> extension(
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 56f2ae7..10d135a 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -63,6 +63,7 @@
     "//components/strings",
     "//components/toolbar",
     "//components/update_client",
+    "//components/version_ui",
     "//content/public/common",
     "//crypto",
     "//skia",
diff --git a/chrome/browser/ui/DEPS b/chrome/browser/ui/DEPS
index e111da9d..25a6654 100644
--- a/chrome/browser/ui/DEPS
+++ b/chrome/browser/ui/DEPS
@@ -6,5 +6,6 @@
   "+components/page_load_metrics/browser",
   "+components/toolbar",
   "+components/url_formatter",
+  "+components/version_ui",
   "-chrome/browser/ui/views",
 ]
diff --git a/chrome/browser/ui/app_list/start_page_service.cc b/chrome/browser/ui/app_list/start_page_service.cc
index 6fc32fb5..c078e731 100644
--- a/chrome/browser/ui/app_list/start_page_service.cc
+++ b/chrome/browser/ui/app_list/start_page_service.cc
@@ -668,8 +668,8 @@
   JSONStringValueDeserializer deserializer(json_data_substr);
   deserializer.set_allow_trailing_comma(true);
   int error_code = 0;
-  scoped_ptr<base::Value> doodle_json(
-      deserializer.Deserialize(&error_code, nullptr));
+  scoped_ptr<base::Value> doodle_json =
+      deserializer.Deserialize(&error_code, nullptr);
 
   base::TimeDelta recheck_delay;
   if (error_code != 0) {
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm
index bbfc886..b2e2a70 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm
@@ -36,8 +36,8 @@
 
   std::string error;
   JSONFileValueDeserializer deserializer(path);
-  scoped_ptr<base::DictionaryValue> value(static_cast<base::DictionaryValue*>(
-      deserializer.Deserialize(NULL, &error)));
+  scoped_ptr<base::DictionaryValue> value =
+      base::DictionaryValue::From(deserializer.Deserialize(NULL, &error));
   if (!value.get()) {
     LOG(ERROR) << error;
     return extension;
diff --git a/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm b/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm
index c942c8d..a14305a 100644
--- a/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm
@@ -130,10 +130,10 @@
   bool closed_delegate_link_clicked_;
 
  private:
-  void OnInfoBarDelegateClosed() override {
-    closed_delegate_ok_clicked_ = delegate()->ok_clicked();
-    closed_delegate_cancel_clicked_ = delegate()->cancel_clicked();
-    closed_delegate_link_clicked_ = delegate()->link_clicked();
+  void OnInfoBarDelegateClosed(MockConfirmInfoBarDelegate* delegate) override {
+    closed_delegate_ok_clicked_ = delegate->ok_clicked();
+    closed_delegate_cancel_clicked_ = delegate->cancel_clicked();
+    closed_delegate_link_clicked_ = delegate->link_clicked();
     delegate_closed_ = true;
     controller_.reset();
   }
diff --git a/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.cc b/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.cc
index b9e9abd..c94b2e9 100644
--- a/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.cc
+++ b/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.cc
@@ -22,7 +22,7 @@
 
 MockConfirmInfoBarDelegate::~MockConfirmInfoBarDelegate() {
   if (owner_)
-    owner_->OnInfoBarDelegateClosed();
+    owner_->OnInfoBarDelegateClosed(this);
 }
 
 int MockConfirmInfoBarDelegate::GetIconId() const {
diff --git a/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.h b/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.h
index a5f8631b..11f92462 100644
--- a/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.h
+++ b/chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.h
@@ -12,10 +12,11 @@
 
 class MockConfirmInfoBarDelegate : public ConfirmInfoBarDelegate {
  public:
-  // Called when |this| is about to be destroyed.
+  // Called when the dtor of |this| has been entered.
   class Owner {
    public:
-    virtual void OnInfoBarDelegateClosed() = 0;
+    virtual void OnInfoBarDelegateClosed(
+        MockConfirmInfoBarDelegate* delegate) = 0;
 
    protected:
     virtual ~Owner() {}
diff --git a/chrome/browser/ui/webui/downloads_dom_handler.cc b/chrome/browser/ui/webui/downloads_dom_handler.cc
index 0ce308cf..8e90f86 100644
--- a/chrome/browser/ui/webui/downloads_dom_handler.cc
+++ b/chrome/browser/ui/webui/downloads_dom_handler.cc
@@ -63,9 +63,7 @@
 
 // Maximum number of downloads to show. TODO(glen): Remove this and instead
 // stuff the downloads down the pipe slowly.
-size_t MaxNumberOfDownloads() {
-  return MdDownloadsEnabled() ? 50 : 150;
-}
+size_t kMaxNumberOfDownloads = 150;
 
 enum DownloadsDOMEvent {
   DOWNLOADS_DOM_EVENT_GET_DOWNLOADS = 0,
@@ -653,7 +651,7 @@
     query.AddFilter(DownloadQuery::FILTER_QUERY, *search_terms_);
   query.AddFilter(base::Bind(&IsDownloadDisplayable));
   query.AddSorter(DownloadQuery::SORT_START_TIME, DownloadQuery::DESCENDING);
-  query.Limit(MaxNumberOfDownloads());
+  query.Limit(kMaxNumberOfDownloads);
   query.Search(all_items.begin(), all_items.end(), &filtered_items);
 
   base::ListValue results_value;
diff --git a/chrome/browser/ui/webui/flash_ui.cc b/chrome/browser/ui/webui/flash_ui.cc
index f702443..6bfaac2 100644
--- a/chrome/browser/ui/webui/flash_ui.cc
+++ b/chrome/browser/ui/webui/flash_ui.cc
@@ -40,6 +40,7 @@
 #include "content/public/common/webplugininfo.h"
 #include "gpu/config/gpu_info.h"
 #include "grit/browser_resources.h"
+#include "grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 
 #if defined(OS_WIN)
@@ -262,7 +263,7 @@
   if (os->architecture() == base::win::OSInfo::X64_ARCHITECTURE)
     os_label += " 64 bit";
 #endif
-  AddPair(list, l10n_util::GetStringUTF16(IDS_ABOUT_VERSION_OS), os_label);
+  AddPair(list, l10n_util::GetStringUTF16(IDS_VERSION_UI_OS), os_label);
 
   // Obtain the version of the Flash plugins.
   std::vector<content::WebPluginInfo> info_array;
diff --git a/chrome/browser/ui/webui/help/help_handler.cc b/chrome/browser/ui/webui/help/help_handler.cc
index 6acf4ff..8499e6c 100644
--- a/chrome/browser/ui/webui/help/help_handler.cc
+++ b/chrome/browser/ui/webui/help/help_handler.cc
@@ -38,6 +38,8 @@
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/common/user_agent.h"
+#include "grit/components_chromium_strings.h"
+#include "grit/components_google_chrome_strings.h"
 #include "grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "v8/include/v8.h"
@@ -216,71 +218,71 @@
   };
 
   static L10nResources resources[] = {
-    { "aboutTitle", IDS_ABOUT_TITLE },
+    {"aboutTitle", IDS_ABOUT_TITLE},
 #if defined(OS_CHROMEOS)
-    { "aboutProductTitle", IDS_PRODUCT_OS_NAME },
+    {"aboutProductTitle", IDS_PRODUCT_OS_NAME},
 #else
-    { "aboutProductTitle", IDS_PRODUCT_NAME },
+    {"aboutProductTitle", IDS_PRODUCT_NAME},
 #endif
-    { "aboutProductDescription", IDS_ABOUT_PRODUCT_DESCRIPTION },
-    { "relaunch", IDS_RELAUNCH_BUTTON },
+    {"aboutProductDescription", IDS_ABOUT_PRODUCT_DESCRIPTION},
+    {"relaunch", IDS_RELAUNCH_BUTTON},
 #if defined(OS_CHROMEOS)
-    { "relaunchAndPowerwash", IDS_RELAUNCH_AND_POWERWASH_BUTTON },
+    {"relaunchAndPowerwash", IDS_RELAUNCH_AND_POWERWASH_BUTTON},
 #endif
-    { "productName", IDS_PRODUCT_NAME },
-    { "updateCheckStarted", IDS_UPGRADE_CHECK_STARTED },
-    { "upToDate", IDS_UPGRADE_UP_TO_DATE },
-    { "updating", IDS_UPGRADE_UPDATING },
+    {"productName", IDS_PRODUCT_NAME},
+    {"updateCheckStarted", IDS_UPGRADE_CHECK_STARTED},
+    {"upToDate", IDS_UPGRADE_UP_TO_DATE},
+    {"updating", IDS_UPGRADE_UPDATING},
 #if defined(OS_CHROMEOS)
-    { "updateButton", IDS_UPGRADE_BUTTON },
-    { "updatingChannelSwitch", IDS_UPGRADE_UPDATING_CHANNEL_SWITCH },
+    {"updateButton", IDS_UPGRADE_BUTTON},
+    {"updatingChannelSwitch", IDS_UPGRADE_UPDATING_CHANNEL_SWITCH},
 #endif
-    { "updateAlmostDone", IDS_UPGRADE_SUCCESSFUL_RELAUNCH },
+    {"updateAlmostDone", IDS_UPGRADE_SUCCESSFUL_RELAUNCH},
 #if defined(OS_CHROMEOS)
-    { "successfulChannelSwitch", IDS_UPGRADE_SUCCESSFUL_CHANNEL_SWITCH },
+    {"successfulChannelSwitch", IDS_UPGRADE_SUCCESSFUL_CHANNEL_SWITCH},
 #endif
-    { "getHelpWithChrome", IDS_GET_HELP_USING_CHROME },
-    { "reportAnIssue", IDS_REPORT_AN_ISSUE },
+    {"getHelpWithChrome", IDS_GET_HELP_USING_CHROME},
+    {"reportAnIssue", IDS_REPORT_AN_ISSUE},
 #if defined(OS_CHROMEOS)
-    { "platform", IDS_PLATFORM_LABEL },
-    { "firmware", IDS_ABOUT_PAGE_FIRMWARE },
-    { "showMoreInfo", IDS_SHOW_MORE_INFO },
-    { "hideMoreInfo", IDS_HIDE_MORE_INFO },
-    { "channel", IDS_ABOUT_PAGE_CHANNEL },
-    { "stable", IDS_ABOUT_PAGE_CHANNEL_STABLE },
-    { "beta", IDS_ABOUT_PAGE_CHANNEL_BETA },
-    { "dev", IDS_ABOUT_PAGE_CHANNEL_DEVELOPMENT },
-    { "channel-changed", IDS_ABOUT_PAGE_CHANNEL_CHANGED },
-    { "currentChannelStable", IDS_ABOUT_PAGE_CURRENT_CHANNEL_STABLE },
-    { "currentChannelBeta", IDS_ABOUT_PAGE_CURRENT_CHANNEL_BETA },
-    { "currentChannelDev", IDS_ABOUT_PAGE_CURRENT_CHANNEL_DEV },
-    { "currentChannel", IDS_ABOUT_PAGE_CURRENT_CHANNEL },
-    { "channelChangeButton", IDS_ABOUT_PAGE_CHANNEL_CHANGE_BUTTON },
-    { "channelChangeDisallowedMessage",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_DISALLOWED_MESSAGE },
-    { "channelChangePageTitle", IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_TITLE },
-    { "channelChangePagePowerwashTitle",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_TITLE },
-    { "channelChangePagePowerwashMessage",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_MESSAGE },
-    { "channelChangePageDelayedChangeTitle",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_DELAYED_CHANGE_TITLE },
-    { "channelChangePageUnstableTitle",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_TITLE },
-    { "channelChangePagePowerwashButton",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_BUTTON },
-    { "channelChangePageChangeButton",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CHANGE_BUTTON },
-    { "channelChangePageCancelButton",
-      IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CANCEL_BUTTON },
-    { "webkit", IDS_WEBKIT },
-    { "userAgent", IDS_ABOUT_VERSION_USER_AGENT },
-    { "commandLine", IDS_ABOUT_VERSION_COMMAND_LINE },
-    { "buildDate", IDS_ABOUT_VERSION_BUILD_DATE },
+    {"platform", IDS_PLATFORM_LABEL},
+    {"firmware", IDS_ABOUT_PAGE_FIRMWARE},
+    {"showMoreInfo", IDS_SHOW_MORE_INFO},
+    {"hideMoreInfo", IDS_HIDE_MORE_INFO},
+    {"channel", IDS_ABOUT_PAGE_CHANNEL},
+    {"stable", IDS_ABOUT_PAGE_CHANNEL_STABLE},
+    {"beta", IDS_ABOUT_PAGE_CHANNEL_BETA},
+    {"dev", IDS_ABOUT_PAGE_CHANNEL_DEVELOPMENT},
+    {"channel-changed", IDS_ABOUT_PAGE_CHANNEL_CHANGED},
+    {"currentChannelStable", IDS_ABOUT_PAGE_CURRENT_CHANNEL_STABLE},
+    {"currentChannelBeta", IDS_ABOUT_PAGE_CURRENT_CHANNEL_BETA},
+    {"currentChannelDev", IDS_ABOUT_PAGE_CURRENT_CHANNEL_DEV},
+    {"currentChannel", IDS_ABOUT_PAGE_CURRENT_CHANNEL},
+    {"channelChangeButton", IDS_ABOUT_PAGE_CHANNEL_CHANGE_BUTTON},
+    {"channelChangeDisallowedMessage",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_DISALLOWED_MESSAGE},
+    {"channelChangePageTitle", IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_TITLE},
+    {"channelChangePagePowerwashTitle",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_TITLE},
+    {"channelChangePagePowerwashMessage",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_MESSAGE},
+    {"channelChangePageDelayedChangeTitle",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_DELAYED_CHANGE_TITLE},
+    {"channelChangePageUnstableTitle",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_TITLE},
+    {"channelChangePagePowerwashButton",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_BUTTON},
+    {"channelChangePageChangeButton",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CHANGE_BUTTON},
+    {"channelChangePageCancelButton",
+     IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CANCEL_BUTTON},
+    {"webkit", IDS_WEBKIT},
+    {"userAgent", IDS_VERSION_UI_USER_AGENT},
+    {"commandLine", IDS_VERSION_UI_COMMAND_LINE},
+    {"buildDate", IDS_VERSION_UI_BUILD_DATE},
 #endif
 #if defined(OS_MACOSX)
-    { "promote", IDS_ABOUT_CHROME_PROMOTE_UPDATER },
-    { "learnMore", IDS_LEARN_MORE },
+    {"promote", IDS_ABOUT_CHROME_PROMOTE_UPDATER},
+    {"learnMore", IDS_LEARN_MORE},
 #endif
   };
 
@@ -311,8 +313,7 @@
                                   base::IntToString16(exploded_time.year)));
 
   base::string16 license = l10n_util::GetStringFUTF16(
-      IDS_ABOUT_VERSION_LICENSE,
-      base::ASCIIToUTF16(chrome::kChromiumProjectURL),
+      IDS_VERSION_UI_LICENSE, base::ASCIIToUTF16(chrome::kChromiumProjectURL),
       base::ASCIIToUTF16(chrome::kChromeUICreditsURL));
   localized_strings->SetString("productLicense", license);
 
diff --git a/chrome/browser/ui/webui/nacl_ui.cc b/chrome/browser/ui/webui/nacl_ui.cc
index e129cfd5..183cfa61 100644
--- a/chrome/browser/ui/webui/nacl_ui.cc
+++ b/chrome/browser/ui/webui/nacl_ui.cc
@@ -36,6 +36,7 @@
 #include "content/public/browser/web_ui_message_handler.h"
 #include "content/public/common/webplugininfo.h"
 #include "grit/browser_resources.h"
+#include "grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 
 #if defined(OS_WIN)
@@ -204,8 +205,7 @@
   if (os->architecture() == base::win::OSInfo::X64_ARCHITECTURE)
     os_label += " 64 bit";
 #endif
-  AddPair(list,
-          l10n_util::GetStringUTF16(IDS_ABOUT_VERSION_OS),
+  AddPair(list, l10n_util::GetStringUTF16(IDS_VERSION_UI_OS),
           ASCIIToUTF16(os_label));
   AddLineBreak(list);
 }
@@ -328,7 +328,7 @@
       pnacl_path.AppendASCII("pnacl_public_pnacl_json");
   JSONFileValueDeserializer deserializer(pnacl_json_path);
   std::string error;
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, &error));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, &error);
   if (!root || !root->IsType(base::Value::TYPE_DICTIONARY))
     return;
 
diff --git a/chrome/browser/ui/webui/version_handler.cc b/chrome/browser/ui/webui/version_handler.cc
index ba348d9..0b6040f 100644
--- a/chrome/browser/ui/webui/version_handler.cc
+++ b/chrome/browser/ui/webui/version_handler.cc
@@ -13,10 +13,12 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/variations/active_field_trials.h"
+#include "components/version_ui/version_ui_constants.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/plugin_service.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/common/content_constants.h"
+#include "grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "url/gurl.h"
 
@@ -30,20 +32,16 @@
 
   base::FilePath executable_path = base::MakeAbsoluteFilePath(
       base::CommandLine::ForCurrentProcess()->GetProgram());
-  if (!executable_path.empty()) {
+  if (!executable_path.empty())
     *exec_path_out = executable_path.LossyDisplayName();
-  } else {
-    *exec_path_out =
-        l10n_util::GetStringUTF16(IDS_ABOUT_VERSION_PATH_NOTFOUND);
-  }
+  else
+    *exec_path_out = l10n_util::GetStringUTF16(IDS_VERSION_UI_PATH_NOTFOUND);
 
   base::FilePath profile_path_copy(base::MakeAbsoluteFilePath(profile_path));
-  if (!profile_path.empty() && !profile_path_copy.empty()) {
+  if (!profile_path.empty() && !profile_path_copy.empty())
     *profile_path_out = profile_path.LossyDisplayName();
-  } else {
-    *profile_path_out =
-        l10n_util::GetStringUTF16(IDS_ABOUT_VERSION_PATH_NOTFOUND);
-  }
+  else
+    *profile_path_out = l10n_util::GetStringUTF16(IDS_VERSION_UI_PATH_NOTFOUND);
 }
 
 }  // namespace
@@ -57,9 +55,9 @@
 
 void VersionHandler::RegisterMessages() {
   web_ui()->RegisterMessageCallback(
-      "requestVersionInfo",
+      version_ui::kRequestVersionInfo,
       base::Bind(&VersionHandler::HandleRequestVersionInfo,
-      base::Unretained(this)));
+                 base::Unretained(this)));
 }
 
 void VersionHandler::HandleRequestVersionInfo(const base::ListValue* args) {
@@ -112,7 +110,8 @@
   }
 
   // In release mode, this will return an empty list to clear the section.
-  web_ui()->CallJavascriptFunction("returnVariationInfo", variations_list);
+  web_ui()->CallJavascriptFunction(version_ui::kReturnVariationInfo,
+                                   variations_list);
 }
 
 void VersionHandler::OnGotFilePaths(base::string16* executable_path_data,
@@ -121,7 +120,8 @@
 
   base::StringValue exec_path(*executable_path_data);
   base::StringValue profile_path(*profile_path_data);
-  web_ui()->CallJavascriptFunction("returnFilePaths", exec_path, profile_path);
+  web_ui()->CallJavascriptFunction(version_ui::kReturnFilePaths, exec_path,
+                                   profile_path);
 }
 
 #if defined(ENABLE_PLUGINS)
@@ -145,6 +145,6 @@
   }
 
   base::StringValue arg(flash_version);
-  web_ui()->CallJavascriptFunction("returnFlashVersion", arg);
+  web_ui()->CallJavascriptFunction(version_ui::kReturnFlashVersion, arg);
 }
 #endif  // defined(ENABLE_PLUGINS)
diff --git a/chrome/browser/ui/webui/version_ui.cc b/chrome/browser/ui/webui/version_ui.cc
index 25cd92d..4fc5a9cc 100644
--- a/chrome/browser/ui/webui/version_ui.cc
+++ b/chrome/browser/ui/webui/version_ui.cc
@@ -14,11 +14,15 @@
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/version_info/version_info.h"
+#include "components/version_ui/version_ui_constants.h"
 #include "content/public/browser/url_data_source.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_data_source.h"
 #include "content/public/common/user_agent.h"
 #include "grit/browser_resources.h"
+#include "grit/components_chromium_strings.h"
+#include "grit/components_google_chrome_strings.h"
+#include "grit/components_resources.h"
 #include "grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "v8/include/v8.h"
@@ -45,57 +49,66 @@
       WebUIDataSource::Create(chrome::kChromeUIVersionHost);
 
   // Localized and data strings.
-  html_source->AddLocalizedString("title", IDS_ABOUT_VERSION_TITLE);
-  html_source->AddLocalizedString("application_label", IDS_PRODUCT_NAME);
-  html_source->AddString("version", version_info::GetVersionNumber());
-  html_source->AddString("version_modifier", chrome::GetChannelString());
-  html_source->AddLocalizedString("os_name", IDS_ABOUT_VERSION_OS);
-  html_source->AddLocalizedString("platform", IDS_PLATFORM_LABEL);
-  html_source->AddString("os_type", version_info::GetOSType());
-  html_source->AddString("blink_version", content::GetWebKitVersion());
-  html_source->AddString("js_engine", "V8");
-  html_source->AddString("js_version", v8::V8::GetVersion());
+  html_source->AddLocalizedString(version_ui::kTitle, IDS_VERSION_UI_TITLE);
+  html_source->AddLocalizedString(version_ui::kApplicationLabel,
+                                  IDS_PRODUCT_NAME);
+  html_source->AddString(version_ui::kVersion,
+                         version_info::GetVersionNumber());
+  html_source->AddString(version_ui::kVersionModifier,
+                         chrome::GetChannelString());
+  html_source->AddLocalizedString(version_ui::kOSName, IDS_VERSION_UI_OS);
+  html_source->AddLocalizedString(version_ui::kPlatform, IDS_PLATFORM_LABEL);
+  html_source->AddString(version_ui::kOSType, version_info::GetOSType());
+  html_source->AddString(version_ui::kBlinkVersion,
+                         content::GetWebKitVersion());
+  html_source->AddString(version_ui::kJSEngine, "V8");
+  html_source->AddString(version_ui::kJSVersion, v8::V8::GetVersion());
 
 #if defined(OS_ANDROID)
-  html_source->AddString("os_version", AndroidAboutAppInfo::GetOsInfo());
-  html_source->AddLocalizedString("build_id_name",
-                                  IDS_ABOUT_VERSION_BUILD_ID);
-  html_source->AddString("build_id", CHROME_BUILD_ID);
+  html_source->AddString(version_ui::kOSVersion,
+                         AndroidAboutAppInfo::GetOsInfo());
+  html_source->AddLocalizedString(version_ui::kBuildIDName,
+                                  IDS_VERSION_UI_BUILD_ID);
+  html_source->AddString(version_ui::kBuildID, CHROME_BUILD_ID);
 #else
-  html_source->AddString("os_version", std::string());
-  html_source->AddString("flash_plugin", "Flash");
+  html_source->AddString(version_ui::kOSVersion, std::string());
+  html_source->AddString(version_ui::kFlashPlugin, "Flash");
   // Note that the Flash version is retrieve asynchronously and returned in
   // VersionHandler::OnGotPlugins. The area is initially blank.
-  html_source->AddString("flash_version", std::string());
+  html_source->AddString(version_ui::kFlashVersion, std::string());
 #endif  // defined(OS_ANDROID)
 
-  html_source->AddLocalizedString("company", IDS_ABOUT_VERSION_COMPANY_NAME);
+  html_source->AddLocalizedString(version_ui::kCompany,
+                                  IDS_ABOUT_VERSION_COMPANY_NAME);
   base::Time::Exploded exploded_time;
   base::Time::Now().LocalExplode(&exploded_time);
   html_source->AddString(
-      "copyright",
+      version_ui::kCopyright,
       l10n_util::GetStringFUTF16(IDS_ABOUT_VERSION_COPYRIGHT,
                                  base::IntToString16(exploded_time.year)));
-  html_source->AddLocalizedString("revision", IDS_ABOUT_VERSION_REVISION);
-  html_source->AddString("cl", version_info::GetLastChange());
-  html_source->AddLocalizedString("official",
+  html_source->AddLocalizedString(version_ui::kRevision,
+                                  IDS_VERSION_UI_REVISION);
+  html_source->AddString(version_ui::kCL, version_info::GetLastChange());
+  html_source->AddLocalizedString(version_ui::kOfficial,
                                   version_info::IsOfficialBuild()
-                                      ? IDS_ABOUT_VERSION_OFFICIAL
-                                      : IDS_ABOUT_VERSION_UNOFFICIAL);
+                                      ? IDS_VERSION_UI_OFFICIAL
+                                      : IDS_VERSION_UI_UNOFFICIAL);
 #if defined(ARCH_CPU_64_BITS)
-  html_source->AddLocalizedString("version_bitsize", IDS_ABOUT_VERSION_64BIT);
+  html_source->AddLocalizedString(version_ui::kVersionBitSize,
+                                  IDS_VERSION_UI_64BIT);
 #else
-  html_source->AddLocalizedString("version_bitsize", IDS_ABOUT_VERSION_32BIT);
+  html_source->AddLocalizedString(version_ui::kVersionBitSize,
+                                  IDS_VERSION_UI_32BIT);
 #endif
-  html_source->AddLocalizedString("user_agent_name",
-                                  IDS_ABOUT_VERSION_USER_AGENT);
-  html_source->AddString("useragent", GetUserAgent());
-  html_source->AddLocalizedString("command_line_name",
-                                  IDS_ABOUT_VERSION_COMMAND_LINE);
+  html_source->AddLocalizedString(version_ui::kUserAgentName,
+                                  IDS_VERSION_UI_USER_AGENT);
+  html_source->AddString(version_ui::kUserAgent, GetUserAgent());
+  html_source->AddLocalizedString(version_ui::kCommandLineName,
+                                  IDS_VERSION_UI_COMMAND_LINE);
 
 #if defined(OS_WIN)
   html_source->AddString(
-      "command_line",
+      version_ui::kCommandLine,
       base::CommandLine::ForCurrentProcess()->GetCommandLineString());
 #elif defined(OS_POSIX)
   std::string command_line;
@@ -105,22 +118,22 @@
     command_line += " " + *iter;
   // TODO(viettrungluu): |command_line| could really have any encoding, whereas
   // below we assumes it's UTF-8.
-  html_source->AddString("command_line", command_line);
+  html_source->AddString(version_ui::kCommandLine, command_line);
 #endif
 
   // Note that the executable path and profile path are retrieved asynchronously
   // and returned in VersionHandler::OnGotFilePaths. The area is initially
   // blank.
-  html_source->AddLocalizedString("executable_path_name",
-                                  IDS_ABOUT_VERSION_EXECUTABLE_PATH);
-  html_source->AddString("executable_path", std::string());
+  html_source->AddLocalizedString(version_ui::kExecutablePathName,
+                                  IDS_VERSION_UI_EXECUTABLE_PATH);
+  html_source->AddString(version_ui::kExecutablePath, std::string());
 
-  html_source->AddLocalizedString("profile_path_name",
-                                  IDS_ABOUT_VERSION_PROFILE_PATH);
-  html_source->AddString("profile_path", std::string());
+  html_source->AddLocalizedString(version_ui::kProfilePathName,
+                                  IDS_VERSION_UI_PROFILE_PATH);
+  html_source->AddString(version_ui::kProfilePath, std::string());
 
-  html_source->AddLocalizedString("variations_name",
-                                  IDS_ABOUT_VERSION_VARIATIONS);
+  html_source->AddLocalizedString(version_ui::kVariationsName,
+                                  IDS_VERSION_UI_VARIATIONS);
 
 #if defined(OS_WIN)
 #if defined(__clang__)
@@ -131,9 +144,10 @@
 #endif
 
   html_source->SetJsonPath("strings.js");
-  html_source->AddResourcePath("version.js", IDR_ABOUT_VERSION_JS);
-  html_source->AddResourcePath("about_version.css", IDR_ABOUT_VERSION_CSS);
-  html_source->SetDefaultResource(IDR_ABOUT_VERSION_HTML);
+  html_source->AddResourcePath(version_ui::kVersionJS, IDR_VERSION_UI_JS);
+  html_source->AddResourcePath(version_ui::kAboutVersionCSS,
+                               IDR_VERSION_UI_CSS);
+  html_source->SetDefaultResource(IDR_VERSION_UI_HTML);
   return html_source;
 }
 
diff --git a/chrome/browser/ui/webui/voice_search_ui.cc b/chrome/browser/ui/webui/voice_search_ui.cc
index 80eaa52..90ea550 100644
--- a/chrome/browser/ui/webui/voice_search_ui.cc
+++ b/chrome/browser/ui/webui/voice_search_ui.cc
@@ -42,6 +42,7 @@
 #include "extensions/browser/extension_system.h"
 #include "extensions/common/extension.h"
 #include "grit/browser_resources.h"
+#include "grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "v8/include/v8.h"
 
@@ -247,7 +248,7 @@
     if (os->architecture() == base::win::OSInfo::X64_ARCHITECTURE)
       os_label += " 64 bit";
 #endif
-    AddPair(list, l10n_util::GetStringUTF8(IDS_ABOUT_VERSION_OS), os_label);
+    AddPair(list, l10n_util::GetStringUTF8(IDS_VERSION_UI_OS), os_label);
 
     AddLineBreak(list);
   }
diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi
index ca50abb..d26deb4 100644
--- a/chrome/chrome_browser_ui.gypi
+++ b/chrome/chrome_browser_ui.gypi
@@ -2773,6 +2773,7 @@
         '../components/components.gyp:toolbar',
         '../components/components.gyp:ui_zoom',
         '../components/components.gyp:update_client',
+        '../components/components.gyp:version_ui',
         '../components/components_resources.gyp:components_resources',
         '../components/components_strings.gyp:components_strings',
         '../components/url_formatter/url_formatter.gyp:url_formatter',
diff --git a/chrome/common/component_flash_hint_file_linux.cc b/chrome/common/component_flash_hint_file_linux.cc
index 160c8e8..32d856e 100644
--- a/chrome/common/component_flash_hint_file_linux.cc
+++ b/chrome/common/component_flash_hint_file_linux.cc
@@ -156,8 +156,8 @@
   int error_code;
   std::string error_message;
   JSONStringValueDeserializer deserializer(json_string);
-  const scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_message));
+  const scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_message);
 
   if (!value) {
     LOG(ERROR)
diff --git a/chrome/common/extensions/extension_test_util.cc b/chrome/common/extensions/extension_test_util.cc
index ec223f6..697be60 100644
--- a/chrome/common/extensions/extension_test_util.cc
+++ b/chrome/common/extensions/extension_test_util.cc
@@ -31,7 +31,7 @@
              .AppendASCII(test_file);
 
   JSONFileValueDeserializer deserializer(path);
-  scoped_ptr<base::Value> result(deserializer.Deserialize(NULL, error));
+  scoped_ptr<base::Value> result = deserializer.Deserialize(NULL, error);
   if (!result)
     return NULL;
   const base::DictionaryValue* dict;
diff --git a/chrome/installer/util/uninstall_metrics.cc b/chrome/installer/util/uninstall_metrics.cc
index 11e91dad..606b132d 100644
--- a/chrome/installer/util/uninstall_metrics.cc
+++ b/chrome/installer/util/uninstall_metrics.cc
@@ -78,7 +78,7 @@
   JSONFileValueDeserializer json_deserializer(file_path);
 
   std::string json_error_string;
-  scoped_ptr<base::Value> root(json_deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> root = json_deserializer.Deserialize(NULL, NULL);
   if (!root.get())
     return false;
 
diff --git a/chrome/installer/util/uninstall_metrics_unittest.cc b/chrome/installer/util/uninstall_metrics_unittest.cc
index aa0ff15c..72b891f1 100644
--- a/chrome/installer/util/uninstall_metrics_unittest.cc
+++ b/chrome/installer/util/uninstall_metrics_unittest.cc
@@ -46,8 +46,8 @@
   JSONStringValueDeserializer json_deserializer(pref_string);
   std::string error_message;
 
-  scoped_ptr<base::Value> root(
-      json_deserializer.Deserialize(NULL, &error_message));
+  scoped_ptr<base::Value> root =
+      json_deserializer.Deserialize(NULL, &error_message);
   ASSERT_TRUE(root.get());
   base::string16 uninstall_metrics_string;
 
diff --git a/chrome/test/media_router/media_router_integration_browsertest.cc b/chrome/test/media_router/media_router_integration_browsertest.cc
index 99beb38..3bda7121 100644
--- a/chrome/test/media_router/media_router_integration_browsertest.cc
+++ b/chrome/test/media_router/media_router_integration_browsertest.cc
@@ -158,8 +158,8 @@
   JSONFileValueDeserializer deserializer(full_path);
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_message);
   CHECK(value.get()) << "Deserialize failed: " << error_message;
   std::string test_data_str;
   ASSERT_TRUE(base::JSONWriter::Write(*value, &test_data_str));
diff --git a/chrome/utility/importer/firefox_importer.cc b/chrome/utility/importer/firefox_importer.cc
index b9238d6..f945fb3c 100644
--- a/chrome/utility/importer/firefox_importer.cc
+++ b/chrome/utility/importer/firefox_importer.cc
@@ -541,8 +541,8 @@
   base::FilePath search_metadata_json_file =
       source_path_.AppendASCII("search-metadata.json");
   JSONFileValueDeserializer metadata_deserializer(search_metadata_json_file);
-  scoped_ptr<base::Value> metadata_root(
-      metadata_deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> metadata_root =
+      metadata_deserializer.Deserialize(NULL, NULL);
   const base::DictionaryValue* search_metadata_root = NULL;
   if (metadata_root)
     metadata_root->GetAsDictionary(&search_metadata_root);
@@ -553,7 +553,7 @@
     return;
 
   JSONFileValueDeserializer deserializer(search_json_file);
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL);
   const base::DictionaryValue* search_root = NULL;
   if (!root || !root->GetAsDictionary(&search_root))
     return;
diff --git a/chromecast/base/serializers.cc b/chromecast/base/serializers.cc
index 34bc9fd3..2e6135bb 100644
--- a/chromecast/base/serializers.cc
+++ b/chromecast/base/serializers.cc
@@ -15,8 +15,8 @@
 
   int error_code = -1;
   std::string error_msg;
-  scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_msg));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_msg);
   DLOG_IF(ERROR, !value) << "JSON error " << error_code << ":" << error_msg;
 
   // Value will hold the nullptr in case of an error.
@@ -36,8 +36,8 @@
 
   int error_code = -1;
   std::string error_msg;
-  scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_msg));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_msg);
   DLOG_IF(ERROR, !value) << "JSON error " << error_code << ":" << error_msg;
 
   // Value will hold the nullptr in case of an error.
diff --git a/chromeos/app_mode/kiosk_oem_manifest_parser.cc b/chromeos/app_mode/kiosk_oem_manifest_parser.cc
index f13d1a8..16c072ab 100644
--- a/chromeos/app_mode/kiosk_oem_manifest_parser.cc
+++ b/chromeos/app_mode/kiosk_oem_manifest_parser.cc
@@ -32,8 +32,8 @@
   std::string error_msg;
   scoped_ptr<JSONFileValueDeserializer> deserializer(
      new JSONFileValueDeserializer(kiosk_oem_file));
-  scoped_ptr<base::Value> value(
-      deserializer->Deserialize(&error_code, &error_msg));
+  scoped_ptr<base::Value> value =
+      deserializer->Deserialize(&error_code, &error_msg);
   base::DictionaryValue* dict = NULL;
   if (error_code != JSONFileValueDeserializer::JSON_NO_ERROR ||
       !value.get() ||
diff --git a/chromeos/dbus/fake_easy_unlock_client.cc b/chromeos/dbus/fake_easy_unlock_client.cc
index 77441881..ece1dfe 100644
--- a/chromeos/dbus/fake_easy_unlock_client.cc
+++ b/chromeos/dbus/fake_easy_unlock_client.cc
@@ -21,7 +21,7 @@
 int ExtractKeyPairIndexFromKey(const std::string& key,
                                const std::string& key_type) {
   JSONStringValueDeserializer deserializer(key);
-  scoped_ptr<base::Value> json_value(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> json_value = deserializer.Deserialize(NULL, NULL);
   if (!json_value)
     return -1;
 
diff --git a/chromeos/network/onc/onc_test_utils.cc b/chromeos/network/onc/onc_test_utils.cc
index 522a9ed..7afc0d89 100644
--- a/chromeos/network/onc/onc_test_utils.cc
+++ b/chromeos/network/onc/onc_test_utils.cc
@@ -38,29 +38,30 @@
 
 scoped_ptr<base::DictionaryValue> ReadTestDictionary(
     const std::string& filename) {
-  base::DictionaryValue* dict = NULL;
+  scoped_ptr<base::DictionaryValue> dict;
   base::FilePath path;
   if (!chromeos::test_utils::GetTestDataPath(kNetworkComponentDirectory,
                                              filename,
                                              &path)) {
     NOTREACHED() << "Unable to get test dictionary path for "
                  << kNetworkComponentDirectory << "/" << filename;
-    return make_scoped_ptr(dict);
+    return dict;
   }
 
   JSONFileValueDeserializer deserializer(path);
   deserializer.set_allow_trailing_comma(true);
 
   std::string error_message;
-  base::Value* content = deserializer.Deserialize(NULL, &error_message);
+  scoped_ptr<base::Value> content =
+      deserializer.Deserialize(NULL, &error_message);
   CHECK(content != NULL) << "Couldn't json-deserialize file '"
                          << filename << "': " << error_message;
 
-  CHECK(content->GetAsDictionary(&dict))
-      << "File '" << filename
-      << "' does not contain a dictionary as expected, but type "
-      << content->GetType();
-  return make_scoped_ptr(dict);
+  dict = base::DictionaryValue::From(content.Pass());
+  CHECK(dict) << "File '" << filename
+              << "' does not contain a dictionary as expected, but type "
+              << content->GetType();
+  return dict;
 }
 
 ::testing::AssertionResult Equals(const base::Value* expected,
diff --git a/chromeos/network/onc/onc_utils_unittest.cc b/chromeos/network/onc/onc_utils_unittest.cc
index 6370a685..30053f1 100644
--- a/chromeos/network/onc/onc_utils_unittest.cc
+++ b/chromeos/network/onc/onc_utils_unittest.cc
@@ -21,11 +21,11 @@
 namespace {
 
 scoped_ptr<base::Value> ReadTestJson(const std::string& filename) {
-  base::Value* result = nullptr;
   base::FilePath path;
+  scoped_ptr<base::Value> result;
   if (!test_utils::GetTestDataPath("network", filename, &path)) {
     NOTREACHED() << "Unable to get test file path for: " << filename;
-    return make_scoped_ptr(result);
+    return result;
   }
   JSONFileValueDeserializer deserializer(path);
   deserializer.set_allow_trailing_comma(true);
@@ -33,7 +33,7 @@
   result = deserializer.Deserialize(nullptr, &error_message);
   CHECK(result != nullptr) << "Couldn't json-deserialize file: " << filename
                            << ": " << error_message;
-  return make_scoped_ptr(result);
+  return result;
 }
 
 }  // namespace
diff --git a/chromeos/system/statistics_provider.cc b/chromeos/system/statistics_provider.cc
index 834f0b6a..6f86dfb 100644
--- a/chromeos/system/statistics_provider.cc
+++ b/chromeos/system/statistics_provider.cc
@@ -503,8 +503,8 @@
   JSONFileValueDeserializer regions_file(filename);
   int regions_error_code = 0;
   std::string regions_error_message;
-  regional_data_.reset(
-      regions_file.Deserialize(&regions_error_code, &regions_error_message));
+  regional_data_ =
+      regions_file.Deserialize(&regions_error_code, &regions_error_message);
   if (!regional_data_.get()) {
     if (base::SysInfo::IsRunningOnChromeOS())
       LOG(ERROR) << "Failed to load regions file '" << filename.value()
diff --git a/chromeos/tools/onc_validator/onc_validator.cc b/chromeos/tools/onc_validator/onc_validator.cc
index 14ed8919..a4ec9bd 100644
--- a/chromeos/tools/onc_validator/onc_validator.cc
+++ b/chromeos/tools/onc_validator/onc_validator.cc
@@ -14,6 +14,9 @@
 #include "chromeos/network/onc/onc_signature.h"
 #include "chromeos/network/onc/onc_validator.h"
 
+// TODO Check why this file do not fail on default trybots
+// http://crbug.com/543919
+
 // Command line switches.
 const char kSwitchErrorOnUnknownField[] = "error-on-unknown-field";
 const char kSwitchErrorOnWrongRecommended[] = "error-on-wrong-recommended";
@@ -90,7 +93,8 @@
   base::DictionaryValue* dict = NULL;
 
   std::string json_error;
-  base::Value* value = deserializer.Deserialize(NULL, &json_error);
+  base::Value* value = deserializer.Deserialize(NULL, &json_error).release();
+  // TODO(Olli Raula) possible memory leak http://crbug.com/543015
   if (!value) {
     LOG(ERROR) << "Couldn't json-deserialize file '" << filename
                << "': " << json_error;
diff --git a/components/OWNERS b/components/OWNERS
index 015b7c3e..aef41a7 100644
--- a/components/OWNERS
+++ b/components/OWNERS
@@ -322,6 +322,14 @@
 per-file variations.gypi=jwd@chromium.org
 per-file variations.gypi=stevet@chromium.org
 
+per-file version_ui.gypi=bauerb@chromium.org
+per-file version_ui.gypi=dbeam@chromium.org
+per-file version_ui.gypi=estade@chromium.org
+per-file version_ui.gypi=jhawkins@chromium.org
+per-file version_ui.gypi=nkostylev@chromium.org
+per-file version_ui.gypi=pam@chromium.org
+per-file version_ui.gypi=xiyuan@chromium.org
+
 per-file webdata.gypi=pkasting@chromium.org
 per-file webdata_services.gypi=pkasting@chromium.org
 
diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmarks/browser/bookmark_codec.cc
index 52f1a94..4d997d6 100644
--- a/components/bookmarks/browser/bookmark_codec.cc
+++ b/components/bookmarks/browser/bookmark_codec.cc
@@ -387,7 +387,7 @@
     std::string meta_info_str;
     meta_info->GetAsString(&meta_info_str);
     JSONStringValueDeserializer deserializer(meta_info_str);
-    deserialized_holder.reset(deserializer.Deserialize(nullptr, nullptr));
+    deserialized_holder = deserializer.Deserialize(nullptr, nullptr);
     if (!deserialized_holder)
       return false;
     meta_info = deserialized_holder.get();
diff --git a/components/bookmarks/browser/bookmark_codec_unittest.cc b/components/bookmarks/browser/bookmark_codec_unittest.cc
index 8c45aea8..80944642 100644
--- a/components/bookmarks/browser/bookmark_codec_unittest.cc
+++ b/components/bookmarks/browser/bookmark_codec_unittest.cc
@@ -360,7 +360,7 @@
   ASSERT_TRUE(base::PathExists(test_file));
 
   JSONFileValueDeserializer deserializer(test_file);
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL);
 
   scoped_ptr<BookmarkModel> decoded_model(client_.CreateModel());
   BookmarkCodec decoder;
@@ -446,7 +446,7 @@
   ASSERT_TRUE(base::PathExists(test_file));
 
   JSONFileValueDeserializer deserializer(test_file);
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL);
 
   scoped_ptr<BookmarkModel> model(client_.CreateModel());
   BookmarkCodec decoder;
diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc
index da721b1..6f11d06 100644
--- a/components/bookmarks/browser/bookmark_storage.cc
+++ b/components/bookmarks/browser/bookmark_storage.cc
@@ -56,7 +56,7 @@
   bool bookmark_file_exists = base::PathExists(path);
   if (bookmark_file_exists) {
     JSONFileValueDeserializer deserializer(path);
-    scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
+    scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL);
 
     if (root.get()) {
       // Building the index can take a while, so we do it on the background
diff --git a/components/components.gyp b/components/components.gyp
index 39e829f7..dce35ae8 100644
--- a/components/components.gyp
+++ b/components/components.gyp
@@ -93,6 +93,7 @@
     'user_prefs.gypi',
     'variations.gypi',
     'version_info.gypi',
+    'version_ui.gypi',
     'wallpaper.gypi',
     'web_resource.gypi',
     'webdata.gypi',
diff --git a/components/components_chromium_strings.grd b/components/components_chromium_strings.grd
index 38abf5d6..b78ef6f 100644
--- a/components/components_chromium_strings.grd
+++ b/components/components_chromium_strings.grd
@@ -170,6 +170,11 @@
       <message name="IDS_CRASH_DISABLED_MESSAGE" desc="The explanatory message for chrome://crashes when crash reporting is disabled">
         Crash reporting is not available in Chromium.
       </message>
+
+      <!-- Version UI -->
+      <message name="IDS_VERSION_UI_LICENSE" desc="The label below the copyright message, containing the URLs.">
+        Chromium is made possible by the <ph name="BEGIN_LINK_CHROMIUM">&lt;a target="_blank" href="$1"&gt;</ph>Chromium<ph name="END_LINK_CHROMIUM">&lt;/a&gt;</ph> open source project and other <ph name="BEGIN_LINK_OSS">&lt;a target="_blank" href="$2"&gt;</ph>open source software<ph name="END_LINK_OSS">&lt;/a&gt;</ph>.
+      </message>
     </messages>
   </release>
 </grit>
diff --git a/components/components_google_chrome_strings.grd b/components/components_google_chrome_strings.grd
index 2c1b3221..a218248 100644
--- a/components/components_google_chrome_strings.grd
+++ b/components/components_google_chrome_strings.grd
@@ -171,6 +171,10 @@
         This page only shows information on your recent crashes if you <ph name="BEGIN_LINK">&lt;a href="https://support.google.com/chrome/answer/96817"&gt;</ph>enable crash reporting<ph name="END_LINK">&lt;/a&gt;</ph>.
       </message>
 
+      <!-- Version UI -->
+      <message name="IDS_VERSION_UI_LICENSE" desc="The label below the copyright message, containing the URLs.">
+        Google Chrome is made possible by the <ph name="BEGIN_LINK_CHROMIUM">&lt;a target="_blank" href="$1"&gt;</ph>Chromium<ph name="END_LINK_CHROMIUM">&lt;/a&gt;</ph> open source project and other <ph name="BEGIN_LINK_OSS">&lt;a target="_blank" href="$2"&gt;</ph>open source software<ph name="END_LINK_OSS">&lt;/a&gt;</ph>.
+      </message>
     </messages>
   </release>
 </grit>
diff --git a/components/components_strings.grd b/components/components_strings.grd
index 990a358..a91c21db8 100644
--- a/components/components_strings.grd
+++ b/components/components_strings.grd
@@ -148,7 +148,7 @@
       <part file="ssl_errors_strings.grdp" />
       <part file="translate_strings.grdp" />
       <part file="undo_strings.grdp" />
-      <part file="version_info.grdp" />
+      <part file="version_ui_strings.grdp" />
 
       <!-- Generic terms -->
       <message name="IDS_LEARN_MORE" desc="Learn more text">
diff --git a/components/components_tests.gyp b/components/components_tests.gyp
index 4bfe456b..f37f582 100644
--- a/components/components_tests.gyp
+++ b/components/components_tests.gyp
@@ -680,6 +680,7 @@
     ],
     'tracing_unittest_sources': [
       'tracing/trace_config_file_unittest.cc',
+      'tracing/graphics_memory_dump_provider_android_unittest.cc',
     ],
     'translate_unittest_sources': [
       'translate/core/browser/language_state_unittest.cc',
@@ -1082,6 +1083,7 @@
             '<@(safe_json_unittest_sources)',
             '<@(scheduler_unittest_sources)',
             '<@(storage_monitor_unittest_sources)',
+            '<@(tracing_unittest_sources)',
             '<@(ui_unittest_sources)',
             '<@(visitedlink_unittest_sources)',
             '<@(web_cache_unittest_sources)',
@@ -1130,6 +1132,7 @@
             'components.gyp:web_modal_test_support',
             'scheduler/scheduler.gyp:scheduler',
             'test_runner/test_runner.gyp:test_runner',
+            'tracing.gyp:tracing',
             'webcrypto/webcrypto.gyp:webcrypto',
             '../third_party/re2/re2.gyp:re2',
           ],
@@ -1276,7 +1279,6 @@
             '<@(copresence_unittest_sources)',
             '<@(feedback_unittest_sources)',
             '<@(proximity_auth_unittest_sources)',
-            '<@(tracing_unittest_sources)',
             '<@(webusb_detector_unittest_sources)',
           ],
           'sources!': [
@@ -1302,7 +1304,6 @@
             'components.gyp:proximity_auth',
             'components.gyp:proximity_auth_test_support',
             'components.gyp:webusb',
-            'tracing.gyp:tracing',
           ],
         }],
         ['chromeos==1', {
@@ -1375,6 +1376,7 @@
             ['OS=="android"', {
               'sources/': [
                 ['exclude', '^policy/core/common/async_policy_provider_unittest\\.cc'],
+                ['exclude', '^tracing/trace_config_file_unittest\\.cc'],
               ],
             }],
             ['OS=="android" or OS=="ios"', {
diff --git a/components/html_viewer/BUILD.gn b/components/html_viewer/BUILD.gn
index 9288830..02a3243 100644
--- a/components/html_viewer/BUILD.gn
+++ b/components/html_viewer/BUILD.gn
@@ -215,7 +215,7 @@
 
   data_deps = [
     "//components/clipboard",
-    "//components/mus/vm:lib",
+    "//components/mus/ws:lib",
     "//mojo/services/network:network",
     "//mojo/services/tracing",
   ]
diff --git a/components/html_viewer/document_resource_waiter.cc b/components/html_viewer/document_resource_waiter.cc
index bc6731d73..10f7df9 100644
--- a/components/html_viewer/document_resource_waiter.cc
+++ b/components/html_viewer/document_resource_waiter.cc
@@ -88,12 +88,12 @@
   }
 
   // The first portion of ready is when we have received OnConnect()
-  // (|frame_data_| is valid) and we have a view with valid metrics. The view
-  // is not necessary is ViewConnectType is USE_EXISTING, which means the
+  // (|frame_data_| is valid) and we have a window with valid metrics. The
+  // window is not necessary is ViewConnectType is USE_EXISTING, which means the
   // application is not asked for a ViewTreeClient. The metrics are necessary
-  // to initialize ResourceBundle. If USE_EXISTING is true, it means a View has
-  // already been provided to another HTMLDocument and there is no need to wait
-  // for metrics.
+  // to initialize ResourceBundle. If USE_EXISTING is true, it means a Window
+  // has already been provided to another HTMLDocument and there is no need to
+  // wait for metrics.
   bool is_ready =
       (!frame_data_.is_null() &&
        ((view_connect_type_ ==
@@ -102,9 +102,9 @@
   if (is_ready) {
     HTMLFrameTreeManager* frame_tree =
         HTMLFrameTreeManager::FindFrameTreeWithRoot(frame_data_[0]->frame_id);
-    // Once we've received OnConnect() and the view (if necessary), we determine
-    // which HTMLFrameTreeManager the new frame ends up in. If there is an
-    // existing HTMLFrameTreeManager then we must wait for the change_id
+    // Once we've received OnConnect() and the window (if necessary), we
+    // determine which HTMLFrameTreeManager the new frame ends up in. If there
+    // is an existing HTMLFrameTreeManager then we must wait for the change_id
     // supplied to OnConnect() to be <= that of the HTMLFrameTreeManager's
     // change_id. If we did not wait for the change id to be <= then the
     // structure of the tree is not in the expected state and it's possible the
diff --git a/components/html_viewer/html_document.cc b/components/html_viewer/html_document.cc
index adf7cbf6..78f8b22 100644
--- a/components/html_viewer/html_document.cc
+++ b/components/html_viewer/html_document.cc
@@ -21,7 +21,7 @@
 #include "components/html_viewer/web_url_loader_impl.h"
 #include "components/mus/public/cpp/window.h"
 #include "components/mus/public/cpp/window_tree_connection.h"
-#include "components/mus/vm/ids.h"
+#include "components/mus/ws/ids.h"
 #include "mojo/application/public/cpp/application_impl.h"
 #include "mojo/application/public/cpp/connect.h"
 #include "mojo/application/public/interfaces/shell.mojom.h"
@@ -149,12 +149,12 @@
 void HTMLDocument::Load() {
   DCHECK(resource_waiter_ && resource_waiter_->is_ready());
 
-  // Note: |view| is null if we're taking over for an existing frame.
-  mus::Window* view = resource_waiter_->root();
-  if (view) {
+  // Note: |window| is null if we're taking over for an existing frame.
+  mus::Window* window = resource_waiter_->root();
+  if (window) {
     global_state_->InitIfNecessary(
-        view->viewport_metrics().size_in_pixels.To<gfx::Size>(),
-        view->viewport_metrics().device_pixel_ratio);
+        window->viewport_metrics().size_in_pixels.To<gfx::Size>(),
+        window->viewport_metrics().device_pixel_ratio);
   }
 
   scoped_ptr<WebURLRequestExtraData> extra_data(new WebURLRequestExtraData);
@@ -164,7 +164,7 @@
   base::TimeTicks navigation_start_time =
       resource_waiter_->navigation_start_time();
   frame_ = HTMLFrameTreeManager::CreateFrameAndAttachToTree(
-      global_state_, view, resource_waiter_.Pass(), this);
+      global_state_, window, resource_waiter_.Pass(), this);
 
   // If the frame wasn't created we can destroy ourself.
   if (!frame_) {
@@ -246,7 +246,7 @@
   DCHECK(!transferable_state_.root);
   if (!old_delegate) {
     // We're taking over a child of a local root that isn't associated with a
-    // delegate. In this case the frame's view is not the root of the
+    // delegate. In this case the frame's window is not the root of the
     // WindowTreeConnection.
     transferable_state_.owns_window_tree_connection = false;
     transferable_state_.root = frame->window();
diff --git a/components/html_viewer/html_document.h b/components/html_viewer/html_document.h
index 2b82384e..2172fb7 100644
--- a/components/html_viewer/html_document.h
+++ b/components/html_viewer/html_document.h
@@ -43,10 +43,10 @@
 class WindowTreeDelegateImpl;
 class WebLayerTreeViewImpl;
 
-// A view for a single HTML document.
+// A window for a single HTML document.
 //
 // HTMLDocument is deleted in one of two ways:
-// . When the View the HTMLDocument is embedded in is destroyed.
+// . When the Window the HTMLDocument is embedded in is destroyed.
 // . Explicitly by way of Destroy().
 class HTMLDocument
     : public mus::WindowTreeDelegate,
diff --git a/components/html_viewer/html_frame.cc b/components/html_viewer/html_frame.cc
index c1b084d8..37f9bce 100644
--- a/components/html_viewer/html_frame.cc
+++ b/components/html_viewer/html_frame.cc
@@ -37,7 +37,7 @@
 #include "components/mus/public/cpp/scoped_window_ptr.h"
 #include "components/mus/public/cpp/window.h"
 #include "components/mus/public/cpp/window_tree_connection.h"
-#include "components/mus/vm/ids.h"
+#include "components/mus/ws/ids.h"
 #include "mojo/application/public/cpp/application_impl.h"
 #include "mojo/application/public/cpp/connect.h"
 #include "mojo/application/public/interfaces/shell.mojom.h"
@@ -323,10 +323,10 @@
     blink::WebSandboxFlags sandbox_flags) {
   DCHECK(IsLocal());  // Can't create children of remote frames.
   DCHECK_EQ(parent, web_frame_);
-  DCHECK(window_);  // If we're local we have to have a view.
-  // Create the view that will house the frame now. We embed once we know the
+  DCHECK(window_);  // If we're local we have to have a window.
+  // Create the window that will house the frame now. We embed once we know the
   // url (see decidePolicyForNavigation()).
-  mus::Window* child_view = window_->connection()->CreateWindow();
+  mus::Window* child_window = window_->connection()->CreateWindow();
   ReplicatedFrameState child_state;
   child_state.name = frame_name;
   child_state.tree_scope = scope;
@@ -335,23 +335,23 @@
   client_properties.mark_non_null();
   ClientPropertiesFromReplicatedFrameState(child_state, &client_properties);
 
-  child_view->SetVisible(true);
-  window_->AddChild(child_view);
+  child_window->SetVisible(true);
+  window_->AddChild(child_window);
 
-  HTMLFrame::CreateParams params(frame_tree_manager_, this, child_view->id(),
-                                 child_view, client_properties, nullptr);
+  HTMLFrame::CreateParams params(frame_tree_manager_, this, child_window->id(),
+                                 child_window, client_properties, nullptr);
   params.is_local_create_child = true;
   HTMLFrame* child_frame = GetFirstAncestorWithDelegate()
                                ->delegate_->GetHTMLFactory()
                                ->CreateHTMLFrame(&params);
-  child_frame->owned_window_.reset(new mus::ScopedWindowPtr(child_view));
+  child_frame->owned_window_.reset(new mus::ScopedWindowPtr(child_window));
 
   web_view::mojom::FrameClientPtr client_ptr;
   child_frame->frame_client_binding_.reset(
       new mojo::Binding<web_view::mojom::FrameClient>(
           child_frame, mojo::GetProxy(&client_ptr)));
   server_->OnCreatedFrame(GetProxy(&(child_frame->server_)), client_ptr.Pass(),
-                          child_view->id(), client_properties.Pass());
+                          child_window->id(), client_properties.Pass());
   return child_frame->web_frame_;
 }
 
@@ -1011,7 +1011,7 @@
 }
 
 void HTMLFrame::frameRectsChanged(const blink::WebRect& frame_rect) {
-  // Only the owner of view can update its size.
+  // Only the owner of window can update its size.
   if (!owned_window_)
     return;
 
diff --git a/components/html_viewer/html_frame.h b/components/html_viewer/html_frame.h
index e444f67..bc813f7 100644
--- a/components/html_viewer/html_frame.h
+++ b/components/html_viewer/html_frame.h
@@ -55,7 +55,7 @@
 // Frame is used to represent a single frame in the frame tree of a page. The
 // frame is either local or remote. Each Frame is associated with a single
 // HTMLFrameTreeManager and can not be moved to another HTMLFrameTreeManager.
-// Local frames have a mus::View, remote frames do not.
+// Local frames have a mus::Window, remote frames do not.
 //
 // HTMLFrame serves as the FrameClient. It implements it by forwarding the
 // calls to HTMLFrameTreeManager so that HTMLFrameTreeManager can update the
@@ -131,7 +131,7 @@
   blink::WebView* web_view();
   blink::WebWidget* GetWebWidget();
 
-  // The mus::View this frame renders to. This is non-null for the local frame
+  // The mus::Window this frame renders to. This is non-null for the local frame
   // the frame tree was created with as well as non-null for any frames created
   // locally.
   mus::Window* window() { return window_; }
@@ -322,11 +322,11 @@
 
   HTMLFrameTreeManager* frame_tree_manager_;
   HTMLFrame* parent_;
-  // |view_| is non-null for local frames or remote frames that were once
+  // |window_| is non-null for local frames or remote frames that were once
   // local.
   mus::Window* window_;
-  // The id for this frame. If there is a view, this is the same id as the
-  // view has.
+  // The id for this frame. If there is a window, this is the same id as the
+  // window has.
   const uint32_t id_;
   std::vector<HTMLFrame*> children_;
   blink::WebFrame* web_frame_;
@@ -344,14 +344,14 @@
   ReplicatedFrameState state_;
 
   // If this frame is the result of creating a local frame
-  // (createChildFrame()), then |owned_window_| is the View initially created
+  // (createChildFrame()), then |owned_window_| is the Window initially created
   // for the frame. While the frame is local |owned_window_| is the same as
-  // |view_|. If this frame becomes remote |view_| is set to null and
-  // |owned_window_| remains as the View initially created for the frame.
+  // |window_|. If this frame becomes remote |window_| is set to null and
+  // |owned_window_| remains as the Window initially created for the frame.
   //
-  // This is done to ensure the View isn't prematurely deleted (it must exist
-  // as long as the frame is valid). If the View was deleted as soon as the
-  // frame was swapped to remote then the process rendering to the view would
+  // This is done to ensure the Window isn't prematurely deleted (it must exist
+  // as long as the frame is valid). If the Window was deleted as soon as the
+  // frame was swapped to remote then the process rendering to the window would
   // be severed.
   scoped_ptr<mus::ScopedWindowPtr> owned_window_;
 
diff --git a/components/html_viewer/html_frame_tree_manager.cc b/components/html_viewer/html_frame_tree_manager.cc
index e56a9a29..58bc1dbe 100644
--- a/components/html_viewer/html_frame_tree_manager.cc
+++ b/components/html_viewer/html_frame_tree_manager.cc
@@ -101,7 +101,7 @@
            << " frame_id=" << window_id;
   if (view_connect_type == web_view::mojom::VIEW_CONNECT_TYPE_USE_EXISTING &&
       !frame_tree) {
-    DVLOG(1) << "was told to use existing view but do not have frame tree";
+    DVLOG(1) << "was told to use existing window but do not have frame tree";
     return nullptr;
   }
 
@@ -113,11 +113,11 @@
              web_view::mojom::VIEW_CONNECT_TYPE_USE_EXISTING) {
     HTMLFrame* existing_frame = frame_tree->root_->FindFrame(window_id);
     if (!existing_frame) {
-      DVLOG(1) << "was told to use existing view but could not find view";
+      DVLOG(1) << "was told to use existing window but could not find window";
       return nullptr;
     }
     if (!existing_frame->IsLocal()) {
-      DVLOG(1) << "was told to use existing view, but frame is remote";
+      DVLOG(1) << "was told to use existing window, but frame is remote";
       return nullptr;
     }
     existing_frame->SwapDelegate(delegate);
diff --git a/components/json_schema/json_schema_validator_unittest_base.cc b/components/json_schema/json_schema_validator_unittest_base.cc
index 38f111c..7aae2816 100644
--- a/components/json_schema/json_schema_validator_unittest_base.cc
+++ b/components/json_schema/json_schema_validator_unittest_base.cc
@@ -37,7 +37,8 @@
 
   std::string error_message;
   JSONFileValueDeserializer deserializer(path);
-  base::Value* result = deserializer.Deserialize(NULL, &error_message);
+  base::Value* result =
+      deserializer.Deserialize(NULL, &error_message).release();
   if (!result)
     ADD_FAILURE() << "Could not parse JSON: " << error_message;
   return result;
diff --git a/components/mus/BUILD.gn b/components/mus/BUILD.gn
index ec34ba81..3ebc201 100644
--- a/components/mus/BUILD.gn
+++ b/components/mus/BUILD.gn
@@ -52,7 +52,7 @@
     "//components/mus/public/cpp:common",
     "//components/mus/public/interfaces",
     "//components/mus/surfaces",
-    "//components/mus/vm:lib",
+    "//components/mus/ws:lib",
     "//mojo/application/public/cpp",
     "//mojo/common:common_base",
     "//mojo/common:tracing_impl",
diff --git a/components/mus/gles2/BUILD.gn b/components/mus/gles2/BUILD.gn
index be5e03c..9c0929f7 100644
--- a/components/mus/gles2/BUILD.gn
+++ b/components/mus/gles2/BUILD.gn
@@ -5,7 +5,7 @@
 source_set("gles2") {
   visibility = [
     "//components/mus:*",
-    "//components/mus/vm:*",
+    "//components/mus/ws:*",
     "//components/mus/surfaces:*",
     "//mojo/runner:lib",  # For android
   ]
diff --git a/components/mus/mus_app.cc b/components/mus/mus_app.cc
index 3cb357a..335dbca 100644
--- a/components/mus/mus_app.cc
+++ b/components/mus/mus_app.cc
@@ -8,11 +8,11 @@
 #include "components/mus/gles2/gpu_impl.h"
 #include "components/mus/public/cpp/args.h"
 #include "components/mus/surfaces/surfaces_scheduler.h"
-#include "components/mus/vm/client_connection.h"
-#include "components/mus/vm/connection_manager.h"
-#include "components/mus/vm/view_tree_host_connection.h"
-#include "components/mus/vm/view_tree_host_impl.h"
-#include "components/mus/vm/view_tree_impl.h"
+#include "components/mus/ws/client_connection.h"
+#include "components/mus/ws/connection_manager.h"
+#include "components/mus/ws/view_tree_host_connection.h"
+#include "components/mus/ws/view_tree_host_impl.h"
+#include "components/mus/ws/view_tree_impl.h"
 #include "mojo/application/public/cpp/application_connection.h"
 #include "mojo/application/public/cpp/application_impl.h"
 #include "mojo/application/public/cpp/application_runner.h"
diff --git a/components/mus/mus_app.h b/components/mus/mus_app.h
index c46ab0cb..9ffd4375 100644
--- a/components/mus/mus_app.h
+++ b/components/mus/mus_app.h
@@ -11,7 +11,7 @@
 #include "components/mus/public/interfaces/gpu.mojom.h"
 #include "components/mus/public/interfaces/view_tree.mojom.h"
 #include "components/mus/public/interfaces/view_tree_host.mojom.h"
-#include "components/mus/vm/connection_manager_delegate.h"
+#include "components/mus/ws/connection_manager_delegate.h"
 #include "mojo/application/public/cpp/app_lifetime_helper.h"
 #include "mojo/application/public/cpp/application_delegate.h"
 #include "mojo/application/public/cpp/interface_factory.h"
diff --git a/components/mus/vm/BUILD.gn b/components/mus/ws/BUILD.gn
similarity index 100%
rename from components/mus/vm/BUILD.gn
rename to components/mus/ws/BUILD.gn
diff --git a/components/mus/vm/access_policy.h b/components/mus/ws/access_policy.h
similarity index 93%
rename from components/mus/vm/access_policy.h
rename to components/mus/ws/access_policy.h
index f2862b4..bcaefdd 100644
--- a/components/mus/vm/access_policy.h
+++ b/components/mus/ws/access_policy.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_ACCESS_POLICY_H_
-#define COMPONENTS_MUS_VM_ACCESS_POLICY_H_
+#ifndef COMPONENTS_MUS_WS_ACCESS_POLICY_H_
+#define COMPONENTS_MUS_WS_ACCESS_POLICY_H_
 
 #include "components/mus/public/interfaces/mus_constants.mojom.h"
-#include "components/mus/vm/ids.h"
+#include "components/mus/ws/ids.h"
 
 namespace mus {
 
@@ -56,4 +56,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_ACCESS_POLICY_H_
+#endif  // COMPONENTS_MUS_WS_ACCESS_POLICY_H_
diff --git a/components/mus/vm/access_policy_delegate.h b/components/mus/ws/access_policy_delegate.h
similarity index 84%
rename from components/mus/vm/access_policy_delegate.h
rename to components/mus/ws/access_policy_delegate.h
index 60f5e93..ff99a86 100644
--- a/components/mus/vm/access_policy_delegate.h
+++ b/components/mus/ws/access_policy_delegate.h
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_ACCESS_POLICY_DELEGATE_H_
-#define COMPONENTS_MUS_VM_ACCESS_POLICY_DELEGATE_H_
+#ifndef COMPONENTS_MUS_WS_ACCESS_POLICY_DELEGATE_H_
+#define COMPONENTS_MUS_WS_ACCESS_POLICY_DELEGATE_H_
 
 #include <vector>
 
 #include "base/containers/hash_tables.h"
-#include "components/mus/vm/ids.h"
+#include "components/mus/ws/ids.h"
 
 namespace mus {
 
@@ -37,4 +37,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_ACCESS_POLICY_DELEGATE_H_
+#endif  // COMPONENTS_MUS_WS_ACCESS_POLICY_DELEGATE_H_
diff --git a/components/mus/vm/client_connection.cc b/components/mus/ws/client_connection.cc
similarity index 87%
rename from components/mus/vm/client_connection.cc
rename to components/mus/ws/client_connection.cc
index 48c8a63b..06fa39a2 100644
--- a/components/mus/vm/client_connection.cc
+++ b/components/mus/ws/client_connection.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/client_connection.h"
+#include "components/mus/ws/client_connection.h"
 
-#include "components/mus/vm/connection_manager.h"
-#include "components/mus/vm/view_tree_impl.h"
+#include "components/mus/ws/connection_manager.h"
+#include "components/mus/ws/view_tree_impl.h"
 
 namespace mus {
 
diff --git a/components/mus/vm/client_connection.h b/components/mus/ws/client_connection.h
similarity index 91%
rename from components/mus/vm/client_connection.h
rename to components/mus/ws/client_connection.h
index ecae3a94..a4550793 100644
--- a/components/mus/vm/client_connection.h
+++ b/components/mus/ws/client_connection.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_CLIENT_CONNECTION_H_
-#define COMPONENTS_MUS_VM_CLIENT_CONNECTION_H_
+#ifndef COMPONENTS_MUS_WS_CLIENT_CONNECTION_H_
+#define COMPONENTS_MUS_WS_CLIENT_CONNECTION_H_
 
 #include "base/memory/scoped_ptr.h"
 #include "components/mus/public/interfaces/view_tree.mojom.h"
@@ -54,4 +54,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_CLIENT_CONNECTION_H_
+#endif  // COMPONENTS_MUS_WS_CLIENT_CONNECTION_H_
diff --git a/components/mus/vm/connection_manager.cc b/components/mus/ws/connection_manager.cc
similarity index 97%
rename from components/mus/vm/connection_manager.cc
rename to components/mus/ws/connection_manager.cc
index 79adc98..51ccdb1 100644
--- a/components/mus/vm/connection_manager.cc
+++ b/components/mus/ws/connection_manager.cc
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/connection_manager.h"
+#include "components/mus/ws/connection_manager.h"
 
 #include "base/logging.h"
 #include "base/stl_util.h"
-#include "components/mus/vm/client_connection.h"
-#include "components/mus/vm/connection_manager_delegate.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/view_coordinate_conversions.h"
-#include "components/mus/vm/view_tree_host_connection.h"
-#include "components/mus/vm/view_tree_impl.h"
+#include "components/mus/ws/client_connection.h"
+#include "components/mus/ws/connection_manager_delegate.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/view_coordinate_conversions.h"
+#include "components/mus/ws/view_tree_host_connection.h"
+#include "components/mus/ws/view_tree_impl.h"
 #include "mojo/application/public/cpp/application_connection.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
 #include "mojo/converters/input_events/input_events_type_converters.h"
diff --git a/components/mus/vm/connection_manager.h b/components/mus/ws/connection_manager.h
similarity index 95%
rename from components/mus/vm/connection_manager.h
rename to components/mus/ws/connection_manager.h
index bfbbd23b..d3f0b0a 100644
--- a/components/mus/vm/connection_manager.h
+++ b/components/mus/ws/connection_manager.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_CONNECTION_MANAGER_H_
-#define COMPONENTS_MUS_VM_CONNECTION_MANAGER_H_
+#ifndef COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_
+#define COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_
 
 #include <map>
 #include <set>
@@ -14,11 +14,11 @@
 #include "components/mus/public/interfaces/view_tree.mojom.h"
 #include "components/mus/public/interfaces/view_tree_host.mojom.h"
 #include "components/mus/surfaces/surfaces_state.h"
-#include "components/mus/vm/focus_controller_delegate.h"
-#include "components/mus/vm/ids.h"
-#include "components/mus/vm/server_view_delegate.h"
-#include "components/mus/vm/server_view_observer.h"
-#include "components/mus/vm/view_tree_host_impl.h"
+#include "components/mus/ws/focus_controller_delegate.h"
+#include "components/mus/ws/ids.h"
+#include "components/mus/ws/server_view_delegate.h"
+#include "components/mus/ws/server_view_observer.h"
+#include "components/mus/ws/view_tree_host_impl.h"
 #include "mojo/converters/surfaces/custom_surface_converter.h"
 #include "third_party/mojo/src/mojo/public/cpp/bindings/array.h"
 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
@@ -249,4 +249,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_CONNECTION_MANAGER_H_
+#endif  // COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_
diff --git a/components/mus/vm/connection_manager_delegate.h b/components/mus/ws/connection_manager_delegate.h
similarity index 88%
rename from components/mus/vm/connection_manager_delegate.h
rename to components/mus/ws/connection_manager_delegate.h
index a96071b..d72f363 100644
--- a/components/mus/vm/connection_manager_delegate.h
+++ b/components/mus/ws/connection_manager_delegate.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_CONNECTION_MANAGER_DELEGATE_H_
-#define COMPONENTS_MUS_VM_CONNECTION_MANAGER_DELEGATE_H_
+#ifndef COMPONENTS_MUS_WS_CONNECTION_MANAGER_DELEGATE_H_
+#define COMPONENTS_MUS_WS_CONNECTION_MANAGER_DELEGATE_H_
 
 #include <string>
 
@@ -45,4 +45,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_CONNECTION_MANAGER_DELEGATE_H_
+#endif  // COMPONENTS_MUS_WS_CONNECTION_MANAGER_DELEGATE_H_
diff --git a/components/mus/vm/default_access_policy.cc b/components/mus/ws/default_access_policy.cc
similarity index 96%
rename from components/mus/vm/default_access_policy.cc
rename to components/mus/ws/default_access_policy.cc
index f2a049a..8bf8eb3 100644
--- a/components/mus/vm/default_access_policy.cc
+++ b/components/mus/ws/default_access_policy.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/default_access_policy.h"
+#include "components/mus/ws/default_access_policy.h"
 
-#include "components/mus/vm/access_policy_delegate.h"
-#include "components/mus/vm/server_view.h"
+#include "components/mus/ws/access_policy_delegate.h"
+#include "components/mus/ws/server_view.h"
 
 namespace mus {
 
diff --git a/components/mus/vm/default_access_policy.h b/components/mus/ws/default_access_policy.h
similarity index 91%
rename from components/mus/vm/default_access_policy.h
rename to components/mus/ws/default_access_policy.h
index 6bda02e..a05a22e 100644
--- a/components/mus/vm/default_access_policy.h
+++ b/components/mus/ws/default_access_policy.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_DEFAULT_ACCESS_POLICY_H_
-#define COMPONENTS_MUS_VM_DEFAULT_ACCESS_POLICY_H_
+#ifndef COMPONENTS_MUS_WS_DEFAULT_ACCESS_POLICY_H_
+#define COMPONENTS_MUS_WS_DEFAULT_ACCESS_POLICY_H_
 
 #include "base/basictypes.h"
-#include "components/mus/vm/access_policy.h"
+#include "components/mus/ws/access_policy.h"
 
 namespace mus {
 
@@ -54,4 +54,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_DEFAULT_ACCESS_POLICY_H_
+#endif  // COMPONENTS_MUS_WS_DEFAULT_ACCESS_POLICY_H_
diff --git a/components/mus/vm/display_manager.cc b/components/mus/ws/display_manager.cc
similarity index 98%
rename from components/mus/vm/display_manager.cc
rename to components/mus/ws/display_manager.cc
index 3ff9fb2..3f7eebf 100644
--- a/components/mus/vm/display_manager.cc
+++ b/components/mus/ws/display_manager.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/display_manager.h"
+#include "components/mus/ws/display_manager.h"
 
 #include "base/numerics/safe_conversions.h"
 #include "cc/output/compositor_frame.h"
@@ -14,9 +14,9 @@
 #include "components/mus/public/interfaces/gpu.mojom.h"
 #include "components/mus/public/interfaces/quads.mojom.h"
 #include "components/mus/surfaces/surfaces_state.h"
-#include "components/mus/vm/display_manager_factory.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/view_coordinate_conversions.h"
+#include "components/mus/ws/display_manager_factory.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/view_coordinate_conversions.h"
 #include "mojo/application/public/cpp/application_connection.h"
 #include "mojo/application/public/cpp/application_impl.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
diff --git a/components/mus/vm/display_manager.h b/components/mus/ws/display_manager.h
similarity index 95%
rename from components/mus/vm/display_manager.h
rename to components/mus/ws/display_manager.h
index 14d973e..e7b0d0f 100644
--- a/components/mus/vm/display_manager.h
+++ b/components/mus/ws/display_manager.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_DISPLAY_MANAGER_H_
-#define COMPONENTS_MUS_VM_DISPLAY_MANAGER_H_
+#ifndef COMPONENTS_MUS_WS_DISPLAY_MANAGER_H_
+#define COMPONENTS_MUS_WS_DISPLAY_MANAGER_H_
 
 #include <map>
 
@@ -13,7 +13,7 @@
 #include "base/timer/timer.h"
 #include "components/mus/public/interfaces/view_tree.mojom.h"
 #include "components/mus/surfaces/top_level_display_client.h"
-#include "components/mus/vm/display_manager_delegate.h"
+#include "components/mus/ws/display_manager_delegate.h"
 #include "third_party/mojo/src/mojo/public/cpp/bindings/callback.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/platform_window/platform_window_delegate.h"
@@ -146,4 +146,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_DISPLAY_MANAGER_H_
+#endif  // COMPONENTS_MUS_WS_DISPLAY_MANAGER_H_
diff --git a/components/mus/vm/display_manager_delegate.h b/components/mus/ws/display_manager_delegate.h
similarity index 85%
rename from components/mus/vm/display_manager_delegate.h
rename to components/mus/ws/display_manager_delegate.h
index e37d3a8..3b2c2fd7 100644
--- a/components/mus/vm/display_manager_delegate.h
+++ b/components/mus/ws/display_manager_delegate.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_DISPLAY_MANAGER_DELEGATE_H_
-#define COMPONENTS_MUS_VM_DISPLAY_MANAGER_DELEGATE_H_
+#ifndef COMPONENTS_MUS_WS_DISPLAY_MANAGER_DELEGATE_H_
+#define COMPONENTS_MUS_WS_DISPLAY_MANAGER_DELEGATE_H_
 
 #include "components/mus/public/interfaces/view_tree.mojom.h"
-#include "components/mus/vm/ids.h"
+#include "components/mus/ws/ids.h"
 
 namespace cc {
 struct SurfaceId;
@@ -43,4 +43,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_DISPLAY_MANAGER_DELEGATE_H_
+#endif  // COMPONENTS_MUS_WS_DISPLAY_MANAGER_DELEGATE_H_
diff --git a/components/mus/vm/display_manager_factory.h b/components/mus/ws/display_manager_factory.h
similarity index 81%
rename from components/mus/vm/display_manager_factory.h
rename to components/mus/ws/display_manager_factory.h
index 358b1bc..adfeb23 100644
--- a/components/mus/vm/display_manager_factory.h
+++ b/components/mus/ws/display_manager_factory.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_DISPLAY_MANAGER_FACTORY_H_
-#define COMPONENTS_MUS_VM_DISPLAY_MANAGER_FACTORY_H_
+#ifndef COMPONENTS_MUS_WS_DISPLAY_MANAGER_FACTORY_H_
+#define COMPONENTS_MUS_WS_DISPLAY_MANAGER_FACTORY_H_
 
 #include "components/mus/gles2/gpu_state.h"
 #include "third_party/mojo/src/mojo/public/cpp/bindings/callback.h"
@@ -28,4 +28,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_DISPLAY_MANAGER_FACTORY_H_
+#endif  // COMPONENTS_MUS_WS_DISPLAY_MANAGER_FACTORY_H_
diff --git a/components/mus/vm/event_dispatcher.cc b/components/mus/ws/event_dispatcher.cc
similarity index 94%
rename from components/mus/vm/event_dispatcher.cc
rename to components/mus/ws/event_dispatcher.cc
index 2fd0a6b..f379df3 100644
--- a/components/mus/vm/event_dispatcher.cc
+++ b/components/mus/ws/event_dispatcher.cc
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/event_dispatcher.h"
+#include "components/mus/ws/event_dispatcher.h"
 
 #include "cc/surfaces/surface_id.h"
 #include "components/mus/surfaces/surfaces_state.h"
-#include "components/mus/vm/connection_manager.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/server_view_delegate.h"
-#include "components/mus/vm/view_coordinate_conversions.h"
-#include "components/mus/vm/view_tree_host_impl.h"
+#include "components/mus/ws/connection_manager.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/server_view_delegate.h"
+#include "components/mus/ws/view_coordinate_conversions.h"
+#include "components/mus/ws/view_tree_host_impl.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/point_f.h"
 
diff --git a/components/mus/vm/event_dispatcher.h b/components/mus/ws/event_dispatcher.h
similarity index 94%
rename from components/mus/vm/event_dispatcher.h
rename to components/mus/ws/event_dispatcher.h
index 28cecc4..b515ec7bc 100644
--- a/components/mus/vm/event_dispatcher.h
+++ b/components/mus/ws/event_dispatcher.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_EVENT_DISPATCHER_H_
-#define COMPONENTS_MUS_VM_EVENT_DISPATCHER_H_
+#ifndef COMPONENTS_MUS_WS_EVENT_DISPATCHER_H_
+#define COMPONENTS_MUS_WS_EVENT_DISPATCHER_H_
 
 #include <map>
 
@@ -80,4 +80,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_EVENT_DISPATCHER_H_
+#endif  // COMPONENTS_MUS_WS_EVENT_DISPATCHER_H_
diff --git a/components/mus/vm/focus_controller.cc b/components/mus/ws/focus_controller.cc
similarity index 86%
rename from components/mus/vm/focus_controller.cc
rename to components/mus/ws/focus_controller.cc
index 1d0d8931..f02fed689 100644
--- a/components/mus/vm/focus_controller.cc
+++ b/components/mus/ws/focus_controller.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/focus_controller.h"
+#include "components/mus/ws/focus_controller.h"
 
-#include "components/mus/vm/focus_controller_delegate.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/server_view_drawn_tracker.h"
+#include "components/mus/ws/focus_controller_delegate.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/server_view_drawn_tracker.h"
 
 namespace mus {
 
diff --git a/components/mus/vm/focus_controller.h b/components/mus/ws/focus_controller.h
similarity index 87%
rename from components/mus/vm/focus_controller.h
rename to components/mus/ws/focus_controller.h
index d0c17d74..c756ed2 100644
--- a/components/mus/vm/focus_controller.h
+++ b/components/mus/ws/focus_controller.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_FOCUS_CONTROLLER_H_
-#define COMPONENTS_MUS_VM_FOCUS_CONTROLLER_H_
+#ifndef COMPONENTS_MUS_WS_FOCUS_CONTROLLER_H_
+#define COMPONENTS_MUS_WS_FOCUS_CONTROLLER_H_
 
 #include "base/memory/scoped_ptr.h"
-#include "components/mus/vm/server_view_drawn_tracker_observer.h"
+#include "components/mus/ws/server_view_drawn_tracker_observer.h"
 
 namespace mus {
 
@@ -49,4 +49,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_FOCUS_CONTROLLER_H_
+#endif  // COMPONENTS_MUS_WS_FOCUS_CONTROLLER_H_
diff --git a/components/mus/vm/focus_controller_delegate.h b/components/mus/ws/focus_controller_delegate.h
similarity index 72%
rename from components/mus/vm/focus_controller_delegate.h
rename to components/mus/ws/focus_controller_delegate.h
index c0a77dd..ee91a5e2 100644
--- a/components/mus/vm/focus_controller_delegate.h
+++ b/components/mus/ws/focus_controller_delegate.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_FOCUS_CONTROLLER_DELEGATE_H_
-#define COMPONENTS_MUS_VM_FOCUS_CONTROLLER_DELEGATE_H_
+#ifndef COMPONENTS_MUS_WS_FOCUS_CONTROLLER_DELEGATE_H_
+#define COMPONENTS_MUS_WS_FOCUS_CONTROLLER_DELEGATE_H_
 
 namespace mus {
 
@@ -20,4 +20,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_FOCUS_CONTROLLER_DELEGATE_H_
+#endif  // COMPONENTS_MUS_WS_FOCUS_CONTROLLER_DELEGATE_H_
diff --git a/components/mus/vm/focus_controller_unittest.cc b/components/mus/ws/focus_controller_unittest.cc
similarity index 93%
rename from components/mus/vm/focus_controller_unittest.cc
rename to components/mus/ws/focus_controller_unittest.cc
index 5e1c3c1..5a7ad15 100644
--- a/components/mus/vm/focus_controller_unittest.cc
+++ b/components/mus/ws/focus_controller_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/focus_controller.h"
+#include "components/mus/ws/focus_controller.h"
 
-#include "components/mus/vm/focus_controller_delegate.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/test_server_view_delegate.h"
+#include "components/mus/ws/focus_controller_delegate.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/test_server_view_delegate.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace mus {
diff --git a/components/mus/vm/ids.h b/components/mus/ws/ids.h
similarity index 94%
rename from components/mus/vm/ids.h
rename to components/mus/ws/ids.h
index de84266..a788359 100644
--- a/components/mus/vm/ids.h
+++ b/components/mus/ws/ids.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_IDS_H_
-#define COMPONENTS_MUS_VM_IDS_H_
+#ifndef COMPONENTS_MUS_WS_IDS_H_
+#define COMPONENTS_MUS_WS_IDS_H_
 
 #include "components/mus/public/cpp/types.h"
 #include "components/mus/public/cpp/util.h"
@@ -58,4 +58,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_IDS_H_
+#endif  // COMPONENTS_MUS_WS_IDS_H_
diff --git a/components/mus/vm/server_view.cc b/components/mus/ws/server_view.cc
similarity index 97%
rename from components/mus/vm/server_view.cc
rename to components/mus/ws/server_view.cc
index 5b90a56..9eaa974 100644
--- a/components/mus/vm/server_view.cc
+++ b/components/mus/ws/server_view.cc
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/server_view.h"
+#include "components/mus/ws/server_view.h"
 
 #include <inttypes.h>
 
 #include "base/strings/stringprintf.h"
-#include "components/mus/vm/server_view_delegate.h"
-#include "components/mus/vm/server_view_observer.h"
+#include "components/mus/ws/server_view_delegate.h"
+#include "components/mus/ws/server_view_observer.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
 
 namespace mus {
diff --git a/components/mus/vm/server_view.h b/components/mus/ws/server_view.h
similarity index 95%
rename from components/mus/vm/server_view.h
rename to components/mus/ws/server_view.h
index e9b1653e..8cebcfc 100644
--- a/components/mus/vm/server_view.h
+++ b/components/mus/ws/server_view.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_SERVER_VIEW_H_
-#define COMPONENTS_MUS_VM_SERVER_VIEW_H_
+#ifndef COMPONENTS_MUS_WS_SERVER_VIEW_H_
+#define COMPONENTS_MUS_WS_SERVER_VIEW_H_
 
 #include <vector>
 
@@ -11,8 +11,8 @@
 #include "base/observer_list.h"
 #include "components/mus/public/interfaces/compositor_frame.mojom.h"
 #include "components/mus/public/interfaces/view_tree.mojom.h"
-#include "components/mus/vm/ids.h"
-#include "components/mus/vm/server_view_surface.h"
+#include "components/mus/ws/ids.h"
+#include "components/mus/ws/server_view_surface.h"
 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/transform.h"
@@ -139,4 +139,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_SERVER_VIEW_H_
+#endif  // COMPONENTS_MUS_WS_SERVER_VIEW_H_
diff --git a/components/mus/vm/server_view_delegate.h b/components/mus/ws/server_view_delegate.h
similarity index 83%
rename from components/mus/vm/server_view_delegate.h
rename to components/mus/ws/server_view_delegate.h
index a1dd884..58b40a3 100644
--- a/components/mus/vm/server_view_delegate.h
+++ b/components/mus/ws/server_view_delegate.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_SERVER_VIEW_DELEGATE_H_
-#define COMPONENTS_MUS_VM_SERVER_VIEW_DELEGATE_H_
+#ifndef COMPONENTS_MUS_WS_SERVER_VIEW_DELEGATE_H_
+#define COMPONENTS_MUS_WS_SERVER_VIEW_DELEGATE_H_
 
 #include "base/memory/scoped_ptr.h"
 #include "components/mus/public/interfaces/mus_constants.mojom.h"
@@ -30,4 +30,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_SERVER_VIEW_DELEGATE_H_
+#endif  // COMPONENTS_MUS_WS_SERVER_VIEW_DELEGATE_H_
diff --git a/components/mus/vm/server_view_drawn_tracker.cc b/components/mus/ws/server_view_drawn_tracker.cc
similarity index 91%
rename from components/mus/vm/server_view_drawn_tracker.cc
rename to components/mus/ws/server_view_drawn_tracker.cc
index 9441511..8b28d084 100644
--- a/components/mus/vm/server_view_drawn_tracker.cc
+++ b/components/mus/ws/server_view_drawn_tracker.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/server_view_drawn_tracker.h"
+#include "components/mus/ws/server_view_drawn_tracker.h"
 
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/server_view_drawn_tracker_observer.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/server_view_drawn_tracker_observer.h"
 
 namespace mus {
 
diff --git a/components/mus/vm/server_view_drawn_tracker.h b/components/mus/ws/server_view_drawn_tracker.h
similarity index 87%
rename from components/mus/vm/server_view_drawn_tracker.h
rename to components/mus/ws/server_view_drawn_tracker.h
index a3f4f99..ebf1e4a 100644
--- a/components/mus/vm/server_view_drawn_tracker.h
+++ b/components/mus/ws/server_view_drawn_tracker.h
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_SERVER_VIEW_DRAWN_TRACKER_H_
-#define COMPONENTS_MUS_VM_SERVER_VIEW_DRAWN_TRACKER_H_
+#ifndef COMPONENTS_MUS_WS_SERVER_VIEW_DRAWN_TRACKER_H_
+#define COMPONENTS_MUS_WS_SERVER_VIEW_DRAWN_TRACKER_H_
 
 #include <set>
 
 #include "base/basictypes.h"
-#include "components/mus/vm/server_view_observer.h"
+#include "components/mus/ws/server_view_observer.h"
 
 namespace mus {
 
@@ -53,4 +53,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_SERVER_VIEW_DRAWN_TRACKER_H_
+#endif  // COMPONENTS_MUS_WS_SERVER_VIEW_DRAWN_TRACKER_H_
diff --git a/components/mus/vm/server_view_drawn_tracker_observer.h b/components/mus/ws/server_view_drawn_tracker_observer.h
similarity index 80%
rename from components/mus/vm/server_view_drawn_tracker_observer.h
rename to components/mus/ws/server_view_drawn_tracker_observer.h
index 51239bec..a892f5e 100644
--- a/components/mus/vm/server_view_drawn_tracker_observer.h
+++ b/components/mus/ws/server_view_drawn_tracker_observer.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_SERVER_VIEW_DRAWN_TRACKER_OBSERVER_H_
-#define COMPONENTS_MUS_VM_SERVER_VIEW_DRAWN_TRACKER_OBSERVER_H_
+#ifndef COMPONENTS_MUS_WS_SERVER_VIEW_DRAWN_TRACKER_OBSERVER_H_
+#define COMPONENTS_MUS_WS_SERVER_VIEW_DRAWN_TRACKER_OBSERVER_H_
 
 namespace mus {
 
@@ -25,4 +25,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_SERVER_VIEW_DRAWN_TRACKER_OBSERVER_H_
+#endif  // COMPONENTS_MUS_WS_SERVER_VIEW_DRAWN_TRACKER_OBSERVER_H_
diff --git a/components/mus/vm/server_view_drawn_tracker_unittest.cc b/components/mus/ws/server_view_drawn_tracker_unittest.cc
similarity index 95%
rename from components/mus/vm/server_view_drawn_tracker_unittest.cc
rename to components/mus/ws/server_view_drawn_tracker_unittest.cc
index 49db3db8..a8b5122 100644
--- a/components/mus/vm/server_view_drawn_tracker_unittest.cc
+++ b/components/mus/ws/server_view_drawn_tracker_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/server_view_drawn_tracker.h"
+#include "components/mus/ws/server_view_drawn_tracker.h"
 
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/server_view_drawn_tracker_observer.h"
-#include "components/mus/vm/test_server_view_delegate.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/server_view_drawn_tracker_observer.h"
+#include "components/mus/ws/test_server_view_delegate.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace mus {
diff --git a/components/mus/vm/server_view_observer.h b/components/mus/ws/server_view_observer.h
similarity index 92%
rename from components/mus/vm/server_view_observer.h
rename to components/mus/ws/server_view_observer.h
index a4b151c..2b82d6b 100644
--- a/components/mus/vm/server_view_observer.h
+++ b/components/mus/ws/server_view_observer.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_SERVER_VIEW_OBSERVER_H_
-#define COMPONENTS_MUS_VM_SERVER_VIEW_OBSERVER_H_
+#ifndef COMPONENTS_MUS_WS_SERVER_VIEW_OBSERVER_H_
+#define COMPONENTS_MUS_WS_SERVER_VIEW_OBSERVER_H_
 
 #include "components/mus/public/interfaces/mus_constants.mojom.h"
 
@@ -67,4 +67,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_SERVER_VIEW_OBSERVER_H_
+#endif  // COMPONENTS_MUS_WS_SERVER_VIEW_OBSERVER_H_
diff --git a/components/mus/vm/server_view_surface.cc b/components/mus/ws/server_view_surface.cc
similarity index 96%
rename from components/mus/vm/server_view_surface.cc
rename to components/mus/ws/server_view_surface.cc
index 3959a83..18c2ff9 100644
--- a/components/mus/vm/server_view_surface.cc
+++ b/components/mus/ws/server_view_surface.cc
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/server_view_surface.h"
+#include "components/mus/ws/server_view_surface.h"
 
 #include "cc/output/compositor_frame.h"
 #include "cc/quads/shared_quad_state.h"
 #include "cc/quads/surface_draw_quad.h"
 #include "components/mus/surfaces/surfaces_state.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/server_view_delegate.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/server_view_delegate.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
 #include "mojo/converters/surfaces/surfaces_type_converters.h"
 
diff --git a/components/mus/vm/server_view_surface.h b/components/mus/ws/server_view_surface.h
similarity index 93%
rename from components/mus/vm/server_view_surface.h
rename to components/mus/ws/server_view_surface.h
index 5f5096b..f743e6f 100644
--- a/components/mus/vm/server_view_surface.h
+++ b/components/mus/ws/server_view_surface.h
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_SERVER_VIEW_SURFACE_H_
-#define COMPONENTS_MUS_VM_SERVER_VIEW_SURFACE_H_
+#ifndef COMPONENTS_MUS_WS_SERVER_VIEW_SURFACE_H_
+#define COMPONENTS_MUS_WS_SERVER_VIEW_SURFACE_H_
 
 #include "cc/surfaces/surface_factory.h"
 #include "cc/surfaces/surface_factory_client.h"
 #include "cc/surfaces/surface_id.h"
 #include "cc/surfaces/surface_id_allocator.h"
 #include "components/mus/public/interfaces/compositor_frame.mojom.h"
-#include "components/mus/vm/ids.h"
+#include "components/mus/ws/ids.h"
 #include "mojo/converters/surfaces/custom_surface_converter.h"
 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
 
@@ -83,4 +83,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_SERVER_VIEW_SURFACE_H_
+#endif  // COMPONENTS_MUS_WS_SERVER_VIEW_SURFACE_H_
diff --git a/components/mus/vm/test_change_tracker.cc b/components/mus/ws/test_change_tracker.cc
similarity index 99%
rename from components/mus/vm/test_change_tracker.cc
rename to components/mus/ws/test_change_tracker.cc
index 9ff3b114..4e4f09b 100644
--- a/components/mus/vm/test_change_tracker.cc
+++ b/components/mus/ws/test_change_tracker.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/test_change_tracker.h"
+#include "components/mus/ws/test_change_tracker.h"
 
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/components/mus/vm/test_change_tracker.h b/components/mus/ws/test_change_tracker.h
similarity index 96%
rename from components/mus/vm/test_change_tracker.h
rename to components/mus/ws/test_change_tracker.h
index aa1514b6..aa025719b 100644
--- a/components/mus/vm/test_change_tracker.h
+++ b/components/mus/ws/test_change_tracker.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_TEST_CHANGE_TRACKER_H_
-#define COMPONENTS_MUS_VM_TEST_CHANGE_TRACKER_H_
+#ifndef COMPONENTS_MUS_WS_TEST_CHANGE_TRACKER_H_
+#define COMPONENTS_MUS_WS_TEST_CHANGE_TRACKER_H_
 
 #include <string>
 #include <vector>
@@ -153,4 +153,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_TEST_CHANGE_TRACKER_H_
+#endif  // COMPONENTS_MUS_WS_TEST_CHANGE_TRACKER_H_
diff --git a/components/mus/vm/test_server_view_delegate.cc b/components/mus/ws/test_server_view_delegate.cc
similarity index 85%
rename from components/mus/vm/test_server_view_delegate.cc
rename to components/mus/ws/test_server_view_delegate.cc
index 3ab7393..109d8bea 100644
--- a/components/mus/vm/test_server_view_delegate.cc
+++ b/components/mus/ws/test_server_view_delegate.cc
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/test_server_view_delegate.h"
-#include "components/mus/vm/server_view.h"
+#include "components/mus/ws/test_server_view_delegate.h"
+#include "components/mus/ws/server_view.h"
 
 namespace mus {
 
diff --git a/components/mus/vm/test_server_view_delegate.h b/components/mus/ws/test_server_view_delegate.h
similarity index 77%
rename from components/mus/vm/test_server_view_delegate.h
rename to components/mus/ws/test_server_view_delegate.h
index 4f3d069..ae591cab 100644
--- a/components/mus/vm/test_server_view_delegate.h
+++ b/components/mus/ws/test_server_view_delegate.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_TEST_SERVER_VIEW_DELEGATE_H_
-#define COMPONENTS_MUS_VM_TEST_SERVER_VIEW_DELEGATE_H_
+#ifndef COMPONENTS_MUS_WS_TEST_SERVER_VIEW_DELEGATE_H_
+#define COMPONENTS_MUS_WS_TEST_SERVER_VIEW_DELEGATE_H_
 
 #include "base/basictypes.h"
-#include "components/mus/vm/server_view_delegate.h"
+#include "components/mus/ws/server_view_delegate.h"
 
 namespace mus {
 
@@ -32,4 +32,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_TEST_SERVER_VIEW_DELEGATE_H_
+#endif  // COMPONENTS_MUS_WS_TEST_SERVER_VIEW_DELEGATE_H_
diff --git a/components/mus/vm/view_coordinate_conversions.cc b/components/mus/ws/view_coordinate_conversions.cc
similarity index 95%
rename from components/mus/vm/view_coordinate_conversions.cc
rename to components/mus/ws/view_coordinate_conversions.cc
index 57e00937..e0e34d85 100644
--- a/components/mus/vm/view_coordinate_conversions.cc
+++ b/components/mus/ws/view_coordinate_conversions.cc
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/view_coordinate_conversions.h"
+#include "components/mus/ws/view_coordinate_conversions.h"
 
-#include "components/mus/vm/server_view.h"
+#include "components/mus/ws/server_view.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/point_conversions.h"
 #include "ui/gfx/geometry/point_f.h"
diff --git a/components/mus/vm/view_coordinate_conversions.h b/components/mus/ws/view_coordinate_conversions.h
similarity index 86%
rename from components/mus/vm/view_coordinate_conversions.h
rename to components/mus/ws/view_coordinate_conversions.h
index ed9e607d..76e85cb2 100644
--- a/components/mus/vm/view_coordinate_conversions.h
+++ b/components/mus/ws/view_coordinate_conversions.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_VIEW_COORDINATE_CONVERSIONS_H_
-#define COMPONENTS_MUS_VM_VIEW_COORDINATE_CONVERSIONS_H_
+#ifndef COMPONENTS_MUS_WS_VIEW_COORDINATE_CONVERSIONS_H_
+#define COMPONENTS_MUS_WS_VIEW_COORDINATE_CONVERSIONS_H_
 
 namespace gfx {
 class Point;
@@ -32,4 +32,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_VIEW_COORDINATE_CONVERSIONS_H_
+#endif  // COMPONENTS_MUS_WS_VIEW_COORDINATE_CONVERSIONS_H_
diff --git a/components/mus/vm/view_coordinate_conversions_unittest.cc b/components/mus/ws/view_coordinate_conversions_unittest.cc
similarity index 88%
rename from components/mus/vm/view_coordinate_conversions_unittest.cc
rename to components/mus/ws/view_coordinate_conversions_unittest.cc
index becea9b..bc758b0 100644
--- a/components/mus/vm/view_coordinate_conversions_unittest.cc
+++ b/components/mus/ws/view_coordinate_conversions_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/view_coordinate_conversions.h"
+#include "components/mus/ws/view_coordinate_conversions.h"
 
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/server_view_delegate.h"
-#include "components/mus/vm/test_server_view_delegate.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/server_view_delegate.h"
+#include "components/mus/ws/test_server_view_delegate.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/point_f.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/components/mus/vm/view_manager_client_apptest.cc b/components/mus/ws/view_manager_client_apptest.cc
similarity index 100%
rename from components/mus/vm/view_manager_client_apptest.cc
rename to components/mus/ws/view_manager_client_apptest.cc
diff --git a/components/mus/vm/view_tree_apptest.cc b/components/mus/ws/view_tree_apptest.cc
similarity index 99%
rename from components/mus/vm/view_tree_apptest.cc
rename to components/mus/ws/view_tree_apptest.cc
index 3f34d10..04aac5d 100644
--- a/components/mus/vm/view_tree_apptest.cc
+++ b/components/mus/ws/view_tree_apptest.cc
@@ -8,8 +8,8 @@
 #include "base/strings/stringprintf.h"
 #include "components/mus/public/interfaces/view_tree.mojom.h"
 #include "components/mus/public/interfaces/view_tree_host.mojom.h"
-#include "components/mus/vm/ids.h"
-#include "components/mus/vm/test_change_tracker.h"
+#include "components/mus/ws/ids.h"
+#include "components/mus/ws/test_change_tracker.h"
 #include "mojo/application/public/cpp/application_delegate.h"
 #include "mojo/application/public/cpp/application_impl.h"
 #include "mojo/application/public/cpp/application_test_base.h"
diff --git a/components/mus/vm/view_tree_host_connection.cc b/components/mus/ws/view_tree_host_connection.cc
similarity index 92%
rename from components/mus/vm/view_tree_host_connection.cc
rename to components/mus/ws/view_tree_host_connection.cc
index 7dcfbda7..23ee9f2 100644
--- a/components/mus/vm/view_tree_host_connection.cc
+++ b/components/mus/ws/view_tree_host_connection.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/view_tree_host_connection.h"
+#include "components/mus/ws/view_tree_host_connection.h"
 
-#include "components/mus/vm/connection_manager.h"
-#include "components/mus/vm/view_tree_host_impl.h"
+#include "components/mus/ws/connection_manager.h"
+#include "components/mus/ws/view_tree_host_impl.h"
 
 namespace mus {
 
diff --git a/components/mus/vm/view_tree_host_connection.h b/components/mus/ws/view_tree_host_connection.h
similarity index 90%
rename from components/mus/vm/view_tree_host_connection.h
rename to components/mus/ws/view_tree_host_connection.h
index a84fbbb..62f4d93 100644
--- a/components/mus/vm/view_tree_host_connection.h
+++ b/components/mus/ws/view_tree_host_connection.h
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_VIEW_TREE_HOST_CONNECTION_H_
-#define COMPONENTS_MUS_VM_VIEW_TREE_HOST_CONNECTION_H_
+#ifndef COMPONENTS_MUS_WS_VIEW_TREE_HOST_CONNECTION_H_
+#define COMPONENTS_MUS_WS_VIEW_TREE_HOST_CONNECTION_H_
 
 #include "base/memory/scoped_ptr.h"
 #include "components/mus/public/interfaces/view_tree_host.mojom.h"
-#include "components/mus/vm/view_tree_host_delegate.h"
-#include "components/mus/vm/view_tree_host_impl.h"
+#include "components/mus/ws/view_tree_host_delegate.h"
+#include "components/mus/ws/view_tree_host_impl.h"
 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
 
 namespace mus {
@@ -79,4 +79,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_VIEW_TREE_HOST_CONNECTION_H_
+#endif  // COMPONENTS_MUS_WS_VIEW_TREE_HOST_CONNECTION_H_
diff --git a/components/mus/vm/view_tree_host_delegate.h b/components/mus/ws/view_tree_host_delegate.h
similarity index 86%
rename from components/mus/vm/view_tree_host_delegate.h
rename to components/mus/ws/view_tree_host_delegate.h
index 724c425d..2551b87 100644
--- a/components/mus/vm/view_tree_host_delegate.h
+++ b/components/mus/ws/view_tree_host_delegate.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_VIEW_TREE_HOST_DELEGATE_H_
-#define COMPONENTS_MUS_VM_VIEW_TREE_HOST_DELEGATE_H_
+#ifndef COMPONENTS_MUS_WS_VIEW_TREE_HOST_DELEGATE_H_
+#define COMPONENTS_MUS_WS_VIEW_TREE_HOST_DELEGATE_H_
 
 namespace mus {
 
@@ -32,4 +32,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_VIEW_TREE_HOST_DELEGATE_H_
+#endif  // COMPONENTS_MUS_WS_VIEW_TREE_HOST_DELEGATE_H_
diff --git a/components/mus/vm/view_tree_host_impl.cc b/components/mus/ws/view_tree_host_impl.cc
similarity index 96%
rename from components/mus/vm/view_tree_host_impl.cc
rename to components/mus/ws/view_tree_host_impl.cc
index 5fdbdc57..636711d 100644
--- a/components/mus/vm/view_tree_host_impl.cc
+++ b/components/mus/ws/view_tree_host_impl.cc
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/view_tree_host_impl.h"
+#include "components/mus/ws/view_tree_host_impl.h"
 
 #include "base/strings/utf_string_conversions.h"
 #include "components/mus/public/cpp/types.h"
-#include "components/mus/vm/connection_manager.h"
-#include "components/mus/vm/display_manager.h"
-#include "components/mus/vm/focus_controller.h"
-#include "components/mus/vm/view_tree_host_delegate.h"
-#include "components/mus/vm/view_tree_impl.h"
+#include "components/mus/ws/connection_manager.h"
+#include "components/mus/ws/display_manager.h"
+#include "components/mus/ws/focus_controller.h"
+#include "components/mus/ws/view_tree_host_delegate.h"
+#include "components/mus/ws/view_tree_impl.h"
 #include "mojo/common/common_type_converters.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
 
diff --git a/components/mus/vm/view_tree_host_impl.h b/components/mus/ws/view_tree_host_impl.h
similarity index 92%
rename from components/mus/vm/view_tree_host_impl.h
rename to components/mus/ws/view_tree_host_impl.h
index 2bda609b..5d6968c 100644
--- a/components/mus/vm/view_tree_host_impl.h
+++ b/components/mus/ws/view_tree_host_impl.h
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_VIEW_TREE_HOST_IMPL_H_
-#define COMPONENTS_MUS_VM_VIEW_TREE_HOST_IMPL_H_
+#ifndef COMPONENTS_MUS_WS_VIEW_TREE_HOST_IMPL_H_
+#define COMPONENTS_MUS_WS_VIEW_TREE_HOST_IMPL_H_
 
 #include "base/memory/scoped_ptr.h"
 #include "components/mus/public/cpp/types.h"
 #include "components/mus/public/interfaces/view_tree_host.mojom.h"
-#include "components/mus/vm/display_manager.h"
-#include "components/mus/vm/event_dispatcher.h"
-#include "components/mus/vm/focus_controller_delegate.h"
-#include "components/mus/vm/server_view.h"
+#include "components/mus/ws/display_manager.h"
+#include "components/mus/ws/event_dispatcher.h"
+#include "components/mus/ws/focus_controller_delegate.h"
+#include "components/mus/ws/server_view.h"
 
 namespace cc {
 class SurfaceManager;
@@ -122,4 +122,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_VIEW_TREE_HOST_IMPL_H_
+#endif  // COMPONENTS_MUS_WS_VIEW_TREE_HOST_IMPL_H_
diff --git a/components/mus/vm/view_tree_impl.cc b/components/mus/ws/view_tree_impl.cc
similarity index 98%
rename from components/mus/vm/view_tree_impl.cc
rename to components/mus/ws/view_tree_impl.cc
index 40e2c07..6c485bc 100644
--- a/components/mus/vm/view_tree_impl.cc
+++ b/components/mus/ws/view_tree_impl.cc
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/view_tree_impl.h"
+#include "components/mus/ws/view_tree_impl.h"
 
 #include "base/bind.h"
 #include "base/stl_util.h"
-#include "components/mus/vm/connection_manager.h"
-#include "components/mus/vm/default_access_policy.h"
-#include "components/mus/vm/display_manager.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/view_tree_host_impl.h"
-#include "components/mus/vm/window_manager_access_policy.h"
+#include "components/mus/ws/connection_manager.h"
+#include "components/mus/ws/default_access_policy.h"
+#include "components/mus/ws/display_manager.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/view_tree_host_impl.h"
+#include "components/mus/ws/window_manager_access_policy.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
 #include "mojo/converters/ime/ime_type_converters.h"
 #include "mojo/converters/input_events/input_events_type_converters.h"
diff --git a/components/mus/vm/view_tree_impl.h b/components/mus/ws/view_tree_impl.h
similarity index 97%
rename from components/mus/vm/view_tree_impl.h
rename to components/mus/ws/view_tree_impl.h
index f573b55..2eda4d6 100644
--- a/components/mus/vm/view_tree_impl.h
+++ b/components/mus/ws/view_tree_impl.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_VIEW_TREE_IMPL_H_
-#define COMPONENTS_MUS_VM_VIEW_TREE_IMPL_H_
+#ifndef COMPONENTS_MUS_WS_VIEW_TREE_IMPL_H_
+#define COMPONENTS_MUS_WS_VIEW_TREE_IMPL_H_
 
 #include <set>
 #include <string>
@@ -15,8 +15,8 @@
 #include "base/memory/scoped_ptr.h"
 #include "components/mus/public/interfaces/surface_id.mojom.h"
 #include "components/mus/public/interfaces/view_tree.mojom.h"
-#include "components/mus/vm/access_policy_delegate.h"
-#include "components/mus/vm/ids.h"
+#include "components/mus/ws/access_policy_delegate.h"
+#include "components/mus/ws/ids.h"
 
 namespace gfx {
 class Rect;
@@ -249,4 +249,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_VIEW_TREE_IMPL_H_
+#endif  // COMPONENTS_MUS_WS_VIEW_TREE_IMPL_H_
diff --git a/components/mus/vm/view_tree_unittest.cc b/components/mus/ws/view_tree_unittest.cc
similarity index 96%
rename from components/mus/vm/view_tree_unittest.cc
rename to components/mus/ws/view_tree_unittest.cc
index 352625c..caa3b83 100644
--- a/components/mus/vm/view_tree_unittest.cc
+++ b/components/mus/ws/view_tree_unittest.cc
@@ -10,16 +10,16 @@
 #include "components/mus/public/cpp/util.h"
 #include "components/mus/public/interfaces/view_tree.mojom.h"
 #include "components/mus/surfaces/surfaces_state.h"
-#include "components/mus/vm/client_connection.h"
-#include "components/mus/vm/connection_manager.h"
-#include "components/mus/vm/connection_manager_delegate.h"
-#include "components/mus/vm/display_manager.h"
-#include "components/mus/vm/display_manager_factory.h"
-#include "components/mus/vm/ids.h"
-#include "components/mus/vm/server_view.h"
-#include "components/mus/vm/test_change_tracker.h"
-#include "components/mus/vm/view_tree_host_connection.h"
-#include "components/mus/vm/view_tree_impl.h"
+#include "components/mus/ws/client_connection.h"
+#include "components/mus/ws/connection_manager.h"
+#include "components/mus/ws/connection_manager_delegate.h"
+#include "components/mus/ws/display_manager.h"
+#include "components/mus/ws/display_manager_factory.h"
+#include "components/mus/ws/ids.h"
+#include "components/mus/ws/server_view.h"
+#include "components/mus/ws/test_change_tracker.h"
+#include "components/mus/ws/view_tree_host_connection.h"
+#include "components/mus/ws/view_tree_impl.h"
 #include "mojo/application/public/interfaces/service_provider.mojom.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/mus/vm/window_manager_access_policy.cc b/components/mus/ws/window_manager_access_policy.cc
similarity index 95%
rename from components/mus/vm/window_manager_access_policy.cc
rename to components/mus/ws/window_manager_access_policy.cc
index 6cfb6202..d5eda63 100644
--- a/components/mus/vm/window_manager_access_policy.cc
+++ b/components/mus/ws/window_manager_access_policy.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/mus/vm/window_manager_access_policy.h"
+#include "components/mus/ws/window_manager_access_policy.h"
 
-#include "components/mus/vm/access_policy_delegate.h"
-#include "components/mus/vm/server_view.h"
+#include "components/mus/ws/access_policy_delegate.h"
+#include "components/mus/ws/server_view.h"
 
 namespace mus {
 
diff --git a/components/mus/vm/window_manager_access_policy.h b/components/mus/ws/window_manager_access_policy.h
similarity index 89%
rename from components/mus/vm/window_manager_access_policy.h
rename to components/mus/ws/window_manager_access_policy.h
index b08946b6..11c56e0 100644
--- a/components/mus/vm/window_manager_access_policy.h
+++ b/components/mus/ws/window_manager_access_policy.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_MUS_VM_WINDOW_MANAGER_ACCESS_POLICY_H_
-#define COMPONENTS_MUS_VM_WINDOW_MANAGER_ACCESS_POLICY_H_
+#ifndef COMPONENTS_MUS_WS_WINDOW_MANAGER_ACCESS_POLICY_H_
+#define COMPONENTS_MUS_WS_WINDOW_MANAGER_ACCESS_POLICY_H_
 
 #include "base/basictypes.h"
-#include "components/mus/vm/access_policy.h"
+#include "components/mus/ws/access_policy.h"
 
 namespace mus {
 
@@ -52,4 +52,4 @@
 
 }  // namespace mus
 
-#endif  // COMPONENTS_MUS_VM_WINDOW_MANAGER_ACCESS_POLICY_H_
+#endif  // COMPONENTS_MUS_WS_WINDOW_MANAGER_ACCESS_POLICY_H_
diff --git a/components/omnibox/browser/search_suggestion_parser.cc b/components/omnibox/browser/search_suggestion_parser.cc
index 24ab6370..df0e00b 100644
--- a/components/omnibox/browser/search_suggestion_parser.cc
+++ b/components/omnibox/browser/search_suggestion_parser.cc
@@ -376,7 +376,7 @@
     JSONStringValueDeserializer deserializer(json_data);
     deserializer.set_allow_trailing_comma(true);
     int error_code = 0;
-    scoped_ptr<base::Value> data(deserializer.Deserialize(&error_code, NULL));
+    scoped_ptr<base::Value> data = deserializer.Deserialize(&error_code, NULL);
     if (error_code == 0)
       return data.Pass();
   }
diff --git a/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist.cc b/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist.cc
index e718f80..bcb8cdb 100644
--- a/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist.cc
+++ b/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist.cc
@@ -58,6 +58,10 @@
   internal::BitStreamReader reader(base::StringPiece(
       compressed_whitelist.data(), compressed_whitelist.size()));
   std::vector<uint64_t> result;
+  // Reserve exactly the right amount of memory to avoid reallocs. The size
+  // changes very rarely and if it does change the code will still be correct,
+  // just slightly less efficient.
+  result.reserve(110610);
 
   VLOG(1) << "Uncompressing EV whitelist of size "
           << compressed_whitelist.size();
@@ -95,6 +99,18 @@
     result.push_back(curr_hash);
   }
 
+  // If there is excess capacity then trim it.
+  if (result.size() < result.capacity()) {
+    std::vector<uint64_t> temp(result.size());
+    memcpy(&temp[0], &result[0], result.size() * sizeof(result[0]));
+
+    // Swap the right-sized vector with the over-sized vector.
+    result.swap(temp);
+  }
+
+  // Make sure our size trimming code worked.
+  DCHECK(result.size() == result.capacity());
+
   uncompressed_list->swap(result);
   return true;
 }
diff --git a/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist_unittest.cc b/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist_unittest.cc
index 686eee5..6e2c1fb 100644
--- a/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist_unittest.cc
+++ b/components/packed_ct_ev_whitelist/packed_ct_ev_whitelist_unittest.cc
@@ -104,6 +104,7 @@
   std::vector<uint64_t> res;
   ASSERT_TRUE(PackedEVCertsWhitelist::UncompressEVWhitelist(
       GetAllWhitelistData(), &res));
+  ASSERT_TRUE(res.size() == res.capacity());
 
   // Ensure first hash is found
   EXPECT_TRUE(std::find(res.begin(), res.end(), HashToUint64(GetFirstHash())) !=
diff --git a/components/policy/core/common/config_dir_policy_loader.cc b/components/policy/core/common/config_dir_policy_loader.cc
index b81bfa9..daaf5415 100644
--- a/components/policy/core/common/config_dir_policy_loader.cc
+++ b/components/policy/core/common/config_dir_policy_loader.cc
@@ -143,8 +143,8 @@
     deserializer.set_allow_trailing_comma(true);
     int error_code = 0;
     std::string error_msg;
-    scoped_ptr<base::Value> value(
-        deserializer.Deserialize(&error_code, &error_msg));
+    scoped_ptr<base::Value> value =
+        deserializer.Deserialize(&error_code, &error_msg);
     if (!value.get()) {
       LOG(WARNING) << "Failed to read configuration file "
                    << config_file_iter->value() << ": " << error_msg;
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 03f75c1..b811a55 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -7527,7 +7527,7 @@
       'id': 274,
       'caption': '''Set the recommended locales for a public session''',
       'tags': [],
-      'desc': '''Sets one or more recommended locales for a public sessions, allowing users to easily choose one of these locales.
+      'desc': '''Sets one or more recommended locales for a public session, allowing users to easily choose one of these locales.
 
       The user can choose a locale and a keyboard layout before starting a public session. By default, all locales supported by <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> are listed in alphabetic order. You can use this policy to move a set of recommended locales to the top of the list.
 
diff --git a/components/proximity_auth/remote_status_update_unittest.cc b/components/proximity_auth/remote_status_update_unittest.cc
index 3511be3..960ecf6 100644
--- a/components/proximity_auth/remote_status_update_unittest.cc
+++ b/components/proximity_auth/remote_status_update_unittest.cc
@@ -11,67 +11,95 @@
 namespace proximity_auth {
 namespace {
 
-// Parses the |json| into a DictionaryValue.
-scoped_ptr<base::DictionaryValue> ParseJson(const std::string& json) {
-  base::DictionaryValue* as_dictionary;
-  base::JSONReader::Read(json).release()->GetAsDictionary(&as_dictionary);
-  return make_scoped_ptr(as_dictionary);
+// Parses the |json| into a RemoteStatusUpdate instance.
+scoped_ptr<RemoteStatusUpdate> ParseJson(const std::string& json) {
+  scoped_ptr<base::DictionaryValue> as_dictionary =
+      base::DictionaryValue::From(base::JSONReader::Read(json));
+  return RemoteStatusUpdate::Deserialize(*as_dictionary);
 }
 
 }  // namespace
 
 // Verify that all valid values can be parsed.
-TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_ValidStatuses) {
-  {
-    const char kValidJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"present\","
-        "  \"secure_screen_lock\": \"enabled\","
-        "  \"trust_agent\": \"enabled\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kValidJson));
-    ASSERT_TRUE(parsed_update);
-    EXPECT_EQ(USER_PRESENT, parsed_update->user_presence);
-    EXPECT_EQ(SECURE_SCREEN_LOCK_ENABLED,
-              parsed_update->secure_screen_lock_state);
-    EXPECT_EQ(TRUST_AGENT_ENABLED, parsed_update->trust_agent_state);
-  }
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_UserPresent) {
+  const char kValidJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"present\","
+      "  \"secure_screen_lock\": \"enabled\","
+      "  \"trust_agent\": \"enabled\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
+  ASSERT_TRUE(parsed_update);
+  EXPECT_EQ(USER_PRESENT, parsed_update->user_presence);
+  EXPECT_EQ(SECURE_SCREEN_LOCK_ENABLED,
+            parsed_update->secure_screen_lock_state);
+  EXPECT_EQ(TRUST_AGENT_ENABLED, parsed_update->trust_agent_state);
+}
 
-  {
-    const char kValidJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"absent\","
-        "  \"secure_screen_lock\": \"disabled\","
-        "  \"trust_agent\": \"disabled\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kValidJson));
-    ASSERT_TRUE(parsed_update);
-    EXPECT_EQ(USER_ABSENT, parsed_update->user_presence);
-    EXPECT_EQ(SECURE_SCREEN_LOCK_DISABLED,
-              parsed_update->secure_screen_lock_state);
-    EXPECT_EQ(TRUST_AGENT_DISABLED, parsed_update->trust_agent_state);
-  }
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_UserAbsent) {
+  const char kValidJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"absent\","
+      "  \"secure_screen_lock\": \"disabled\","
+      "  \"trust_agent\": \"disabled\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
+  ASSERT_TRUE(parsed_update);
+  EXPECT_EQ(USER_ABSENT, parsed_update->user_presence);
+  EXPECT_EQ(SECURE_SCREEN_LOCK_DISABLED,
+            parsed_update->secure_screen_lock_state);
+  EXPECT_EQ(TRUST_AGENT_DISABLED, parsed_update->trust_agent_state);
+}
 
-  {
-    const char kValidJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"unknown\","
-        "  \"secure_screen_lock\": \"unknown\","
-        "  \"trust_agent\": \"unsupported\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kValidJson));
-    ASSERT_TRUE(parsed_update);
-    EXPECT_EQ(USER_PRESENCE_UNKNOWN, parsed_update->user_presence);
-    EXPECT_EQ(SECURE_SCREEN_LOCK_STATE_UNKNOWN,
-              parsed_update->secure_screen_lock_state);
-    EXPECT_EQ(TRUST_AGENT_UNSUPPORTED, parsed_update->trust_agent_state);
-  }
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_Unknown) {
+  const char kValidJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"unknown\","
+      "  \"secure_screen_lock\": \"unknown\","
+      "  \"trust_agent\": \"unsupported\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
+  ASSERT_TRUE(parsed_update);
+  EXPECT_EQ(USER_PRESENCE_UNKNOWN, parsed_update->user_presence);
+  EXPECT_EQ(SECURE_SCREEN_LOCK_STATE_UNKNOWN,
+            parsed_update->secure_screen_lock_state);
+  EXPECT_EQ(TRUST_AGENT_UNSUPPORTED, parsed_update->trust_agent_state);
+}
+
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_MissingUserPresence) {
+  const char kJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"secure_screen_lock\": \"enabled\","
+      "  \"trust_agent\": \"enabled\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
+  EXPECT_FALSE(parsed_update);
+}
+
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_MissingSecureScreenLock) {
+  const char kJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"present\","
+      "  \"trust_agent\": \"enabled\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
+  EXPECT_FALSE(parsed_update);
+}
+
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_MissingTrustAgent) {
+  const char kJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"present\","
+      "  \"secure_screen_lock\": \"enabled\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
+  EXPECT_FALSE(parsed_update);
 }
 
 TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidType) {
@@ -82,88 +110,44 @@
       "  \"secure_screen_lock\": \"enabled\","
       "  \"trust_agent\": \"enabled\""
       "}";
-  scoped_ptr<RemoteStatusUpdate> parsed_update =
-      RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
   EXPECT_FALSE(parsed_update);
 }
 
-TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_MissingValue) {
-  {
-    const char kJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"secure_screen_lock\": \"enabled\","
-        "  \"trust_agent\": \"enabled\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
-    EXPECT_FALSE(parsed_update);
-  }
-
-  {
-    const char kJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"present\","
-        "  \"trust_agent\": \"enabled\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
-    EXPECT_FALSE(parsed_update);
-  }
-
-  {
-    const char kJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"present\","
-        "  \"secure_screen_lock\": \"enabled\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
-    EXPECT_FALSE(parsed_update);
-  }
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidPresence) {
+  const char kJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"garbage\","
+      "  \"secure_screen_lock\": \"enabled\","
+      "  \"trust_agent\": \"enabled\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
+  EXPECT_FALSE(parsed_update);
 }
 
-TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidValues) {
-  {
-    const char kJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"garbage\","
-        "  \"secure_screen_lock\": \"enabled\","
-        "  \"trust_agent\": \"enabled\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
-    EXPECT_FALSE(parsed_update);
-  }
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidLock) {
+  const char kJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"present\","
+      "  \"secure_screen_lock\": \"garbage\","
+      "  \"trust_agent\": \"enabled\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
+  EXPECT_FALSE(parsed_update);
+}
 
-  {
-    const char kJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"present\","
-        "  \"secure_screen_lock\": \"garbage\","
-        "  \"trust_agent\": \"enabled\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
-    EXPECT_FALSE(parsed_update);
-  }
-
-  {
-    const char kJson[] =
-        "{"
-        "  \"type\": \"status_update\","
-        "  \"user_presence\": \"present\","
-        "  \"secure_screen_lock\": \"enabled\","
-        "  \"trust_agent\": \"garbage\""
-        "}";
-    scoped_ptr<RemoteStatusUpdate> parsed_update =
-        RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
-    EXPECT_FALSE(parsed_update);
-  }
+TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidAgent) {
+  const char kJson[] =
+      "{"
+      "  \"type\": \"status_update\","
+      "  \"user_presence\": \"present\","
+      "  \"secure_screen_lock\": \"enabled\","
+      "  \"trust_agent\": \"garbage\""
+      "}";
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
+  EXPECT_FALSE(parsed_update);
 }
 
 // Verify that extra fields do not prevent parsing. This provides
@@ -178,8 +162,7 @@
       "  \"trust_agent\": \"enabled\","
       "  \"secret_sauce\": \"chipotle\""
       "}";
-  scoped_ptr<RemoteStatusUpdate> parsed_update =
-      RemoteStatusUpdate::Deserialize(*ParseJson(kJson));
+  scoped_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
   ASSERT_TRUE(parsed_update);
   EXPECT_EQ(USER_PRESENT, parsed_update->user_presence);
   EXPECT_EQ(SECURE_SCREEN_LOCK_ENABLED,
diff --git a/components/resources/components_resources.grd b/components/resources/components_resources.grd
index 3a8f3345..59cc6de 100644
--- a/components/resources/components_resources.grd
+++ b/components/resources/components_resources.grd
@@ -20,6 +20,7 @@
       <part file="security_interstitials_resources.grdp" />
       <part file="sync_driver_resources.grdp" />
       <part file="translate_resources.grdp" />
+      <part file="version_ui_resources.grdp" />
     </includes>
   </release>
 </grit>
diff --git a/components/resources/version_ui_resources.grdp b/components/resources/version_ui_resources.grdp
new file mode 100644
index 0000000..c76e749
--- /dev/null
+++ b/components/resources/version_ui_resources.grdp
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+  <include name="IDR_VERSION_UI_CSS" file="../version_ui/resources/about_version.css" type="BINDATA" />
+  <include name="IDR_VERSION_UI_HTML" file="../version_ui/resources/about_version.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
+  <include name="IDR_VERSION_UI_JS" file="../version_ui/resources/about_version.js" type="BINDATA" />
+</grit-part>
diff --git a/components/tracing/BUILD.gn b/components/tracing/BUILD.gn
index b8ab5a9..40e90f9 100644
--- a/components/tracing/BUILD.gn
+++ b/components/tracing/BUILD.gn
@@ -39,18 +39,21 @@
   ]
 }
 
-if (!is_android) {
-  source_set("unit_tests") {
-    testonly = true
+source_set("unit_tests") {
+  testonly = true
 
-    sources = [
-      "trace_config_file_unittest.cc",
-    ]
+  sources = [
+    "graphics_memory_dump_provider_android_unittest.cc",
+  ]
 
-    deps = [
-      ":startup_tracing",
-      "//base/test:test_support",
-      "//testing/gtest",
-    ]
+  deps = [
+    ":tracing",
+    "//base/test:test_support",
+    "//testing/gtest",
+  ]
+
+  if (!is_android) {
+    sources += [ "trace_config_file_unittest.cc" ]
+    deps += [ ":startup_tracing" ]
   }
 }
diff --git a/components/tracing/graphics_memory_dump_provider_android.h b/components/tracing/graphics_memory_dump_provider_android.h
index 3a9aa65..c9dfd21 100644
--- a/components/tracing/graphics_memory_dump_provider_android.h
+++ b/components/tracing/graphics_memory_dump_provider_android.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/containers/hash_tables.h"
+#include "base/gtest_prod_util.h"
 #include "base/memory/singleton.h"
 #include "base/trace_event/memory_dump_provider.h"
 #include "components/tracing/tracing_export.h"
@@ -29,6 +30,7 @@
                     base::trace_event::ProcessMemoryDump* pmd) override;
 
  private:
+  FRIEND_TEST_ALL_PREFIXES(GraphicsMemoryDumpProviderTest, ParseResponse);
   friend struct base::DefaultSingletonTraits<GraphicsMemoryDumpProvider>;
 
   void ParseResponseAndAddToDump(const char* buf,
diff --git a/components/tracing/graphics_memory_dump_provider_android_unittest.cc b/components/tracing/graphics_memory_dump_provider_android_unittest.cc
new file mode 100644
index 0000000..02e9cfd
--- /dev/null
+++ b/components/tracing/graphics_memory_dump_provider_android_unittest.cc
@@ -0,0 +1,52 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/trace_event/memory_allocator_dump.h"
+#include "base/trace_event/process_memory_dump.h"
+#include "base/trace_event/trace_event_argument.h"
+#include "components/tracing/graphics_memory_dump_provider_android.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace tracing {
+
+TEST(GraphicsMemoryDumpProviderTest, ParseResponse) {
+  const char* kDumpBaseName = GraphicsMemoryDumpProvider::kDumpBaseName;
+
+  base::trace_event::ProcessMemoryDump pmd(nullptr);
+  auto instance = GraphicsMemoryDumpProvider::GetInstance();
+  char buf[] = "graphics_total 12\ngraphics_pss 34\ngl_total 56\ngl_pss 78";
+  instance->ParseResponseAndAddToDump(buf, strlen(buf), &pmd);
+
+  // Check the "graphics" row.
+  auto mad = pmd.GetAllocatorDump(kDumpBaseName + std::string("graphics"));
+  ASSERT_TRUE(mad);
+  std::string json;
+  mad->attributes_for_testing()->AppendAsTraceFormat(&json);
+  ASSERT_EQ(
+      "{\"memtrack_pss\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":"
+      "\"22\"},"
+      "\"memtrack_total\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":"
+      "\"c\"}}",
+      json);
+
+  // Check the "gl" row.
+  mad = pmd.GetAllocatorDump(kDumpBaseName + std::string("gl"));
+  ASSERT_TRUE(mad);
+  json = "";
+  mad->attributes_for_testing()->AppendAsTraceFormat(&json);
+  ASSERT_EQ(
+      "{\"memtrack_pss\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":"
+      "\"4e\"},"
+      "\"memtrack_total\":{\"type\":\"scalar\",\"units\":\"bytes\",\"value\":"
+      "\"38\"}}",
+      json);
+
+  // Test for truncated input.
+  pmd.Clear();
+  instance->ParseResponseAndAddToDump(buf, strlen(buf) - 14, &pmd);
+  ASSERT_TRUE(pmd.GetAllocatorDump(kDumpBaseName + std::string("graphics")));
+  ASSERT_FALSE(pmd.GetAllocatorDump(kDumpBaseName + std::string("gl")));
+}
+
+}  // namespace tracing
diff --git a/components/translate/content/browser/BUILD.gn b/components/translate/content/browser/BUILD.gn
index ea4eb15..4553d25 100644
--- a/components/translate/content/browser/BUILD.gn
+++ b/components/translate/content/browser/BUILD.gn
@@ -4,7 +4,7 @@
 
 import("//build/config/features.gni")
 
-static_library("browser") {
+source_set("browser") {
   sources = [
     "browser_cld_data_provider.cc",
     "browser_cld_data_provider.h",
@@ -20,7 +20,12 @@
 
   deps = [
     "//base",
+    "//components/translate/content/common",
     "//components/translate/core/browser",
+    "//components/translate/core/common",
     "//content/public/browser",
+    "//content/public/common",
+    "//ipc",
+    "//net",
   ]
 }
diff --git a/components/translate/core/browser/BUILD.gn b/components/translate/core/browser/BUILD.gn
index 862a6b85..2fafccc 100644
--- a/components/translate/core/browser/BUILD.gn
+++ b/components/translate/core/browser/BUILD.gn
@@ -37,11 +37,29 @@
     "translate_url_util.h",
   ]
 
+  deps = [
+    "//base",
+    "//base:i18n",
+    "//base:prefs",
+    "//components/data_use_measurement/core",
+    "//components/language_usage_metrics",
+    "//components/pref_registry",
+    "//components/resources:components_resources",
+    "//components/strings",
+    "//components/translate/core/common",
+    "//google_apis",
+    "//net",
+    "//third_party/icu",
+    "//ui/base",
+    "//url",
+  ]
+
   if (!use_aura) {
     sources += [
       "translate_infobar_delegate.cc",
       "translate_infobar_delegate.h",
     ]
+    deps += [ "//components/infobars/core" ]
   }
 
   if (is_mac) {
@@ -50,19 +68,6 @@
       "options_menu_model.h",
     ]
   }
-
-  deps = [
-    "//base",
-    "//components/data_use_measurement/core",
-    "//components/language_usage_metrics",
-    "//components/resources:components_resources",
-    "//components/strings",
-    "//components/translate/core/common",
-    "//net",
-    "//third_party/icu",
-    "//ui/base",
-    "//url",
-  ]
 }
 
 source_set("unit_tests") {
@@ -76,6 +81,11 @@
   ]
   deps = [
     ":browser",
+    "//base",
+    "//base:prefs",
+    "//components/pref_registry:test_support",
+    "//components/translate/core/common",
+    "//net:test_support",
     "//testing/gtest",
   ]
 }
diff --git a/components/translate/core/common/BUILD.gn b/components/translate/core/common/BUILD.gn
index e4f73c02..f4d461f 100644
--- a/components/translate/core/common/BUILD.gn
+++ b/components/translate/core/common/BUILD.gn
@@ -33,6 +33,8 @@
   ]
   deps = [
     ":common",
+    "//base",
     "//testing/gtest",
+    "//url",
   ]
 }
diff --git a/components/translate/core/language_detection/BUILD.gn b/components/translate/core/language_detection/BUILD.gn
index a1d15efe..dd8c57f0 100644
--- a/components/translate/core/language_detection/BUILD.gn
+++ b/components/translate/core/language_detection/BUILD.gn
@@ -32,6 +32,9 @@
   ]
   deps = [
     ":language_detection",
+    "//base",
+    "//components/translate/core/common",
     "//testing/gtest",
+    "//url",
   ]
 }
diff --git a/components/ui/zoom/BUILD.gn b/components/ui/zoom/BUILD.gn
index 1cd492e..ec60faf 100644
--- a/components/ui/zoom/BUILD.gn
+++ b/components/ui/zoom/BUILD.gn
@@ -18,6 +18,7 @@
 
   deps = [
     "//base",
+    "//base:prefs",
     "//content/public/browser",
     "//content/public/common",
     "//ipc",
@@ -33,6 +34,8 @@
   ]
   deps = [
     ":zoom",
+    "//base:prefs",
+    "//content/public/common",
     "//testing/gtest",
   ]
 }
diff --git a/components/update_client/component_patcher.cc b/components/update_client/component_patcher.cc
index 0525882..9105fda0 100644
--- a/components/update_client/component_patcher.cc
+++ b/components/update_client/component_patcher.cc
@@ -31,7 +31,7 @@
     return NULL;
 
   JSONFileValueDeserializer deserializer(commands);
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL);
 
   return (root.get() && root->IsType(base::Value::TYPE_LIST))
              ? static_cast<base::ListValue*>(root.release())
diff --git a/components/update_client/component_unpacker.cc b/components/update_client/component_unpacker.cc
index 9dfd555..b0fc94a 100644
--- a/components/update_client/component_unpacker.cc
+++ b/components/update_client/component_unpacker.cc
@@ -63,7 +63,7 @@
     return scoped_ptr<base::DictionaryValue>();
   JSONFileValueDeserializer deserializer(manifest);
   std::string error;
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, &error));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, &error);
   if (!root.get())
     return scoped_ptr<base::DictionaryValue>();
   if (!root->IsType(base::Value::TYPE_DICTIONARY))
diff --git a/components/upload_list/BUILD.gn b/components/upload_list/BUILD.gn
index 9fe4414..b184db0e 100644
--- a/components/upload_list/BUILD.gn
+++ b/components/upload_list/BUILD.gn
@@ -23,6 +23,7 @@
 
   deps = [
     ":upload_list",
+    "//base",
     "//testing/gtest",
   ]
 }
diff --git a/components/version_info.grdp b/components/version_info.grdp
deleted file mode 100644
index 934d17d..0000000
--- a/components/version_info.grdp
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<grit-part>
-
-  <message name="IDS_ABOUT_VERSION_UNOFFICIAL" desc="unofficial build on the about:version page">
-    Developer Build
-  </message>
-
-</grit-part>
diff --git a/components/version_info/version_info.cc b/components/version_info/version_info.cc
index de3f5802..00546f7 100644
--- a/components/version_info/version_info.cc
+++ b/components/version_info/version_info.cc
@@ -85,7 +85,7 @@
   current_version += GetVersionNumber();
 #if !defined(GOOGLE_CHROME_BUILD)
   current_version += " (";
-  current_version += l10n_util::GetStringUTF8(IDS_ABOUT_VERSION_UNOFFICIAL);
+  current_version += l10n_util::GetStringUTF8(IDS_VERSION_UI_UNOFFICIAL);
   current_version += " ";
   current_version += GetLastChange();
   current_version += " ";
diff --git a/components/version_ui.gypi b/components/version_ui.gypi
new file mode 100644
index 0000000..ec92027
--- /dev/null
+++ b/components/version_ui.gypi
@@ -0,0 +1,21 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+  'targets': [
+    {
+      # GN version: //components/version_ui
+      'target_name': 'version_ui',
+      'type': 'static_library',
+      'include_dirs': [
+        '..',
+      ],
+      'sources': [
+        # Note: sources list duplicated in GN build.
+        'version_ui/version_ui_constants.cc',
+        'version_ui/version_ui_constants.h',
+      ],
+    },
+  ],
+}
diff --git a/components/version_ui/BUILD.gn b/components/version_ui/BUILD.gn
new file mode 100644
index 0000000..fd7e2f5
--- /dev/null
+++ b/components/version_ui/BUILD.gn
@@ -0,0 +1,10 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("version_ui") {
+  sources = [
+    "version_ui_constants.cc",
+    "version_ui_constants.h",
+  ]
+}
diff --git a/components/version_ui/OWNERS b/components/version_ui/OWNERS
new file mode 100644
index 0000000..da5824440
--- /dev/null
+++ b/components/version_ui/OWNERS
@@ -0,0 +1,7 @@
+bauerb@chromium.org
+dbeam@chromium.org
+estade@chromium.org
+jhawkins@chromium.org
+nkostylev@chromium.org
+pam@chromium.org
+xiyuan@chromium.org
diff --git a/chrome/browser/resources/about_version.css b/components/version_ui/resources/about_version.css
similarity index 100%
rename from chrome/browser/resources/about_version.css
rename to components/version_ui/resources/about_version.css
diff --git a/chrome/browser/resources/about_version.html b/components/version_ui/resources/about_version.html
similarity index 90%
rename from chrome/browser/resources/about_version.html
rename to components/version_ui/resources/about_version.html
index 238bd26c..8a3bdf273 100644
--- a/chrome/browser/resources/about_version.html
+++ b/components/version_ui/resources/about_version.html
@@ -9,13 +9,20 @@
     <meta charset="utf-8">
     <title i18n-content="title"></title>
     <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
-<if expr="is_android">
+<if expr="is_android or is_ios">
     <meta name="viewport" content="width=device-width">
 </if>
     <link rel="stylesheet" href="chrome://version/about_version.css">
-<if expr="is_android">
-    <link rel="stylesheet" href="about_version_android.css">
+<if expr="is_android or is_ios">
+    <link rel="stylesheet" href="about_version_mobile.css">
 </if>
+
+<if expr="is_ios">
+    <!-- TODO(jyquinn): Remove this once CRWWebUIPageBuilder can inject it.
+         See http://crbug.com/487000 -->
+    <script src="chrome://resources/js/ios/web_ui.js"></script>
+</if>
+
     <script src="chrome://resources/js/cr.js"></script>
     <script src="chrome://resources/js/load_time_data.js"></script>
     <script src="chrome://resources/js/parse_html_subset.js"></script>
@@ -65,6 +72,7 @@
           </td>
 </if>
         </tr>
+<if expr="not is_ios">
         <tr><td class="label">Blink</td>
           <td class="version" id="blink_version" i18n-content="blink_version"></td>
         </tr>
@@ -74,7 +82,8 @@
             <span i18n-content="js_version"></span>
           </td>
         </tr>
-<if expr="not is_android">
+</if>
+<if expr="not is_android and not is_ios">
         <tr><td class="label" i18n-content="flash_plugin"></td>
           <td class="version" id="flash_version" i18n-content="flash_version"></td>
         </tr>
@@ -85,12 +94,14 @@
         <tr><td class="label" i18n-content="command_line_name"></td>
           <td class="version" id="command_line" i18n-content="command_line"></td>
         </tr>
+<if expr="not is_ios">
         <tr><td class="label" i18n-content="executable_path_name"></td>
           <td class="version" id="executable_path" i18n-content="executable_path"></td>
         </tr>
         <tr><td class="label" i18n-content="profile_path_name"></td>
           <td class="version" id="profile_path" i18n-content="profile_path"></td>
         </tr>
+</if>
         <tr id="variations-section">
           <td class="label" i18n-content="variations_name"></td>
           <td class="version" id="variations-list"></td>
diff --git a/chrome/browser/resources/about_version.js b/components/version_ui/resources/about_version.js
similarity index 100%
rename from chrome/browser/resources/about_version.js
rename to components/version_ui/resources/about_version.js
diff --git a/chrome/browser/resources/about_version_android.css b/components/version_ui/resources/about_version_mobile.css
similarity index 100%
rename from chrome/browser/resources/about_version_android.css
rename to components/version_ui/resources/about_version_mobile.css
diff --git a/components/version_ui/version_ui_constants.cc b/components/version_ui/version_ui_constants.cc
new file mode 100644
index 0000000..8210ad6
--- /dev/null
+++ b/components/version_ui/version_ui_constants.cc
@@ -0,0 +1,51 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/version_ui/version_ui_constants.h"
+
+namespace version_ui {
+
+// Resource paths.
+const char kAboutVersionCSS[] = "about_version.css";
+const char kVersionJS[] = "version.js";
+
+// Message handlers.
+const char kRequestVersionInfo[] = "requestVersionInfo";
+const char kReturnFilePaths[] = "returnFilePaths";
+const char kReturnFlashVersion[] = "returnFlashVersion";
+const char kReturnVariationInfo[] = "returnVariationInfo";
+
+// Strings.
+const char kApplicationLabel[] = "application_label";
+const char kBlinkVersion[] = "blink_version";
+const char kBuildID[] = "build_id";
+const char kBuildIDName[] = "build_id_name";
+const char kCL[] = "cl";
+const char kCommandLine[] = "command_line";
+const char kCommandLineName[] = "command_line_name";
+const char kCompany[] = "company";
+const char kCopyright[] = "copyright";
+const char kExecutablePath[] = "executable_path";
+const char kExecutablePathName[] = "executable_path_name";
+const char kFlashPlugin[] = "flash_plugin";
+const char kFlashVersion[] = "flash_version";
+const char kJSEngine[] = "js_engine";
+const char kJSVersion[] = "js_version";
+const char kOfficial[] = "official";
+const char kOSName[] = "os_name";
+const char kOSType[] = "os_type";
+const char kOSVersion[] = "os_version";
+const char kPlatform[] = "platform";
+const char kProfilePath[] = "profile_path";
+const char kProfilePathName[] = "profile_path_name";
+const char kRevision[] = "revision";
+const char kTitle[] = "title";
+const char kUserAgent[] = "useragent";
+const char kUserAgentName[] = "user_agent_name";
+const char kVariationsName[] = "variations_name";
+const char kVersion[] = "version";
+const char kVersionBitSize[] = "version_bitsize";
+const char kVersionModifier[] = "version_modifier";
+
+}  // namespace version_ui
diff --git a/components/version_ui/version_ui_constants.h b/components/version_ui/version_ui_constants.h
new file mode 100644
index 0000000..79943672
--- /dev/null
+++ b/components/version_ui/version_ui_constants.h
@@ -0,0 +1,57 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_VERSION_UI_VERSION_UI_CONSTANTS_H_
+#define COMPONENTS_VERSION_UI_VERSION_UI_CONSTANTS_H_
+
+namespace version_ui {
+
+// Resource paths.
+// Must match the resource file names.
+extern const char kAboutVersionCSS[];
+extern const char kVersionJS[];
+
+// Message handlers.
+// Must match the constants used in the resource files.
+extern const char kRequestVersionInfo[];
+extern const char kReturnFilePaths[];
+extern const char kReturnFlashVersion[];
+extern const char kReturnVariationInfo[];
+
+// Strings.
+// Must match the constants used in the resource files.
+extern const char kApplicationLabel[];
+extern const char kBlinkVersion[];
+extern const char kBuildID[];
+extern const char kBuildIDName[];
+extern const char kCL[];
+extern const char kCommandLine[];
+extern const char kCommandLineName[];
+extern const char kCompany[];
+extern const char kCopyright[];
+extern const char kExecutablePath[];
+extern const char kExecutablePathName[];
+extern const char kFlashPlugin[];
+extern const char kFlashVersion[];
+extern const char kJSEngine[];
+extern const char kJSVersion[];
+extern const char kOfficial[];
+extern const char kOSName[];
+extern const char kOSType[];
+extern const char kOSVersion[];
+extern const char kPlatform[];
+extern const char kProfilePath[];
+extern const char kProfilePathName[];
+extern const char kRevision[];
+extern const char kTitle[];
+extern const char kUserAgent[];
+extern const char kUserAgentName[];
+extern const char kVariationsName[];
+extern const char kVersion[];
+extern const char kVersionBitSize[];
+extern const char kVersionModifier[];
+
+}  // namespace version_ui
+
+#endif  // COMPONENTS_VERSION_UI_VERSION_UI_CONSTANTS_H_
diff --git a/components/version_ui_strings.grdp b/components/version_ui_strings.grdp
new file mode 100644
index 0000000..a9d2a82
--- /dev/null
+++ b/components/version_ui_strings.grdp
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+  <message name="IDS_VERSION_UI_TITLE" desc="Title on the about:version page">
+    About Version
+  </message>
+  <message name="IDS_VERSION_UI_OFFICIAL" desc="official build on the about:version page">
+    Official Build
+  </message>
+  <message name="IDS_VERSION_UI_UNOFFICIAL" desc="unofficial build on the about:version page">
+    Developer Build
+  </message>
+  <message name="IDS_VERSION_UI_32BIT" desc="32-bit on the chrome://version page">
+    (32-bit)
+  </message>
+  <message name="IDS_VERSION_UI_64BIT" desc="64-bit on the chrome://version page">
+    (64-bit)
+  </message>
+  <message name="IDS_VERSION_UI_REVISION" desc="label for the revision on the about:version page">
+    Revision
+  </message>
+  <message name="IDS_VERSION_UI_OS" desc="label for the OS on the about:version page">
+    OS
+  </message>
+  <message name="IDS_VERSION_UI_USER_AGENT" desc="label for the user agent on the about:version page">
+    User Agent
+  </message>
+  <message name="IDS_VERSION_UI_COMMAND_LINE" desc="label for the command line on the about:version page">
+    Command Line
+  </message>
+<if expr="chromeos">
+  <message name="IDS_VERSION_UI_BUILD_DATE" desc="label for build date on the about:version page">
+    Build Date
+  </message>
+</if>
+  <message name="IDS_VERSION_UI_EXECUTABLE_PATH" desc="label for the executable path on the about:version page">
+    Executable Path
+  </message>
+  <message name="IDS_VERSION_UI_PROFILE_PATH" desc="label for the profile path on the about:version page">
+    Profile Path
+  </message>
+  <message name="IDS_VERSION_UI_PATH_NOTFOUND" desc="label for the non-existent path on the about:version page">
+    No such file or directory
+  </message>
+  <message name="IDS_VERSION_UI_VARIATIONS" desc="label for the variations list on the about:version page">
+    Variations
+  </message>
+<if expr="is_android">
+  <message name="IDS_VERSION_UI_BUILD_ID" desc="label for the build identifier on the about:version page">
+    Build ID
+  </message>
+</if>
+</grit-part>
diff --git a/components/visitedlink/browser/BUILD.gn b/components/visitedlink/browser/BUILD.gn
index fa2e70ce..a8ce9ea7 100644
--- a/components/visitedlink/browser/BUILD.gn
+++ b/components/visitedlink/browser/BUILD.gn
@@ -16,5 +16,6 @@
     "//components/visitedlink/common",
     "//content/public/browser",
     "//content/public/common",
+    "//url",
   ]
 }
diff --git a/components/visitedlink/renderer/BUILD.gn b/components/visitedlink/renderer/BUILD.gn
index 2b95684..01a11f07 100644
--- a/components/visitedlink/renderer/BUILD.gn
+++ b/components/visitedlink/renderer/BUILD.gn
@@ -12,6 +12,7 @@
 
   deps = [
     "//base",
+    "//components/visitedlink/common",
     "//content/public/common",
     "//content/public/renderer",
     "//third_party/WebKit/public:blink",
diff --git a/components/visitedlink/test/BUILD.gn b/components/visitedlink/test/BUILD.gn
index 7af6d3d8..e74caca 100644
--- a/components/visitedlink/test/BUILD.gn
+++ b/components/visitedlink/test/BUILD.gn
@@ -11,7 +11,9 @@
   configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
 
   deps = [
+    "//base",
     "//components/visitedlink/browser",
+    "//components/visitedlink/common",
     "//components/visitedlink/renderer",
     "//content/test:test_support",
     "//testing/gtest",
diff --git a/components/web_resource/BUILD.gn b/components/web_resource/BUILD.gn
index da7869a7..4b24750 100644
--- a/components/web_resource/BUILD.gn
+++ b/components/web_resource/BUILD.gn
@@ -30,6 +30,7 @@
   deps = [
     "//base",
     "//base:prefs",
+    "//components/google/core/browser",
     "//components/pref_registry",
     "//components/version_info",
     "//net",
@@ -66,6 +67,8 @@
     ":test_support",
     "//base",
     "//base:prefs_test_support",
+    "//components/version_info",
+    "//net:test_support",
     "//testing/gtest",
     "//third_party/icu",
   ]
diff --git a/components/webusb/BUILD.gn b/components/webusb/BUILD.gn
index c9e9ca1..e15770d 100644
--- a/components/webusb/BUILD.gn
+++ b/components/webusb/BUILD.gn
@@ -2,7 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-static_library("webusb") {
+source_set("webusb") {
   sources = [
     "webusb_browser_client.h",
     "webusb_detector.cc",
@@ -24,9 +24,12 @@
 
   deps = [
     ":webusb",
+    "//base",
+    "//device/core",
     "//device/usb",
     "//device/usb:mocks",
     "//testing/gmock",
     "//testing/gtest",
+    "//url",
   ]
 }
diff --git a/content/browser/compositor/delegated_frame_host.cc b/content/browser/compositor/delegated_frame_host.cc
index ca8a0d87..abc001e 100644
--- a/content/browser/compositor/delegated_frame_host.cc
+++ b/content/browser/compositor/delegated_frame_host.cc
@@ -254,7 +254,7 @@
   resize_lock_->UnlockCompositor();
 }
 
-void DelegatedFrameHost::AttemptFrameSubscriberCapture(
+void DelegatedFrameHost::DidReceiveFrameFromRenderer(
     const gfx::Rect& damage_rect) {
   if (!frame_subscriber() || !CanCopyToVideoFrame())
     return;
@@ -298,25 +298,14 @@
   // screenshots) since those copy requests do not specify |frame_subscriber()|
   // as a source.
   request->set_source(frame_subscriber());
+  request->set_area(gfx::Rect(current_frame_size_in_dip_));
   if (subscriber_texture.get()) {
     request->SetTextureMailbox(
         cc::TextureMailbox(subscriber_texture->mailbox(),
                            subscriber_texture->target(),
                            subscriber_texture->sync_point()));
   }
-
-  if (surface_factory_.get()) {
-    // To avoid unnecessary composites, go directly to the Surface rather than
-    // through RequestCopyOfOutput (which goes through the browser
-    // compositor).
-    if (!request_copy_of_output_callback_for_testing_.is_null())
-      request_copy_of_output_callback_for_testing_.Run(request.Pass());
-    else
-      surface_factory_->RequestCopyOfSurface(surface_id_, request.Pass());
-  } else {
-    request->set_area(gfx::Rect(current_frame_size_in_dip_));
-    RequestCopyOfOutput(request.Pass());
-  }
+  RequestCopyOfOutput(request.Pass());
 }
 
 void DelegatedFrameHost::SwapDelegatedFrame(
@@ -486,10 +475,7 @@
   } else {
     AddOnCommitCallbackAndDisableLocks(base::Closure());
   }
-  // With Surfaces, the notification that the surface will be drawn notifies
-  // the frame subscriber.
-  if (!use_surfaces_)
-    AttemptFrameSubscriberCapture(damage_rect);
+  DidReceiveFrameFromRenderer(damage_rect);
   if (frame_provider_.get() || !surface_id_.is_null())
     delegated_frame_evictor_->SwappedFrame(
         client_->DelegatedFrameHostIsVisible());
@@ -550,13 +536,6 @@
     SendReturnedDelegatedResources(last_output_surface_id_);
 }
 
-void DelegatedFrameHost::WillDrawSurface(cc::SurfaceId id,
-                                         const gfx::Rect& damage_rect) {
-  if (id != surface_id_)
-    return;
-  AttemptFrameSubscriberCapture(damage_rect);
-}
-
 void DelegatedFrameHost::EvictDelegatedFrame() {
   client_->DelegatedFrameHostGetLayer()->SetShowSolidColorContent();
   frame_provider_ = NULL;
diff --git a/content/browser/compositor/delegated_frame_host.h b/content/browser/compositor/delegated_frame_host.h
index c9662cbc..aa3ce5b1 100644
--- a/content/browser/compositor/delegated_frame_host.h
+++ b/content/browser/compositor/delegated_frame_host.h
@@ -116,7 +116,6 @@
 
   // cc::SurfaceFactoryClient implementation.
   void ReturnResources(const cc::ReturnedResourceArray& resources) override;
-  void WillDrawSurface(cc::SurfaceId id, const gfx::Rect& damage_rect) override;
 
   bool CanCopyToBitmap() const;
 
@@ -247,7 +246,7 @@
 
   // Called to consult the current |frame_subscriber_|, to determine and maybe
   // initiate a copy-into-video-frame request.
-  void AttemptFrameSubscriberCapture(const gfx::Rect& damage_rect);
+  void DidReceiveFrameFromRenderer(const gfx::Rect& damage_rect);
 
   DelegatedFrameHostClient* const client_;
   ui::Compositor* compositor_;
diff --git a/content/browser/devtools/service_worker_devtools_manager.cc b/content/browser/devtools/service_worker_devtools_manager.cc
index 0252039..2eae6ab 100644
--- a/content/browser/devtools/service_worker_devtools_manager.cc
+++ b/content/browser/devtools/service_worker_devtools_manager.cc
@@ -170,8 +170,7 @@
     const ServiceWorkerIdentifier& service_worker_id) {
   AgentHostMap::iterator it = workers_.begin();
   for (; it != workers_.end(); ++it) {
-    if (static_cast<ServiceWorkerDevToolsAgentHost*>(
-            it->second)->Matches(service_worker_id))
+    if (it->second->Matches(service_worker_id))
       break;
   }
   return it;
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index 9145cc0..0b09f0f 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -21,7 +21,6 @@
 #include "content/browser/compositor/resize_lock.h"
 #include "content/browser/compositor/test/no_transport_image_transport_factory.h"
 #include "content/browser/frame_host/render_widget_host_view_guest.h"
-#include "content/browser/gpu/compositor_util.h"
 #include "content/browser/renderer_host/input/input_router.h"
 #include "content/browser/renderer_host/input/web_input_event_util.h"
 #include "content/browser/renderer_host/overscroll_controller.h"
@@ -193,14 +192,12 @@
 class FakeFrameSubscriber : public RenderWidgetHostViewFrameSubscriber {
  public:
   FakeFrameSubscriber(gfx::Size size, base::Callback<void(bool)> callback)
-      : size_(size), callback_(callback), should_capture_(true) {}
+      : size_(size), callback_(callback) {}
 
   bool ShouldCaptureFrame(const gfx::Rect& damage_rect,
                           base::TimeTicks present_time,
                           scoped_refptr<media::VideoFrame>* storage,
                           DeliverFrameCallback* callback) override {
-    if (!should_capture_)
-      return false;
     last_present_time_ = present_time;
     *storage = media::VideoFrame::CreateFrame(media::PIXEL_FORMAT_YV12, size_,
                                               gfx::Rect(size_), size_,
@@ -211,10 +208,6 @@
 
   base::TimeTicks last_present_time() const { return last_present_time_; }
 
-  void set_should_capture(bool should_capture) {
-    should_capture_ = should_capture;
-  }
-
   static void CallbackMethod(base::Callback<void(bool)> callback,
                              base::TimeTicks present_time,
                              bool success) {
@@ -225,7 +218,6 @@
   gfx::Size size_;
   base::Callback<void(bool)> callback_;
   base::TimeTicks last_present_time_;
-  bool should_capture_;
 };
 
 class FakeWindowEventDispatcher : public aura::WindowEventDispatcher {
@@ -2244,10 +2236,7 @@
   void RunLoopUntilCallback() {
     base::RunLoop run_loop;
     quit_closure_ = run_loop.QuitClosure();
-    // Temporarily ignore real draw requests.
-    frame_subscriber_->set_should_capture(false);
     run_loop.Run();
-    frame_subscriber_->set_should_capture(true);
   }
 
   void InitializeView() {
@@ -2279,10 +2268,6 @@
   void OnSwapCompositorFrame() {
     view_->OnSwapCompositorFrame(
         1, MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_));
-    cc::SurfaceId surface_id =
-        view_->GetDelegatedFrameHost()->SurfaceIdForTesting();
-    if (!surface_id.is_null())
-      view_->GetDelegatedFrameHost()->WillDrawSurface(surface_id, view_rect_);
     ASSERT_TRUE(view_->last_copy_request_);
   }
 
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
index 5efdd30..840b84c6 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -149,6 +149,9 @@
     return;
   }
   DCHECK(status_ == STOPPED);
+  // TODO(horo): If we will see crashes here, we have to find the root cause of
+  // the invalid version ID. Otherwise change CHECK to DCHECK.
+  CHECK_NE(service_worker_version_id, kInvalidServiceWorkerVersionId);
   start_timing_ = base::TimeTicks::Now();
   status_ = STARTING;
   starting_phase_ = ALLOCATING_PROCESS;
diff --git a/extensions/browser/api/printer_provider/printer_provider_api.cc b/extensions/browser/api/printer_provider/printer_provider_api.cc
index 8b02814d..b5d16a8e 100644
--- a/extensions/browser/api/printer_provider/printer_provider_api.cc
+++ b/extensions/browser/api/printer_provider/printer_provider_api.cc
@@ -594,7 +594,7 @@
   print_job.printer_id = internal_printer_id;
 
   JSONStringValueDeserializer deserializer(job.ticket_json);
-  scoped_ptr<base::Value> ticket_value(deserializer.Deserialize(NULL, NULL));
+  scoped_ptr<base::Value> ticket_value = deserializer.Deserialize(NULL, NULL);
   if (!ticket_value ||
       !api::printer_provider::PrintJob::Ticket::Populate(*ticket_value,
                                                          &print_job.ticket)) {
diff --git a/extensions/browser/extension_icon_image_unittest.cc b/extensions/browser/extension_icon_image_unittest.cc
index 88c2fe41..35a8b5c 100644
--- a/extensions/browser/extension_icon_image_unittest.cc
+++ b/extensions/browser/extension_icon_image_unittest.cc
@@ -104,9 +104,8 @@
     std::string error;
     JSONFileValueDeserializer deserializer(
         test_file.AppendASCII("manifest.json"));
-    scoped_ptr<base::DictionaryValue> valid_value(
-        static_cast<base::DictionaryValue*>(
-            deserializer.Deserialize(&error_code, &error)));
+    scoped_ptr<base::DictionaryValue> valid_value = base::DictionaryValue::From(
+        deserializer.Deserialize(&error_code, &error));
     EXPECT_EQ(0, error_code) << error;
     if (error_code != 0)
       return NULL;
diff --git a/extensions/browser/image_loader_unittest.cc b/extensions/browser/image_loader_unittest.cc
index 530a006b..4039b579b 100644
--- a/extensions/browser/image_loader_unittest.cc
+++ b/extensions/browser/image_loader_unittest.cc
@@ -83,9 +83,8 @@
     std::string error;
     JSONFileValueDeserializer deserializer(
         extension_dir.AppendASCII("manifest.json"));
-    scoped_ptr<base::DictionaryValue> valid_value(
-        static_cast<base::DictionaryValue*>(
-            deserializer.Deserialize(&error_code, &error)));
+    scoped_ptr<base::DictionaryValue> valid_value = base::DictionaryValue::From(
+        deserializer.Deserialize(&error_code, &error));
     EXPECT_EQ(0, error_code) << error;
     if (error_code != 0)
       return NULL;
diff --git a/extensions/common/extension_l10n_util.cc b/extensions/common/extension_l10n_util.cc
index dd96b07..c4ebbe9 100644
--- a/extensions/common/extension_l10n_util.cc
+++ b/extensions/common/extension_l10n_util.cc
@@ -39,7 +39,8 @@
   base::FilePath file =
       locale_path.AppendASCII(locale).Append(extensions::kMessagesFilename);
   JSONFileValueDeserializer messages_deserializer(file);
-  base::Value* dictionary = messages_deserializer.Deserialize(NULL, error);
+  scoped_ptr<base::DictionaryValue> dictionary = base::DictionaryValue::From(
+      messages_deserializer.Deserialize(NULL, error));
   if (!dictionary) {
     if (error->empty()) {
       // JSONFileValueSerializer just returns NULL if file cannot be found. It
@@ -54,7 +55,7 @@
     }
   }
 
-  return static_cast<base::DictionaryValue*>(dictionary);
+  return dictionary.release();
 }
 
 // Localizes manifest value of string type for a given key.
diff --git a/extensions/common/file_util_unittest.cc b/extensions/common/file_util_unittest.cc
index df82b82..0814334b 100644
--- a/extensions/common/file_util_unittest.cc
+++ b/extensions/common/file_util_unittest.cc
@@ -44,7 +44,7 @@
     int extra_flags,
     std::string* error) {
   JSONStringValueDeserializer deserializer(manifest_value);
-  scoped_ptr<base::Value> result(deserializer.Deserialize(NULL, error));
+  scoped_ptr<base::Value> result = deserializer.Deserialize(NULL, error);
   if (!result.get())
     return NULL;
   CHECK_EQ(base::Value::TYPE_DICTIONARY, result->GetType());
diff --git a/extensions/common/manifest_test.cc b/extensions/common/manifest_test.cc
index 048e183..37034b59 100644
--- a/extensions/common/manifest_test.cc
+++ b/extensions/common/manifest_test.cc
@@ -29,7 +29,7 @@
 
   JSONFileValueDeserializer deserializer(manifest_path);
   base::DictionaryValue* manifest = static_cast<base::DictionaryValue*>(
-      deserializer.Deserialize(NULL, error));
+      deserializer.Deserialize(NULL, error).release());
 
   // Most unit tests don't need localization, and they'll fail if we try to
   // localize them, since their manifests don't have a default_locale key.
diff --git a/extensions/renderer/resources/stash_client.js b/extensions/renderer/resources/stash_client.js
index b7f50fe3..56f289fb 100644
--- a/extensions/renderer/resources/stash_client.js
+++ b/extensions/renderer/resources/stash_client.js
@@ -163,6 +163,6 @@
   return {
     registerClient: registerClient,
     retrieve: retrieve,
-    saveStashForTesting, saveStashForTesting,
+    saveStashForTesting: saveStashForTesting,
   };
 });
diff --git a/extensions/utility/unpacker.cc b/extensions/utility/unpacker.cc
index 6e28a49b..f499808 100644
--- a/extensions/utility/unpacker.cc
+++ b/extensions/utility/unpacker.cc
@@ -121,7 +121,7 @@
 
   JSONFileValueDeserializer deserializer(manifest_path);
   std::string error;
-  scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, &error));
+  scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, &error);
   if (!root.get()) {
     SetError(error);
     return NULL;
@@ -253,8 +253,8 @@
 bool Unpacker::ReadMessageCatalog(const base::FilePath& message_path) {
   std::string error;
   JSONFileValueDeserializer deserializer(message_path);
-  scoped_ptr<base::DictionaryValue> root = base::DictionaryValue::From(
-      make_scoped_ptr(deserializer.Deserialize(NULL, &error)));
+  scoped_ptr<base::DictionaryValue> root =
+      base::DictionaryValue::From(deserializer.Deserialize(NULL, &error));
   if (!root.get()) {
     base::string16 messages_file = message_path.LossyDisplayName();
     if (error.empty()) {
diff --git a/google_apis/drive/test_util.cc b/google_apis/drive/test_util.cc
index e77aedf..e5885195 100644
--- a/google_apis/drive/test_util.cc
+++ b/google_apis/drive/test_util.cc
@@ -82,7 +82,7 @@
 
   std::string error;
   JSONFileValueDeserializer deserializer(path);
-  scoped_ptr<base::Value> value(deserializer.Deserialize(NULL, &error));
+  scoped_ptr<base::Value> value = deserializer.Deserialize(NULL, &error);
   LOG_IF(WARNING, !value.get()) << "Failed to parse " << path.value()
                                 << ": " << error;
   return value.Pass();
diff --git a/ios/chrome/browser/application_context_impl.cc b/ios/chrome/browser/application_context_impl.cc
index e86a64b..c95a0af 100644
--- a/ios/chrome/browser/application_context_impl.cc
+++ b/ios/chrome/browser/application_context_impl.cc
@@ -80,7 +80,7 @@
   DCHECK(thread_checker_.CalledOnValidThread());
 
   PrefService* local_state = GetLocalState();
-  local_state->SetBoolean(prefs::kLastSessionExitedCleanly, true);
+  local_state->SetBoolean(prefs::kLastSessionExitedCleanly, false);
 
   // Tell the metrics service that the application resumes.
   metrics::MetricsService* metrics_service = GetMetricsService();
diff --git a/mandoline/BUILD.gn b/mandoline/BUILD.gn
index b14dfd2..bc32cb0 100644
--- a/mandoline/BUILD.gn
+++ b/mandoline/BUILD.gn
@@ -45,7 +45,7 @@
       "//components/html_viewer:apptests",
       "//components/html_viewer:html_viewer_unittests",
       "//components/html_viewer:layout_test_html_viewer",
-      "//components/mus/vm:tests",
+      "//components/mus/ws:tests",
       "//components/resource_provider:apptests",
       "//components/resource_provider:resource_provider_unittests",
       "//components/web_view:apptests",
diff --git a/media/audio/mac/audio_auhal_mac.cc b/media/audio/mac/audio_auhal_mac.cc
index 9f665fc..d8166c4c 100644
--- a/media/audio/mac/audio_auhal_mac.cc
+++ b/media/audio/mac/audio_auhal_mac.cc
@@ -50,7 +50,7 @@
       audio_unit_(0),
       volume_(1),
       hardware_latency_frames_(0),
-      stopped_(false),
+      stopped_(true),
       current_hardware_pending_bytes_(0) {
   // We must have a manager.
   DCHECK(manager_);
@@ -63,9 +63,15 @@
 }
 
 AUHALStream::~AUHALStream() {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  CHECK(!audio_unit_);
 }
 
 bool AUHALStream::Open() {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK(!output_bus_.get());
+  DCHECK(!audio_unit_);
+
   // Get the total number of output channels that the
   // hardware supports.
   int device_output_channels;
@@ -103,27 +109,26 @@
 }
 
 void AUHALStream::Close() {
-  if (audio_unit_) {
-    OSStatus result = AudioUnitUninitialize(audio_unit_);
-    OSSTATUS_DLOG_IF(ERROR, result != noErr, result)
-        << "AudioUnitUninitialize() failed.";
-    result = AudioComponentInstanceDispose(audio_unit_);
-    OSSTATUS_DLOG_IF(ERROR, result != noErr, result)
-        << "AudioComponentInstanceDispose() failed.";
-  }
-
+  DCHECK(thread_checker_.CalledOnValidThread());
+  CloseAudioUnit();
   // Inform the audio manager that we have been closed. This will cause our
   // destruction.
   manager_->ReleaseOutputStream(this);
 }
 
 void AUHALStream::Start(AudioSourceCallback* callback) {
+  DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK(callback);
   if (!audio_unit_) {
     DLOG(ERROR) << "Open() has not been called successfully";
     return;
   }
 
+  if (!stopped_) {
+    CHECK_EQ(source_, callback);
+    return;
+  }
+
   // Check if we should defer Start() for http://crbug.com/160920.
   if (manager_->ShouldDeferStreamStart()) {
     // Use a cancellable closure so that if Stop() is called before Start()
@@ -153,6 +158,7 @@
 }
 
 void AUHALStream::Stop() {
+  DCHECK(thread_checker_.CalledOnValidThread());
   deferred_start_cb_.Cancel();
   if (stopped_)
     return;
@@ -355,6 +361,7 @@
 }
 
 bool AUHALStream::ConfigureAUHAL() {
+  DCHECK(thread_checker_.CalledOnValidThread());
   if (device_ == kAudioObjectUnknown || output_channels_ == 0)
     return false;
 
@@ -387,8 +394,10 @@
       0,
       &enable_IO,
       sizeof(enable_IO));
-  if (result != noErr)
+  if (result != noErr) {
+    CloseAudioUnit();
     return false;
+  }
 
   // Set the device to be used with the AUHAL AudioUnit.
   result = AudioUnitSetProperty(
@@ -398,8 +407,10 @@
       0,
       &device_,
       sizeof(AudioDeviceID));
-  if (result != noErr)
+  if (result != noErr) {
+    CloseAudioUnit();
     return false;
+  }
 
   // Set stream formats.
   // See Apple's tech note for details on the peculiar way that
@@ -411,12 +422,15 @@
                        output_channels_,
                        kAudioUnitScope_Input,
                        0)) {
+    CloseAudioUnit();
     return false;
   }
 
   if (!manager_->MaybeChangeBufferSize(
-          device_, audio_unit_, 0, number_of_frames_))
+          device_, audio_unit_, 0, number_of_frames_)) {
+    CloseAudioUnit();
     return false;
+  }
 
   // Setup callback.
   AURenderCallbackStruct callback;
@@ -429,16 +443,33 @@
       0,
       &callback,
       sizeof(callback));
-  if (result != noErr)
+  if (result != noErr) {
+    CloseAudioUnit();
     return false;
+  }
 
   result = AudioUnitInitialize(audio_unit_);
   if (result != noErr) {
     OSSTATUS_DLOG(ERROR, result) << "AudioUnitInitialize() failed.";
+    CloseAudioUnit();
     return false;
   }
 
   return true;
 }
 
+void AUHALStream::CloseAudioUnit() {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  if (!audio_unit_)
+    return;
+
+  OSStatus result = AudioUnitUninitialize(audio_unit_);
+  OSSTATUS_DLOG_IF(ERROR, result != noErr, result)
+      << "AudioUnitUninitialize() failed.";
+  result = AudioComponentInstanceDispose(audio_unit_);
+  OSSTATUS_DLOG_IF(ERROR, result != noErr, result)
+      << "AudioComponentInstanceDispose() failed.";
+  audio_unit_ = 0;
+}
+
 }  // namespace media
diff --git a/media/audio/mac/audio_auhal_mac.h b/media/audio/mac/audio_auhal_mac.h
index 62b08e86..ddc22927 100644
--- a/media/audio/mac/audio_auhal_mac.h
+++ b/media/audio/mac/audio_auhal_mac.h
@@ -23,6 +23,7 @@
 #include "base/cancelable_callback.h"
 #include "base/compiler_specific.h"
 #include "base/synchronization/lock.h"
+#include "base/threading/thread_checker.h"
 #include "media/audio/audio_io.h"
 #include "media/audio/audio_parameters.h"
 
@@ -36,18 +37,22 @@
 // It is useful for low-latency output.
 //
 // Overview of operation:
-// 1) An object of AUHALStream is created by the AudioManager
-// factory: audio_man->MakeAudioStream().
-// 2) Next some thread will call Open(), at that point the underlying
-// AUHAL Audio Unit is created and configured to use the |device|.
-// 3) Then some thread will call Start(source).
-// Then the AUHAL is started which creates its own thread which
-// periodically will call the source for more data as buffers are being
-// consumed.
-// 4) At some point some thread will call Stop(), which we handle by directly
-// stopping the default output Audio Unit.
-// 6) The same thread that called stop will call Close() where we cleanup
-// and notify the audio manager, which likely will destroy this object.
+// 1) An object of AUHALStream is created by the AudioManager factory on the
+//    object's main thread via audio_man->MakeAudioStream().  Calls to the
+//    control routines (Open/Close/Start/Stop), must be made on this thread.
+// 2) Next Open() will be called. At that point the underlying AUHAL Audio Unit
+//    is created and configured to use the |device|.
+// 3) Then Start(source) is called and the device is started which creates its
+//    own thread (or uses an existing background thread) on which the AUHAL's
+//    callback will periodically ask for more data as buffers are being
+//    consumed.
+//    Note that all AUHAL instances receive callbacks on that very same
+//    thread, so avoid any contention in the callback as to not cause delays for
+//    other instances.
+// 4) At some point Stop() will be called, which we handle by stopping the
+//    output Audio Unit.
+// 6) Lastly, Close() will be called where we cleanup and notify the audio
+//    manager, which will delete the object.
 
 class AUHALStream : public AudioOutputStream {
  public:
@@ -101,6 +106,9 @@
   // Creates the AUHAL, sets its stream format, buffer-size, etc.
   bool ConfigureAUHAL();
 
+  // Uninitializes audio_unit_ if needed.
+  void CloseAudioUnit();
+
   // Creates the input and output busses.
   void CreateIOBusses();
 
@@ -144,7 +152,7 @@
   // Fixed playout hardware latency in frames.
   double hardware_latency_frames_;
 
-  // The flag used to stop the streaming.
+  // This flag will be set to false while we're actively receiving callbacks.
   bool stopped_;
 
   // Container for retrieving data from AudioSourceCallback::OnMoreData().
@@ -160,6 +168,10 @@
   // Used to defer Start() to workaround http://crbug.com/160920.
   base::CancelableClosure deferred_start_cb_;
 
+  // Used to make sure control functions (Start(), Stop() etc) are called on the
+  // right thread.
+  base::ThreadChecker thread_checker_;
+
   DISALLOW_COPY_AND_ASSIGN(AUHALStream);
 };
 
diff --git a/mojo/runner/BUILD.gn b/mojo/runner/BUILD.gn
index 016f383..dc61e16 100644
--- a/mojo/runner/BUILD.gn
+++ b/mojo/runner/BUILD.gn
@@ -54,7 +54,7 @@
     deps += [
       ":jni_headers",
       "//components/mus",
-      "//components/mus/vm:lib",
+      "//components/mus/ws:lib",
       "//mojo/shell",
       "//ui/gl",
       "//ui/platform_window/android",
@@ -302,7 +302,7 @@
       ":bootstrap",
       ":bootstrap_java",
       "//components/clipboard:apptests",
-      "//components/mus/vm:apptests",
+      "//components/mus/ws:apptests",
       "//components/resource_provider:apptests",
       "//mojo/services/network:apptests",
     ]
diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc
index 777d721..72b5b3f3 100644
--- a/net/http/http_network_session.cc
+++ b/net/http/http_network_session.cc
@@ -118,7 +118,7 @@
       quic_threshold_public_resets_post_handshake(0),
       quic_threshold_timeouts_streams_open(0),
       proxy_delegate(NULL) {
-  quic_supported_versions.push_back(QUIC_VERSION_25);
+  quic_supported_versions.push_back(QUIC_VERSION_27);
 }
 
 HttpNetworkSession::Params::~Params() {}
diff --git a/net/http/http_network_session.h b/net/http/http_network_session.h
index 27ed595..75aea107 100644
--- a/net/http/http_network_session.h
+++ b/net/http/http_network_session.h
@@ -84,7 +84,9 @@
     uint16 testing_fixed_https_port;
     bool enable_tcp_fast_open_for_ssl;
 
+    // Compress SPDY headers.
     bool enable_spdy_compression;
+    // Use SPDY ping frames to test for connection health after idle.
     bool enable_spdy_ping_based_connection_checking;
     NextProto spdy_default_protocol;
     // The protocols supported by NPN (next protocol negotiation) during the
@@ -96,40 +98,77 @@
     size_t spdy_session_max_recv_window_size;
     size_t spdy_stream_max_recv_window_size;
     size_t spdy_initial_max_concurrent_streams;
+    // Source of time for SPDY connections.
     SpdySessionPool::TimeFunc time_func;
+    // This SPDY proxy is allowed to push resources from origins that are
+    // different from those of their associated streams.
     std::string trusted_spdy_proxy;
     // URLs to exclude from forced SPDY.
     std::set<HostPortPair> forced_spdy_exclusions;
+    // Process Alt-Svc headers.
     bool use_alternative_services;
+    // Only honor alternative service entries which have a higher probability
+    // than this value.
     double alternative_service_probability_threshold;
 
+    // Enables QUIC support.
     bool enable_quic;
+    // Enables insecure QUIC (http:// URLs) support, if enable_quic is true.
     bool enable_insecure_quic;
+    // Enables QUIC for proxies.
     bool enable_quic_for_proxies;
+    // Instruct QUIC to use consistent ephemeral ports when talking to
+    // the same server.
     bool enable_quic_port_selection;
+    // Disables QUIC's 0-RTT behavior.
     bool quic_always_require_handshake_confirmation;
+    // Disables QUIC connection pooling.
     bool quic_disable_connection_pooling;
+    // If not zero, the task to load QUIC server configs from the disk cache
+    // will timeout after this value multiplied by the smoothed RTT for the
+    // server.
     float quic_load_server_info_timeout_srtt_multiplier;
+    // Causes QUIC to race reading the server config from disk with
+    // sending an inchoate CHLO.
     bool quic_enable_connection_racing;
+    // Use non-blocking IO for UDP sockets.
     bool quic_enable_non_blocking_io;
+    // Disables using the disk cache to store QUIC server configs.
     bool quic_disable_disk_cache;
+    // Prefer AES-GCM to ChaCha20 even if no hardware support is present.
     bool quic_prefer_aes;
+    // Specifies the maximum number of connections with high packet loss in
+    // a row after which QUIC will be disabled.
     int quic_max_number_of_lossy_connections;
+    // Specifies packet loss rate in fraction after which a connection is
+    // closed and is considered as a lossy connection.
     float quic_packet_loss_threshold;
+    // Size in bytes of the QUIC DUP socket receive buffer.
     int quic_socket_receive_buffer_size;
+    // Delay starting a TCP connection when QUIC believes it can speak
+    // 0-RTT to a server.
     bool quic_delay_tcp_race;
+    // Store server configs in HttpServerProperties, instead of the disk cache.
     bool quic_store_server_configs_in_properties;
+    // If not empty, QUIC will be used for all connections to this origin.
     HostPortPair origin_to_force_quic_on;
-    QuicClock* quic_clock;  // Will be owned by QuicStreamFactory.
+    // Source of time for QUIC connections. Will be owned by QuicStreamFactory.
+    QuicClock* quic_clock;
+    // Source of entropy for QUIC connections.
     QuicRandom* quic_random;
+    // Limit on the size of QUIC packets.
     size_t quic_max_packet_length;
+    // User agent description to send in the QUIC handshake.
     std::string quic_user_agent_id;
     bool enable_user_alternate_protocol_ports;
+    // Optional factory to use for creating QuicCryptoClientStreams.
     QuicCryptoClientStreamFactory* quic_crypto_client_stream_factory;
+    // Versions of QUIC which may be used.
     QuicVersionVector quic_supported_versions;
     int quic_max_recent_disabled_reasons;
     int quic_threshold_public_resets_post_handshake;
     int quic_threshold_timeouts_streams_open;
+    // Set of QUIC tags to send in the handshakes connection options.
     QuicTagVector quic_connection_options;
     ProxyDelegate* proxy_delegate;
   };
diff --git a/net/http/transport_security_state_static.h b/net/http/transport_security_state_static.h
index 783fda4..3a8dcbf 100644
--- a/net/http/transport_security_state_static.h
+++ b/net/http/transport_security_state_static.h
@@ -275,6 +275,7 @@
   DOMAIN_DROPBOXUSERCONTENT_COM,
   DOMAIN_WITHYOUTUBE_COM,
   DOMAIN_WITHGOOGLE_COM,
+  DOMAIN_G4W_CO,
   // Boundary value for UMA_HISTOGRAM_ENUMERATION.
   DOMAIN_NUM_EVENTS,
 };
@@ -2716,768 +2717,768 @@
     0x2b, 0xed, 0xda, 0x8a, 0x1d, 0x58, 0x79, 0xde, 0x2b, 0xbf, 0xda, 0x4e,
     0xa2, 0xf1, 0x43, 0xaf, 0xff, 0x3c, 0xfd, 0x48, 0x1c, 0x99, 0x38, 0x87,
     0x57, 0x8f, 0xe5, 0x93, 0x2b, 0x9b, 0x87, 0x5c, 0x0f, 0xca, 0xa4, 0x35,
-    0x9c, 0x15, 0xbf, 0xd8, 0x11, 0xcf, 0x77, 0x0e, 0xbf, 0xa7, 0xfb, 0xb6,
-    0xe3, 0xf9, 0xd7, 0xf6, 0x7b, 0xd1, 0xcd, 0x1d, 0x7f, 0x38, 0xff, 0x3f,
-    0xfe, 0x3a, 0xa1, 0x11, 0xc2, 0x67, 0xb6, 0x59, 0x66, 0x21, 0x76, 0x26,
-    0x73, 0xf0, 0xb5, 0xe4, 0x26, 0x5a, 0xe3, 0xbb, 0x97, 0x08, 0x16, 0x42,
-    0xe9, 0x43, 0x0e, 0x0d, 0x42, 0x6b, 0xc9, 0xfb, 0x08, 0x3e, 0xc2, 0xfa,
-    0xf2, 0xc1, 0xc2, 0xaf, 0xfc, 0xf2, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x26,
-    0x3b, 0xe8, 0xe4, 0x6d, 0x1d, 0x66, 0x11, 0x11, 0x2b, 0x1c, 0xea, 0x55,
-    0xf4, 0x4f, 0x1c, 0x3a, 0xfd, 0x91, 0x32, 0x2c, 0xea, 0x43, 0xc7, 0xe1,
-    0x0d, 0xfe, 0xec, 0x72, 0x7f, 0xa0, 0xfc, 0xeb, 0x9f, 0x47, 0x5f, 0x7c,
-    0xf6, 0x74, 0xeb, 0x47, 0x4d, 0xc6, 0x85, 0x6f, 0x40, 0xce, 0x75, 0xff,
-    0xff, 0xf4, 0xb5, 0xdc, 0x03, 0x3a, 0xee, 0x37, 0x35, 0xf3, 0x37, 0x96,
-    0x90, 0x50, 0xeb, 0xce, 0xed, 0x34, 0x56, 0x37, 0xcf, 0xf6, 0x14, 0x3a,
-    0x9a, 0x79, 0x5c, 0x27, 0xbf, 0xf6, 0xde, 0x78, 0x70, 0x10, 0x3e, 0x3a,
-    0x94, 0x4d, 0xa9, 0xa4, 0xdb, 0x8d, 0xf2, 0x19, 0x3e, 0x22, 0xbf, 0xf8,
-    0x7c, 0xa0, 0x20, 0x71, 0xb1, 0xc3, 0xaf, 0xf7, 0x27, 0xf6, 0x9f, 0x76,
-    0x9d, 0x50, 0x7e, 0xee, 0x85, 0x7f, 0x46, 0xd7, 0xb3, 0x79, 0x8e, 0xbf,
-    0x81, 0xb6, 0xde, 0xa2, 0xa4, 0xeb, 0xfb, 0x35, 0xbc, 0xa3, 0xa7, 0x5d,
-    0x1b, 0x0e, 0xb0, 0x7a, 0x78, 0x82, 0x5b, 0x7f, 0xd1, 0xbc, 0xa6, 0x93,
-    0xf2, 0x73, 0xaa, 0x11, 0xb5, 0x8f, 0x08, 0x4f, 0x7a, 0x25, 0xe3, 0xaf,
-    0xfd, 0x81, 0xe2, 0x02, 0x7f, 0xf5, 0x23, 0xaf, 0x96, 0xfb, 0xf8, 0xeb,
-    0xff, 0xa7, 0x8f, 0x7c, 0xfa, 0xdf, 0xbb, 0x5f, 0x74, 0x75, 0xff, 0x72,
-    0x34, 0xfc, 0x18, 0x91, 0xd5, 0xc4, 0x43, 0xec, 0x51, 0xbd, 0x27, 0x9c,
-    0xeb, 0xdf, 0x27, 0x59, 0xd7, 0x07, 0xc7, 0x52, 0xa9, 0x31, 0xfc, 0x85,
-    0x4e, 0xe4, 0xa8, 0x38, 0x23, 0xf7, 0xfe, 0x17, 0x0f, 0x63, 0x67, 0x5c,
-    0x4e, 0xbf, 0xff, 0xf0, 0x27, 0xc6, 0xfc, 0x10, 0x6d, 0x7c, 0xcd, 0xe5,
-    0x80, 0x1f, 0xf4, 0x75, 0xff, 0x3e, 0xe3, 0x81, 0xeb, 0xb2, 0x75, 0x05,
-    0x1d, 0x42, 0x7b, 0xa7, 0x5b, 0xfa, 0x79, 0xa4, 0xaa, 0xe4, 0xe7, 0x5f,
-    0x08, 0xe7, 0x8e, 0xa5, 0x64, 0xf5, 0x20, 0xd6, 0xfe, 0x9f, 0xee, 0xdb,
-    0x8f, 0xe7, 0x5f, 0xfd, 0x37, 0x5d, 0x7e, 0xec, 0x78, 0x0b, 0x3a, 0xff,
-    0x92, 0x49, 0xd0, 0x2d, 0x68, 0x75, 0x42, 0x2b, 0xf0, 0xcf, 0xc8, 0xb7,
-    0xba, 0x8c, 0x43, 0x21, 0x5e, 0x44, 0x39, 0x1e, 0xcb, 0x61, 0x93, 0xc2,
-    0x0e, 0xc6, 0x16, 0xe5, 0xa2, 0x37, 0xa8, 0xd7, 0xfd, 0x19, 0xe6, 0xdc,
-    0x20, 0xfe, 0xc3, 0x56, 0xe9, 0x09, 0xd7, 0xf7, 0x39, 0x01, 0xc5, 0x9d,
-    0x77, 0xdf, 0xce, 0xbd, 0xd4, 0x59, 0xd6, 0x98, 0xea, 0x73, 0x58, 0x01,
-    0xbb, 0xf3, 0x8c, 0xe0, 0xd1, 0xd7, 0xfd, 0x01, 0xee, 0x07, 0x8e, 0xd3,
-    0xa9, 0x11, 0xdf, 0xf9, 0x60, 0xa2, 0xe8, 0x83, 0xc4, 0xf7, 0xb5, 0xf7,
-    0x47, 0x5f, 0x6f, 0x3c, 0x28, 0x75, 0x04, 0xf0, 0x80, 0x3d, 0x77, 0xa0,
-    0xeb, 0xf2, 0xf0, 0x62, 0x47, 0x5f, 0x03, 0xd9, 0xa3, 0xaf, 0xa3, 0x8e,
-    0x27, 0x5f, 0xe7, 0xe4, 0xbf, 0x4d, 0xf4, 0x75, 0xf6, 0xb5, 0x1f, 0x9d,
-    0x50, 0x8b, 0xb4, 0x25, 0xe9, 0x08, 0x07, 0xd9, 0x34, 0xbe, 0x97, 0xe0,
-    0x91, 0xd7, 0xdc, 0xfb, 0x1f, 0x9d, 0x50, 0x78, 0xe8, 0x47, 0x7f, 0x92,
-    0x77, 0x5f, 0xff, 0xc1, 0xd7, 0xfc, 0x8d, 0xee, 0x4c, 0x30, 0x13, 0xaf,
-    0xa5, 0xec, 0xfa, 0x75, 0xe6, 0xc7, 0xe7, 0x5e, 0xe4, 0x2c, 0xea, 0x73,
-    0xda, 0x01, 0x1b, 0x23, 0x97, 0xe8, 0x9f, 0xee, 0x4c, 0x75, 0xe8, 0x19,
-    0x1d, 0x53, 0x26, 0xb1, 0xc2, 0x0e, 0x9a, 0x0c, 0x24, 0x74, 0x5f, 0xe2,
-    0xab, 0xff, 0x46, 0x6b, 0xe4, 0x20, 0x7e, 0xc8, 0xeb, 0xf9, 0x19, 0xd4,
-    0xf8, 0xc9, 0xd4, 0x27, 0xdf, 0xe4, 0x0b, 0xf4, 0x07, 0xd8, 0xd3, 0xaf,
-    0xbb, 0x02, 0xd3, 0xaa, 0x47, 0xcf, 0xa2, 0x1f, 0x13, 0x5f, 0x38, 0xbc,
-    0xc7, 0x5f, 0x93, 0xc3, 0x92, 0x3a, 0xfa, 0x19, 0x89, 0x8e, 0xbb, 0xea,
-    0xce, 0xbf, 0xe0, 0x7c, 0xf0, 0xbf, 0xf8, 0x27, 0x54, 0xe8, 0xb8, 0x50,
-    0x81, 0x09, 0x7a, 0x44, 0x23, 0x17, 0xfa, 0x19, 0x08, 0x1f, 0x92, 0x3a,
-    0xfe, 0x4e, 0x6f, 0xa8, 0x91, 0xd6, 0xd8, 0x75, 0x70, 0xfc, 0xba, 0x67,
-    0xb4, 0x5b, 0x78, 0x51, 0x43, 0xaf, 0xb0, 0x29, 0xb0, 0xeb, 0xa1, 0x78,
-    0x6f, 0x5c, 0x6e, 0xda, 0x3a, 0x90, 0xdd, 0x39, 0x55, 0xdf, 0xc1, 0x57,
-    0x32, 0xc9, 0x54, 0x86, 0xb9, 0x91, 0x6b, 0xfc, 0xf2, 0x1c, 0xf7, 0x50,
-    0xa6, 0x0d, 0x0d, 0xe7, 0xdf, 0x47, 0x5f, 0x7d, 0xeb, 0xf8, 0xea, 0x09,
-    0xbf, 0xf0, 0xe5, 0xe8, 0x19, 0x8e, 0xb8, 0x60, 0xeb, 0x4c, 0x75, 0x4c,
-    0x78, 0x1c, 0x1b, 0x71, 0x4b, 0xff, 0x94, 0x41, 0x6e, 0xa1, 0x6f, 0xbf,
-    0x8e, 0xbd, 0xfe, 0x6d, 0x1d, 0x4a, 0x1f, 0x1f, 0x11, 0x2f, 0x97, 0xa0,
-    0x2c, 0xeb, 0x28, 0x75, 0xb6, 0xce, 0xbb, 0x8a, 0x1d, 0x50, 0x7b, 0xa8,
-    0x44, 0x01, 0x1f, 0xa2, 0x77, 0xff, 0xdd, 0xc9, 0x6a, 0x3d, 0x2c, 0x57,
-    0x71, 0xfc, 0xeb, 0xff, 0x49, 0x3d, 0xdc, 0xdf, 0xc0, 0x83, 0xae, 0xcd,
-    0x1d, 0x50, 0x7a, 0x72, 0x3e, 0xad, 0x23, 0x17, 0xd0, 0xa4, 0xbf, 0x24,
-    0x2e, 0x16, 0x75, 0xb0, 0xea, 0x43, 0xdc, 0xd1, 0x46, 0xd9, 0x2d, 0x42,
-    0xb0, 0x1c, 0x61, 0x48, 0x49, 0x76, 0x10, 0x0f, 0x1a, 0xed, 0xed, 0x44,
-    0xc7, 0x51, 0xd6, 0x59, 0xd5, 0xe2, 0xeb, 0x60, 0x55, 0xfb, 0xf4, 0xe2,
-    0x28, 0x75, 0xce, 0xa1, 0xd5, 0x32, 0x25, 0xba, 0x6d, 0xf9, 0x10, 0x94,
-    0x5d, 0xe8, 0x3a, 0xfd, 0x1d, 0xcd, 0x8e, 0x75, 0x39, 0xbc, 0xfc, 0x56,
-    0xfe, 0x4f, 0x67, 0x5d, 0x43, 0xaf, 0xee, 0x81, 0xe7, 0xea, 0x1d, 0x79,
-    0x96, 0x59, 0x2a, 0xff, 0x83, 0x13, 0xfd, 0xce, 0xbe, 0xe5, 0x30, 0x5f,
-    0xdd, 0x93, 0x9d, 0x41, 0x45, 0x6b, 0x53, 0x11, 0x2e, 0xf4, 0x2d, 0x0e,
-    0xac, 0x3c, 0x96, 0x97, 0xdf, 0x27, 0x36, 0x82, 0x75, 0xfb, 0xb1, 0xbb,
-    0xab, 0x9d, 0x7f, 0xfd, 0x1e, 0xd0, 0x73, 0xc9, 0xd0, 0x66, 0xfe, 0x3a,
-    0xba, 0x7f, 0x3e, 0x2a, 0xb7, 0x0e, 0xbf, 0xd9, 0x8d, 0xfb, 0xb3, 0xb8,
-    0x75, 0xc0, 0xd1, 0xd7, 0xff, 0xec, 0x0c, 0x66, 0xff, 0x7c, 0x82, 0x09,
-    0x66, 0x8e, 0xb9, 0x7f, 0x9d, 0x73, 0x89, 0xd5, 0xd3, 0x56, 0xe2, 0xf7,
-    0xe5, 0xa7, 0xbf, 0x73, 0xaa, 0x74, 0xf8, 0x72, 0x13, 0xaa, 0xe4, 0x53,
-    0x08, 0x39, 0xa8, 0x8b, 0x7a, 0x10, 0x00, 0x20, 0xbe, 0xef, 0x92, 0x73,
-    0xaf, 0xf3, 0x53, 0x43, 0x9b, 0x1c, 0xeb, 0xe8, 0x9d, 0xe4, 0x75, 0xd9,
-    0xe3, 0xaf, 0xd9, 0x38, 0xe6, 0xe7, 0x56, 0x22, 0xc7, 0x72, 0x2e, 0x19,
-    0x74, 0x84, 0x45, 0x6f, 0x76, 0x02, 0x75, 0xdc, 0xd1, 0xd4, 0x72, 0x16,
-    0xd7, 0xfa, 0x06, 0x4e, 0xbc, 0x09, 0xd7, 0xde, 0x5a, 0xf8, 0x75, 0xff,
-    0xdf, 0xc0, 0xb5, 0xfd, 0xff, 0xd1, 0x91, 0xd7, 0xa4, 0x9d, 0x3a, 0xfb,
-    0xc3, 0x92, 0x3a, 0xfd, 0x80, 0x54, 0xe9, 0xce, 0xbf, 0xfc, 0x9a, 0xee,
-    0x04, 0x73, 0x60, 0xe6, 0x8e, 0xa9, 0x26, 0x8a, 0xa1, 0x86, 0xe4, 0x53,
-    0x23, 0x70, 0x6c, 0x48, 0x3c, 0x55, 0x4a, 0xa6, 0xcf, 0xc6, 0x23, 0x04,
-    0x9e, 0x11, 0x72, 0x22, 0x0c, 0x34, 0x32, 0x3e, 0x8d, 0xe3, 0x33, 0x48,
-    0x73, 0xcd, 0x0b, 0xce, 0x42, 0xa5, 0x6d, 0xdd, 0x97, 0x02, 0xf0, 0xee,
-    0xfd, 0xe9, 0x52, 0x42, 0x31, 0x91, 0x6a, 0x50, 0x17, 0xa3, 0x2f, 0x65,
-    0x27, 0x6c, 0xc7, 0xec, 0x6b, 0xb7, 0xfc, 0xc7, 0x93, 0x36, 0xb4, 0x08,
-    0x3a, 0xff, 0xff, 0x81, 0x0c, 0x7b, 0x49, 0xd7, 0x4f, 0x67, 0x3f, 0x5b,
-    0xc8, 0xea, 0x61, 0x50, 0xec, 0xf1, 0xbe, 0x04, 0xee, 0xfd, 0xc6, 0xbb,
-    0xb4, 0xd1, 0x5b, 0xdf, 0xf9, 0xe4, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x4e,
-    0x16, 0x63, 0x0f, 0xf5, 0x66, 0x77, 0x2a, 0x82, 0x75, 0xba, 0x75, 0xb4,
-    0x75, 0x00, 0xd0, 0x6d, 0x88, 0x5f, 0x35, 0xdd, 0xa6, 0x8b, 0x46, 0xff,
-    0xf6, 0x07, 0xae, 0xa4, 0xd3, 0x26, 0x80, 0xb3, 0xab, 0x87, 0xf3, 0xd2,
-    0xdb, 0xe6, 0xb8, 0xfe, 0x75, 0xff, 0x4d, 0x8a, 0xfa, 0xe7, 0x1f, 0xc7,
-    0x5f, 0xd0, 0xe2, 0x00, 0xe1, 0xd7, 0x22, 0x87, 0x5f, 0xff, 0xa7, 0x8f,
-    0x40, 0x79, 0x1d, 0x7d, 0x0e, 0x7e, 0x75, 0xff, 0xa3, 0x77, 0x57, 0xe8,
-    0xba, 0xbc, 0xe7, 0x5f, 0xfa, 0x39, 0xfe, 0x26, 0x73, 0xc0, 0x3a, 0xa1,
-    0x1a, 0xbd, 0x54, 0xd2, 0x25, 0xb2, 0x64, 0xc6, 0xb5, 0x0e, 0xbb, 0xfd,
-    0xde, 0x81, 0x45, 0xc6, 0x8e, 0xbf, 0xff, 0x26, 0x87, 0x36, 0x3f, 0x87,
-    0x35, 0xd7, 0x98, 0xea, 0xc4, 0x44, 0x4c, 0x69, 0x7d, 0x9f, 0xbf, 0x4e,
-    0xbb, 0xba, 0x3a, 0xcc, 0x2a, 0x15, 0xd5, 0xab, 0x67, 0x59, 0x09, 0xd6,
-    0x91, 0x4c, 0x42, 0xb3, 0xce, 0xc6, 0x89, 0xe8, 0x5b, 0xed, 0x91, 0xfd,
-    0x21, 0xbe, 0x6b, 0xbb, 0x4d, 0x16, 0xd5, 0xff, 0xfd, 0x0f, 0xe8, 0xec,
-    0x69, 0x12, 0x49, 0xcc, 0x09, 0xd7, 0xf7, 0x61, 0x70, 0x81, 0x3a, 0xb8,
-    0x8a, 0xed, 0x16, 0xf9, 0x5a, 0xff, 0xdd, 0x40, 0xbc, 0x83, 0xd4, 0x59,
-    0xd7, 0xd1, 0xb3, 0x10, 0xeb, 0xfe, 0x89, 0x47, 0x27, 0x8e, 0x4e, 0x75,
-    0xff, 0x47, 0x3e, 0x6a, 0x3a, 0xe8, 0x75, 0xfe, 0xea, 0x3c, 0xbc, 0x93,
-    0x9d, 0x58, 0x99, 0x8b, 0x4c, 0x38, 0x7a, 0x24, 0x2c, 0x9c, 0xed, 0x9c,
-    0x5f, 0xca, 0x3f, 0x02, 0x01, 0x3a, 0xfe, 0x1d, 0xb4, 0xe6, 0x28, 0x75,
-    0xf9, 0x27, 0x5c, 0x34, 0xeb, 0xf3, 0xef, 0x2f, 0xba, 0x3a, 0xcc, 0x28,
-    0x8a, 0xd1, 0x2d, 0xf1, 0x7e, 0xc2, 0x7a, 0x61, 0x34, 0xdf, 0xe3, 0x07,
-    0xb9, 0x7d, 0x3a, 0xfd, 0xc6, 0xbb, 0xb4, 0xd1, 0x72, 0xd9, 0x80, 0x9e,
-    0x4e, 0x0b, 0x5f, 0xb8, 0xd7, 0x76, 0x9a, 0x2e, 0xdb, 0xfe, 0x49, 0x49,
-    0x07, 0xf8, 0x91, 0xd6, 0x63, 0x0f, 0xa9, 0xcc, 0xea, 0x1d, 0x8a, 0x74,
-    0xe5, 0x32, 0x9e, 0x62, 0x0c, 0x6d, 0x0a, 0x52, 0x35, 0x12, 0xb6, 0xf1,
-    0x57, 0x85, 0xbf, 0x65, 0xe9, 0x8c, 0xbd, 0xed, 0x3a, 0xfa, 0x12, 0x57,
-    0xf9, 0x8c, 0xe3, 0x5d, 0xda, 0x68, 0xa9, 0xef, 0x06, 0x75, 0x9d, 0x6f,
-    0x1d, 0x7f, 0xd0, 0xf3, 0xfc, 0xdf, 0x50, 0x13, 0xa9, 0x0f, 0x2c, 0x44,
-    0x2f, 0x9a, 0xee, 0xd3, 0x45, 0x73, 0x7f, 0x98, 0xce, 0x35, 0xdd, 0xa6,
-    0x8b, 0x3a, 0xf3, 0xbc, 0x8e, 0xbf, 0x93, 0x58, 0x2e, 0xc9, 0xd5, 0xc4,
-    0x58, 0xf4, 0xb4, 0x4f, 0xfc, 0x35, 0x7f, 0xfb, 0xd1, 0xaf, 0x80, 0xd7,
-    0xa2, 0x69, 0x90, 0xeb, 0xf9, 0x17, 0x38, 0x39, 0x23, 0xaf, 0xf4, 0x77,
-    0xe2, 0xd5, 0xb5, 0x47, 0x8e, 0xac, 0x45, 0xcf, 0x53, 0x76, 0x17, 0x5f,
-    0xb9, 0x9e, 0x45, 0x9d, 0x7c, 0xe3, 0x01, 0x3a, 0xfe, 0xc9, 0xa1, 0x71,
-    0xf4, 0xeb, 0xf7, 0x1a, 0xee, 0xd3, 0x44, 0x85, 0x7f, 0xec, 0x5e, 0x3f,
-    0x27, 0xf9, 0xba, 0xce, 0xbf, 0xe4, 0xdf, 0x5e, 0x18, 0x5e, 0x8e, 0xba,
-    0x4c, 0x62, 0x2b, 0x3a, 0x67, 0xfa, 0x0d, 0xff, 0xdd, 0x45, 0xe6, 0xbe,
-    0x6f, 0x2c, 0xf1, 0xd7, 0xd2, 0xef, 0xdd, 0x1d, 0x50, 0x7d, 0x58, 0x8d,
-    0x7c, 0xad, 0xf6, 0x16, 0x75, 0xfd, 0xdd, 0x6b, 0x39, 0x39, 0xd7, 0x43,
-    0x27, 0x56, 0x1e, 0x22, 0x17, 0x59, 0x89, 0xd7, 0x33, 0xc2, 0xd1, 0x90,
-    0xd1, 0x48, 0x7a, 0xf0, 0xc5, 0x64, 0xdd, 0x1f, 0x78, 0x6d, 0x0c, 0x29,
-    0xf4, 0x41, 0xe6, 0xab, 0xff, 0x98, 0xeb, 0xe8, 0x73, 0xde, 0x8f, 0xce,
-    0xbf, 0xfc, 0xc2, 0xde, 0x4c, 0x67, 0x1a, 0xee, 0xd3, 0x44, 0xf9, 0x4d,
-    0x5e, 0x5c, 0x57, 0x9d, 0x0e, 0x5c, 0x2c, 0xfa, 0x89, 0x72, 0x6e, 0x75,
-    0xff, 0xf4, 0xa7, 0x55, 0xa1, 0x5b, 0x9d, 0xbc, 0xf9, 0xf3, 0xbb, 0x67,
-    0x54, 0x8f, 0xeb, 0xf1, 0x6b, 0xf6, 0x73, 0x32, 0x63, 0xac, 0xc7, 0x4f,
-    0x27, 0xe9, 0x1d, 0xfb, 0x8d, 0x77, 0x69, 0xa2, 0xb2, 0xbf, 0xf3, 0xc9,
-    0x8c, 0xe3, 0x5d, 0xda, 0x68, 0x9b, 0xac, 0xc6, 0x1f, 0xea, 0xcc, 0xe9,
-    0xa8, 0xd0, 0x48, 0x54, 0x5f, 0xb8, 0xd7, 0x76, 0x9a, 0x25, 0x6b, 0xf0,
-    0xc0, 0x5f, 0xa7, 0x5f, 0x98, 0x5b, 0xc9, 0x8c, 0x3d, 0x84, 0x33, 0xbf,
-    0xf7, 0xb1, 0x8c, 0xe2, 0x4e, 0xeb, 0x3a, 0xff, 0xf2, 0xb0, 0xac, 0xaa,
-    0x35, 0x8f, 0x24, 0xce, 0x61, 0xd7, 0xfe, 0x4d, 0x01, 0x62, 0x9b, 0x00,
-    0xe7, 0x5f, 0xd0, 0x2e, 0xd7, 0x57, 0x3a, 0xa4, 0x7d, 0x6b, 0x3e, 0xb8,
-    0x3c, 0x3a, 0xfd, 0xc6, 0xbb, 0xb4, 0xd1, 0x2e, 0x5f, 0xf2, 0x3c, 0xbc,
-    0x30, 0xbd, 0x1d, 0x7e, 0x96, 0xda, 0x75, 0xce, 0xbd, 0x1b, 0x70, 0x75,
-    0xe4, 0x18, 0x3a, 0xa4, 0x7b, 0xe1, 0x29, 0xd8, 0x3b, 0x7f, 0xfe, 0x7f,
-    0x20, 0x24, 0x29, 0x28, 0xf0, 0x82, 0x47, 0x5f, 0xd2, 0xee, 0x0e, 0x34,
-    0xeb, 0xd2, 0xef, 0x8e, 0xbb, 0xb0, 0x87, 0x8f, 0xd2, 0xbb, 0xff, 0x85,
-    0x3f, 0xd7, 0x21, 0x24, 0xfa, 0x3a, 0xb0, 0xfb, 0x90, 0xb2, 0xf3, 0xc9,
-    0x85, 0x5e, 0xac, 0x62, 0x21, 0x81, 0x22, 0x2c, 0x16, 0xe9, 0x9b, 0xc2,
-    0x57, 0x46, 0x3e, 0x8c, 0x1e, 0xcc, 0x22, 0xbe, 0xe5, 0xcb, 0x56, 0xbf,
-    0xf9, 0x87, 0x93, 0x19, 0xc6, 0xbb, 0xb4, 0xd1, 0x1d, 0xdf, 0xf7, 0xbb,
-    0x92, 0x61, 0xc7, 0x47, 0x5f, 0xca, 0xa1, 0x86, 0xe0, 0x9d, 0x70, 0x3a,
-    0x75, 0xfc, 0xa8, 0x1c, 0xeb, 0xf8, 0xeb, 0xff, 0xfb, 0xd2, 0x40, 0xf5,
-    0x36, 0x7c, 0xc0, 0xf1, 0x00, 0xd3, 0xaf, 0xf6, 0x33, 0xa8, 0x1f, 0x68,
-    0xeb, 0xfc, 0xe3, 0xfb, 0xf1, 0xfe, 0x9d, 0x7f, 0xe4, 0xe7, 0xcd, 0x0e,
-    0x2e, 0x1a, 0x75, 0xff, 0xa0, 0x41, 0xe4, 0x7d, 0x8f, 0x23, 0xaf, 0x9a,
-    0xee, 0xd3, 0x45, 0x43, 0x7f, 0xd9, 0xdc, 0x17, 0xe7, 0x10, 0xea, 0x51,
-    0x1b, 0xad, 0x3e, 0xe1, 0xee, 0x8b, 0x6e, 0x96, 0x1d, 0x7f, 0xd2, 0xf2,
-    0x71, 0xda, 0x82, 0x75, 0xff, 0xe7, 0x5e, 0x70, 0x71, 0x36, 0x27, 0x1c,
-    0xeb, 0xff, 0xba, 0x39, 0x37, 0xbb, 0x9c, 0x4d, 0x1d, 0x7e, 0xdc, 0x51,
-    0x68, 0x75, 0x42, 0x2c, 0x31, 0x1d, 0x10, 0xef, 0xf4, 0x79, 0xfb, 0xf0,
-    0x30, 0x75, 0xff, 0x81, 0xf1, 0xc7, 0x36, 0xbe, 0x74, 0x07, 0x5f, 0xe9,
-    0x47, 0x27, 0x8e, 0x4e, 0x75, 0xff, 0xda, 0xd6, 0x0f, 0xb5, 0x92, 0x4e,
-    0x9d, 0x7f, 0xfd, 0x1f, 0xe0, 0xfc, 0x7f, 0x7c, 0xee, 0x7e, 0xe7, 0x5c,
-    0x33, 0x9d, 0x50, 0x8d, 0xec, 0x34, 0x44, 0x21, 0x52, 0xbf, 0xb6, 0x3a,
-    0xfa, 0xcb, 0x9d, 0x7f, 0xff, 0x92, 0x3c, 0xfd, 0x63, 0x5d, 0xc1, 0xf7,
-    0xcf, 0xe5, 0xa3, 0xad, 0x88, 0x89, 0x21, 0x2f, 0xbe, 0xef, 0xb2, 0x73,
-    0xaf, 0xd9, 0x3b, 0x8e, 0xc3, 0xaf, 0xff, 0xff, 0xf4, 0x4b, 0xe7, 0xba,
-    0x91, 0xaf, 0x98, 0x06, 0xc6, 0xcf, 0x99, 0xce, 0x66, 0xc0, 0x3f, 0x4e,
-    0xbe, 0xe8, 0xbe, 0xd1, 0xd5, 0x89, 0x81, 0x89, 0x16, 0x8a, 0x3d, 0x09,
-    0x6b, 0xff, 0xfe, 0x03, 0xab, 0xa4, 0xfd, 0x74, 0xf4, 0x75, 0x3d, 0xac,
-    0x09, 0xd6, 0x61, 0x50, 0xbe, 0xd4, 0xad, 0x97, 0x2a, 0x85, 0xa0, 0xbe,
-    0x75, 0xe0, 0x99, 0x64, 0x62, 0x0d, 0x3e, 0xdc, 0x57, 0x90, 0xe6, 0x59,
-    0x6f, 0x4c, 0xc6, 0x32, 0x2d, 0x43, 0x2f, 0xd1, 0x94, 0xed, 0xa0, 0xdf,
-    0x35, 0xdd, 0xa6, 0x8a, 0xa2, 0xff, 0x72, 0x36, 0x6f, 0x2c, 0xf1, 0xd5,
-    0xc3, 0xe2, 0x01, 0x6d, 0xff, 0x9e, 0x4c, 0x67, 0x1a, 0xee, 0xd3, 0x44,
-    0xd7, 0x79, 0x6f, 0xe3, 0xac, 0xc6, 0x22, 0x1d, 0x64, 0x4e, 0x95, 0x7e,
-    0xe3, 0x5d, 0xda, 0x68, 0xab, 0x2f, 0xfa, 0x25, 0x1c, 0x9e, 0x39, 0x39,
-    0xd6, 0x63, 0x0f, 0xb0, 0x4c, 0xef, 0xfc, 0xc7, 0x63, 0x7f, 0x47, 0x5d,
-    0x5c, 0xeb, 0xff, 0x98, 0x79, 0x31, 0x9c, 0x6b, 0xbb, 0x4d, 0x12, 0x25,
-    0xfb, 0x8d, 0x77, 0x69, 0xa2, 0xd2, 0xbf, 0xf3, 0xc9, 0x8c, 0xe3, 0x5d,
-    0xda, 0x68, 0x9f, 0x6c, 0xc6, 0x1f, 0xea, 0xcc, 0xef, 0xff, 0x30, 0xb7,
-    0x93, 0x19, 0xc6, 0xbb, 0xb4, 0xd1, 0x42, 0x5f, 0xba, 0x93, 0xc7, 0x0e,
-    0xbf, 0x71, 0xae, 0xed, 0x34, 0x51, 0xf7, 0xfd, 0x12, 0x8e, 0x4f, 0x1c,
-    0x9c, 0xeb, 0xff, 0x0c, 0x4d, 0x03, 0x13, 0x76, 0x0e, 0xbf, 0xff, 0xb0,
-    0x3d, 0x8f, 0xac, 0x78, 0x5f, 0xfd, 0x6a, 0x3f, 0x2a, 0xfc, 0xc2, 0xde,
-    0x4c, 0x42, 0x65, 0xb8, 0x4e, 0x26, 0x7e, 0x39, 0xdb, 0x3c, 0xa8, 0x6c,
-    0x8d, 0xe7, 0x9c, 0x2d, 0x91, 0x96, 0x28, 0xa9, 0x3f, 0x44, 0xd8, 0xfd,
-    0xf7, 0x85, 0x0a, 0x13, 0xcc, 0x85, 0xd8, 0x67, 0x7e, 0x51, 0xe8, 0xe1,
-    0x2f, 0xf3, 0x19, 0xc6, 0xbb, 0xb4, 0xd1, 0x11, 0x5f, 0xd9, 0xc6, 0xbb,
-    0xb4, 0xd1, 0x15, 0xdf, 0xf2, 0xbb, 0x19, 0xc6, 0xbb, 0xb4, 0xd1, 0x5c,
-    0x53, 0x08, 0x80, 0x73, 0x8b, 0xff, 0xdf, 0xc0, 0xb5, 0x87, 0xf7, 0xff,
-    0x46, 0x47, 0x5f, 0x31, 0x3c, 0xca, 0xe7, 0x59, 0x37, 0x3f, 0x5f, 0xd3,
-    0x6f, 0xb3, 0xaf, 0xe3, 0xaf, 0xf6, 0x27, 0x3f, 0xfc, 0x1a, 0x3a, 0xca,
-    0x81, 0x3d, 0x4d, 0x10, 0x5f, 0xff, 0xde, 0xd2, 0x75, 0xd2, 0x48, 0x3e,
-    0x07, 0x79, 0x87, 0x5f, 0xb8, 0xd7, 0x76, 0x9a, 0x29, 0xeb, 0xfc, 0xb4,
-    0x08, 0x1f, 0x92, 0x3a, 0xe5, 0xa1, 0xd5, 0x07, 0x8e, 0xd3, 0x2b, 0xff,
-    0xfd, 0x28, 0xf6, 0x80, 0xb6, 0xa7, 0xf1, 0x9d, 0x40, 0x34, 0xeb, 0xff,
-    0xfb, 0x9c, 0x07, 0x39, 0x03, 0x8a, 0x27, 0x7b, 0x9f, 0x4e, 0xbf, 0xf9,
-    0x25, 0x83, 0xfc, 0x2d, 0x39, 0x23, 0xaf, 0xf4, 0xa3, 0x93, 0xc7, 0x27,
-    0x3a, 0xfb, 0xe0, 0xbc, 0x8e, 0xbf, 0x3e, 0x75, 0x16, 0x75, 0x68, 0xf1,
-    0xf6, 0x11, 0x54, 0x22, 0x7f, 0x1e, 0xef, 0xfa, 0x05, 0xb9, 0xb3, 0x3d,
-    0xa3, 0xaf, 0xcf, 0x3c, 0x70, 0x07, 0x52, 0xa9, 0x59, 0xdc, 0x15, 0xe2,
-    0xc3, 0x5e, 0xb7, 0x21, 0x46, 0x07, 0x5c, 0x18, 0x70, 0xec, 0x21, 0xdb,
-    0x38, 0xbf, 0xfc, 0xf2, 0x60, 0x22, 0xec, 0xeb, 0x51, 0xf9, 0xd7, 0xff,
-    0xbf, 0xfc, 0x1a, 0x63, 0xe8, 0xba, 0xc6, 0x0e, 0xbf, 0xf8, 0x73, 0xf7,
-    0x1f, 0xd8, 0x5a, 0x2c, 0xea, 0xe2, 0x24, 0x7c, 0x9b, 0x4c, 0x27, 0x2c,
-    0x18, 0x4b, 0xa4, 0x37, 0x2e, 0x0e, 0x1d, 0x7f, 0xf2, 0x07, 0x8f, 0xbb,
-    0x1c, 0xe4, 0x4e, 0x75, 0x30, 0x7b, 0x7d, 0x15, 0xb8, 0x30, 0x75, 0xff,
-    0xfb, 0xb1, 0xcc, 0x92, 0x3f, 0xb0, 0x28, 0x06, 0x95, 0x7e, 0x89, 0x7e,
-    0x09, 0x1d, 0x7c, 0xd7, 0x76, 0x9a, 0x2b, 0x3a, 0x98, 0xf5, 0x78, 0x51,
-    0x7d, 0xe4, 0x5e, 0x8e, 0xbf, 0xa7, 0x5c, 0x0c, 0xb4, 0x75, 0xfb, 0x3d,
-    0xaf, 0xba, 0x3a, 0xf4, 0x4e, 0x87, 0x5f, 0xbd, 0xff, 0xd1, 0x91, 0xd7,
-    0x80, 0xfa, 0x3a, 0xff, 0xb2, 0x48, 0x05, 0x75, 0x6f, 0xf5, 0x9d, 0x7e,
-    0xc9, 0xa7, 0x07, 0xe7, 0x59, 0x88, 0x54, 0x42, 0x11, 0x5c, 0x85, 0x3e,
-    0xe4, 0x7c, 0x21, 0x59, 0x6f, 0x4a, 0x5c, 0x6c, 0x4a, 0xb4, 0x37, 0xf5,
-    0x06, 0xff, 0xdd, 0x4f, 0x3f, 0x27, 0x84, 0x09, 0xd7, 0xef, 0x20, 0xe2,
-    0xce, 0xbe, 0x93, 0x8b, 0x18, 0x7c, 0x5b, 0x47, 0xb7, 0xfe, 0x79, 0x31,
-    0x9c, 0x6b, 0xbb, 0x4d, 0x12, 0x2d, 0xff, 0x9f, 0xcc, 0x42, 0x71, 0x3c,
-    0x03, 0xa9, 0x84, 0x43, 0xba, 0x55, 0xfd, 0x9c, 0x6b, 0xbb, 0x4d, 0x16,
-    0x4d, 0xff, 0xef, 0x6b, 0xee, 0x98, 0xc9, 0xd0, 0x65, 0xa3, 0xa9, 0x84,
-    0x42, 0xe1, 0xc5, 0xff, 0xfe, 0x74, 0xf0, 0x38, 0xfa, 0x61, 0xbd, 0x4e,
-    0x44, 0xb4, 0x75, 0xfd, 0x9c, 0x6b, 0xbb, 0x4d, 0x16, 0xc5, 0xff, 0xfc,
-    0xa8, 0xef, 0xc1, 0xce, 0x7b, 0x5d, 0x9b, 0xe7, 0xce, 0xed, 0x9d, 0x7b,
-    0x80, 0xe9, 0xd7, 0x79, 0x88, 0x44, 0x37, 0x1a, 0xa9, 0x84, 0x76, 0xa4,
-    0x2f, 0xaf, 0x66, 0xb0, 0xeb, 0xe6, 0xbb, 0xb4, 0xd1, 0x6d, 0xdf, 0x6a,
-    0x77, 0xe1, 0xd5, 0xc3, 0xcf, 0xf1, 0x6d, 0xfc, 0x9d, 0xf2, 0x7e, 0x03,
-    0xaf, 0xfa, 0x25, 0x1c, 0x9e, 0x39, 0x39, 0xd6, 0x62, 0x48, 0xf1, 0xc6,
-    0x99, 0x88, 0x84, 0xb6, 0xff, 0xf6, 0x0f, 0xec, 0x2d, 0xc3, 0x98, 0x2a,
-    0x1d, 0x79, 0x55, 0xd0, 0x9d, 0x7a, 0x7e, 0xa1, 0xd7, 0xfe, 0x55, 0x2a,
-    0x95, 0xa7, 0xbb, 0x83, 0x1f, 0x9d, 0x7f, 0x40, 0xc8, 0x20, 0x59, 0xd7,
-    0xcd, 0x77, 0x69, 0xa2, 0xf0, 0xbf, 0xf3, 0xfa, 0x36, 0x73, 0x99, 0xbe,
-    0x8e, 0xae, 0x1f, 0x68, 0x96, 0xdf, 0x7b, 0x6f, 0x3a, 0x75, 0xf9, 0x70,
-    0x32, 0x73, 0xaf, 0xf4, 0xa0, 0x7d, 0xb1, 0xda, 0x75, 0xfe, 0x8f, 0x3f,
-    0x7e, 0x06, 0x0e, 0xbf, 0xf7, 0xd5, 0xef, 0x2f, 0x60, 0xfb, 0x47, 0x5d,
-    0x8a, 0x1d, 0x50, 0x7a, 0xf8, 0x83, 0x7c, 0x93, 0xe2, 0xce, 0xbf, 0x60,
-    0xff, 0xb5, 0x07, 0x5f, 0xa3, 0xe8, 0x1f, 0x47, 0x5f, 0xfe, 0xc5, 0xc3,
-    0x7e, 0x60, 0x82, 0x59, 0xa3, 0xaf, 0xfe, 0xce, 0xf5, 0xe4, 0xb4, 0x8e,
-    0x48, 0xeb, 0xa3, 0xf3, 0xaa, 0x47, 0xb1, 0xe4, 0x2a, 0x54, 0x2b, 0x9d,
-    0x55, 0x10, 0x2a, 0xf1, 0xc9, 0xd3, 0x32, 0x13, 0x3b, 0x90, 0xa1, 0x24,
-    0xc4, 0xab, 0x33, 0xec, 0x22, 0x9c, 0x83, 0xf2, 0x11, 0x29, 0xd1, 0x47,
-    0xa1, 0x43, 0x7f, 0xb7, 0x63, 0x3f, 0x7e, 0x68, 0xeb, 0xfd, 0xfb, 0x13,
-    0x4a, 0x07, 0xc7, 0x53, 0x09, 0xaa, 0xc4, 0x3a, 0xf8, 0x6b, 0x79, 0x33,
-    0x73, 0xaf, 0x9a, 0xee, 0xd3, 0x45, 0xe9, 0x7f, 0xe4, 0xf7, 0x45, 0xe5,
-    0xfb, 0xfe, 0x75, 0x70, 0xfa, 0xd6, 0x5b, 0x79, 0x69, 0xe3, 0xaf, 0xf9,
-    0xfd, 0x28, 0x53, 0xc9, 0x39, 0xd4, 0xb3, 0xd4, 0x11, 0xbb, 0xf6, 0x2f,
-    0xae, 0x13, 0xa8, 0x29, 0xa1, 0xe4, 0x21, 0xbe, 0xbb, 0x6d, 0x10, 0xdf,
-    0xff, 0xf2, 0x6c, 0xc1, 0x60, 0x38, 0x1e, 0xe2, 0xd6, 0xf2, 0xc1, 0x3a,
-    0x98, 0x45, 0x66, 0x23, 0xd4, 0x36, 0xc7, 0xf3, 0xc2, 0xfe, 0x50, 0x98,
-    0xc9, 0xd4, 0xe6, 0xc2, 0x59, 0x25, 0x22, 0x4d, 0x18, 0x3f, 0x21, 0x84,
-    0xb8, 0x54, 0x74, 0x8f, 0xf8, 0xd3, 0x46, 0x31, 0x9d, 0x21, 0x82, 0x74,
-    0xed, 0x99, 0x44, 0xb7, 0x03, 0xa7, 0x5f, 0xfc, 0x08, 0x98, 0x73, 0x63,
-    0xad, 0x68, 0x75, 0xf6, 0x75, 0xfc, 0x75, 0xfe, 0xc4, 0xe7, 0xff, 0x83,
-    0x47, 0x59, 0x50, 0xa2, 0x26, 0x05, 0x13, 0x44, 0x17, 0xde, 0x8d, 0xe7,
-    0x3a, 0xff, 0xbd, 0xac, 0xde, 0x5d, 0x02, 0x87, 0x52, 0x1e, 0xf0, 0x91,
-    0xdf, 0x46, 0xc8, 0x91, 0xd7, 0xee, 0x35, 0xdd, 0xa6, 0x88, 0x8e, 0xff,
-    0xfb, 0xa0, 0xd6, 0xb1, 0x63, 0x9b, 0x3e, 0x42, 0xb0, 0x75, 0xff, 0x44,
-    0xfc, 0xcf, 0x79, 0x3c, 0x75, 0xe1, 0x8d, 0xce, 0xa9, 0x1e, 0x98, 0x4e,
-    0x2f, 0xfb, 0x39, 0x9a, 0xc7, 0x19, 0xce, 0xbd, 0x81, 0x59, 0xd7, 0xff,
-    0xfb, 0xae, 0x9e, 0x8e, 0x8e, 0x7b, 0xa9, 0xdc, 0x46, 0x4e, 0xbf, 0xff,
-    0xfd, 0xef, 0x22, 0xf8, 0x99, 0xb8, 0x83, 0xd1, 0xdf, 0x9b, 0x13, 0xd3,
-    0x41, 0xd5, 0x08, 0xd8, 0xc5, 0xdb, 0xfc, 0xeb, 0xce, 0x4a, 0x16, 0x75,
-    0xd3, 0xac, 0xab, 0x99, 0x64, 0xab, 0xff, 0x30, 0xde, 0xa4, 0xdd, 0x89,
-    0xd8, 0xfc, 0xd7, 0xb2, 0x2f, 0x7d, 0xb2, 0x3d, 0x07, 0x54, 0x8f, 0xf5,
-    0x16, 0xef, 0xec, 0x75, 0xe6, 0xfe, 0x3a, 0xff, 0x3b, 0x1a, 0x4e, 0x3f,
-    0xe7, 0x59, 0x5c, 0xeb, 0xfe, 0x8c, 0xde, 0x1e, 0x4f, 0x23, 0xa9, 0x59,
-    0x3c, 0x90, 0x89, 0xdf, 0xca, 0xe3, 0x9d, 0x7f, 0x1d, 0x7f, 0x42, 0x98,
-    0x28, 0xa1, 0xd7, 0xf6, 0x7b, 0x6b, 0xd9, 0xd3, 0xab, 0x11, 0x12, 0x25,
-    0xda, 0x2c, 0xbf, 0xff, 0x9a, 0xc7, 0x1c, 0x53, 0xcc, 0x72, 0x3c, 0x2f,
-    0xf9, 0xd4, 0xad, 0xaf, 0x58, 0x2a, 0xa1, 0x5d, 0x10, 0x98, 0x91, 0x06,
-    0x11, 0x34, 0xcf, 0x78, 0x55, 0x21, 0x14, 0xc6, 0xdc, 0x87, 0x9f, 0x48,
-    0x5e, 0x1b, 0xbf, 0x90, 0x89, 0x66, 0x9f, 0x3d, 0x0b, 0x0d, 0x85, 0xd7,
-    0x6d, 0x74, 0xeb, 0xf7, 0x1a, 0xee, 0xd3, 0x44, 0x5d, 0x7e, 0xf7, 0xff,
-    0x46, 0x45, 0x5f, 0xb5, 0xee, 0xc7, 0xe7, 0x5f, 0x9e, 0x78, 0xe0, 0x0e,
-    0xb3, 0x13, 0xa3, 0x17, 0x06, 0x5c, 0xcc, 0x05, 0x5b, 0x65, 0x14, 0xc2,
-    0xa2, 0x89, 0x47, 0xab, 0x7f, 0xf2, 0xde, 0x4c, 0x67, 0x1a, 0xee, 0xd3,
-    0x44, 0xcd, 0x7f, 0x2a, 0xca, 0xd1, 0x51, 0xa8, 0xf1, 0xd7, 0xb7, 0x8d,
-    0x1d, 0x79, 0xa8, 0xb3, 0xaf, 0x95, 0x5e, 0x71, 0x3a, 0xed, 0xb5, 0x64,
-    0xeb, 0xb0, 0x07, 0x5f, 0xfe, 0xec, 0x2d, 0xfd, 0x9b, 0xfe, 0xbf, 0xbd,
-    0x3a, 0xfe, 0xf6, 0x4f, 0x9f, 0xcc, 0x75, 0xfe, 0xf9, 0x82, 0xfc, 0xff,
-    0x6c, 0xeb, 0xff, 0xf2, 0xdf, 0xb9, 0xbf, 0xfd, 0x65, 0xfb, 0x37, 0x40,
-    0x75, 0x05, 0x12, 0x18, 0x6f, 0x76, 0xb0, 0xeb, 0xb6, 0xbc, 0x75, 0x95,
-    0x27, 0x5b, 0xf8, 0x35, 0xa0, 0x19, 0xbf, 0xff, 0xf2, 0x0c, 0x34, 0x61,
-    0x7f, 0x23, 0x9c, 0x4d, 0x9c, 0x77, 0xfc, 0xea, 0x56, 0x55, 0x1b, 0x34,
-    0x79, 0x05, 0x66, 0x4d, 0xec, 0x2f, 0xdc, 0x8b, 0xf4, 0x2f, 0x13, 0xdf,
-    0xcc, 0xc0, 0x8e, 0x78, 0xeb, 0xe7, 0xea, 0x4c, 0x75, 0xf7, 0x66, 0x80,
-    0x9d, 0x58, 0x7d, 0xcd, 0x2b, 0x72, 0x1b, 0xfc, 0xd4, 0xc1, 0x0f, 0x60,
-    0xea, 0x3a, 0xfd, 0xd7, 0xf4, 0xbf, 0x3a, 0xff, 0xf7, 0xce, 0xba, 0x7b,
-    0xf0, 0x08, 0xbc, 0x8e, 0xac, 0x45, 0x63, 0x4c, 0x10, 0x29, 0x65, 0x17,
-    0xff, 0xff, 0xff, 0xff, 0x95, 0x7a, 0xa3, 0x15, 0x7a, 0xa9, 0x5a, 0x2b,
-    0x46, 0xaa, 0x61, 0x57, 0x2a, 0xb9, 0x3e, 0xd6, 0x00, 0x2a, 0xd6, 0x36,
-    0xf7, 0xfb, 0xd5, 0x54, 0x42, 0xa9, 0x5d, 0x56, 0xf7, 0xcf, 0x9d, 0xdb,
-    0x3a, 0xff, 0xfd, 0xfe, 0xf2, 0xe8, 0x23, 0x8c, 0x75, 0x1a, 0xfc, 0x3a,
-    0xff, 0xed, 0xd9, 0x8f, 0x05, 0x15, 0xf5, 0x0b, 0x3a, 0xff, 0xff, 0xc8,
-    0xb4, 0xe7, 0x41, 0xa9, 0x46, 0xce, 0x40, 0xfb, 0xb9, 0x23, 0xaf, 0xfc,
-    0x9e, 0x46, 0xa0, 0x7d, 0x8d, 0x3a, 0xb1, 0x1e, 0x1e, 0x48, 0xda, 0x6c,
-    0xbe, 0xf6, 0xde, 0x74, 0xeb, 0xff, 0xfc, 0xe2, 0xd1, 0xc0, 0xf4, 0x1f,
-    0x3b, 0x12, 0xe4, 0x4e, 0x75, 0x62, 0x21, 0x40, 0x49, 0x7f, 0xff, 0x9d,
-    0x41, 0xcf, 0xc1, 0xaf, 0x92, 0x4e, 0xc3, 0x45, 0xce, 0xbe, 0xf2, 0x75,
-    0x0e, 0xbf, 0xe7, 0xe4, 0xbe, 0x63, 0x43, 0x87, 0x52, 0xa9, 0x70, 0x1a,
-    0x23, 0x2b, 0xc8, 0xd2, 0x3b, 0x0b, 0x77, 0x22, 0x16, 0x10, 0x10, 0x5b,
-    0x87, 0x5f, 0xde, 0xc5, 0xef, 0x8b, 0x3a, 0xdd, 0xc3, 0x7a, 0x82, 0x17,
-    0xf8, 0x01, 0x79, 0x69, 0x24, 0x75, 0xff, 0xf8, 0x28, 0x33, 0xe6, 0x91,
-    0xfa, 0xc3, 0x2c, 0xb2, 0x55, 0xfd, 0xee, 0xc4, 0xfd, 0x01, 0xd7, 0xf6,
-    0xf2, 0xd7, 0xe0, 0x98, 0xeb, 0xfe, 0x9f, 0x3f, 0x08, 0x1f, 0x92, 0x3a,
-    0xf3, 0xbb, 0x4d, 0x16, 0x7d, 0xfd, 0xfb, 0x8c, 0x91, 0x67, 0x54, 0xe8,
-    0x8d, 0x69, 0xd7, 0xe4, 0xf7, 0xfe, 0x4e, 0xc4, 0x93, 0xd1, 0xed, 0x1d,
-    0x7f, 0xfb, 0x9d, 0x7f, 0x99, 0xb0, 0x73, 0x58, 0x27, 0x5f, 0xfd, 0xaf,
-    0x24, 0xcc, 0xb8, 0x63, 0x7d, 0x1d, 0x48, 0x89, 0x00, 0x25, 0x5e, 0x65,
-    0x96, 0x4a, 0xbf, 0xf3, 0xcb, 0x43, 0x8d, 0x0e, 0x70, 0xa6, 0x0b, 0xfb,
-    0xf6, 0xd0, 0x17, 0x81, 0x3a, 0xff, 0x7b, 0xb9, 0xb3, 0xe4, 0x96, 0x75,
-    0x61, 0xf0, 0x80, 0xaa, 0xff, 0xdb, 0xc8, 0x41, 0xff, 0xc6, 0xaf, 0xf3,
-    0xae, 0x85, 0x0e, 0xa8, 0x3d, 0xa9, 0xd1, 0x2f, 0xf7, 0x50, 0x22, 0xef,
-    0x31, 0xd7, 0xf8, 0x3d, 0x03, 0xff, 0xb7, 0x87, 0x54, 0x1f, 0x3a, 0x18,
-    0xdf, 0xf2, 0x08, 0x7e, 0x84, 0x1e, 0xd1, 0xd7, 0xa0, 0x54, 0x3a, 0xa4,
-    0xba, 0x00, 0x12, 0x56, 0x99, 0x6e, 0xb1, 0x31, 0x77, 0x21, 0x7c, 0xb3,
-    0x2e, 0xc3, 0x33, 0xf4, 0x11, 0x85, 0x6e, 0x9e, 0xfd, 0x08, 0x9d, 0x84,
-    0x1f, 0x4e, 0xaf, 0xfb, 0x8e, 0xcf, 0x52, 0x39, 0x07, 0x5f, 0xfb, 0x89,
-    0xa9, 0x7d, 0xec, 0x0c, 0x1d, 0x7d, 0xc4, 0x85, 0x9d, 0x7f, 0xfe, 0xf2,
-    0x80, 0x8c, 0x0f, 0x73, 0x5b, 0xca, 0x3a, 0x75, 0x71, 0x16, 0x8b, 0x3e,
-    0x12, 0x0b, 0x9e, 0x47, 0x5f, 0xff, 0xff, 0xc2, 0xec, 0xfb, 0x3a, 0x39,
-    0xe0, 0x7e, 0xb7, 0x93, 0x86, 0x05, 0xf8, 0xf2, 0x3a, 0xff, 0x67, 0x7a,
-    0x0f, 0x38, 0x9d, 0x7c, 0xb4, 0x9b, 0x47, 0x59, 0x02, 0x8e, 0xd9, 0x85,
-    0x79, 0x08, 0x55, 0x98, 0xdf, 0xb9, 0x36, 0xcc, 0x09, 0xd7, 0xfe, 0xc6,
-    0x76, 0xb9, 0x9b, 0x42, 0x06, 0x4e, 0xa8, 0x4f, 0x4f, 0xb1, 0x8e, 0x3a,
-    0x40, 0x95, 0x5f, 0xff, 0xff, 0x7f, 0xac, 0xc1, 0x53, 0xef, 0x06, 0x33,
-    0xac, 0x68, 0x72, 0x75, 0xe2, 0xce, 0xbf, 0x7d, 0x81, 0xfa, 0xb3, 0xab,
-    0x11, 0x53, 0xe7, 0xfb, 0xf6, 0xc7, 0xec, 0x7d, 0x3a, 0xb0, 0xf3, 0x10,
-    0x8a, 0xf6, 0xa2, 0x73, 0xaf, 0xfa, 0x31, 0xbd, 0x4d, 0x8f, 0xc3, 0xae,
-    0xce, 0x9d, 0x42, 0x79, 0xbb, 0x67, 0x15, 0x24, 0x56, 0xe8, 0x83, 0xcd,
-    0x37, 0xba, 0x06, 0x4e, 0xbd, 0xf8, 0x1a, 0x75, 0xef, 0x67, 0xd3, 0xaf,
-    0xe8, 0xdf, 0x5f, 0x39, 0x07, 0x5e, 0x08, 0x1a, 0x75, 0xf0, 0x46, 0x24,
-    0x75, 0x21, 0xbc, 0x71, 0xca, 0x0a, 0x38, 0x77, 0x1d, 0x41, 0xd5, 0x8e,
-    0xf5, 0xae, 0xec, 0x69, 0xd7, 0xf7, 0x13, 0x66, 0x0e, 0x8e, 0xbf, 0xb7,
-    0xf6, 0x74, 0x0a, 0xe7, 0x5f, 0xdc, 0xce, 0xf4, 0x1e, 0x3a, 0xfd, 0xd1,
-    0x8c, 0xe1, 0x97, 0xf6, 0x72, 0x70, 0x38, 0x4d, 0x10, 0x6b, 0x06, 0x96,
-    0xdc, 0x9d, 0x13, 0xb2, 0x52, 0xa8, 0x47, 0xc2, 0x43, 0x3a, 0xfc, 0xed,
-    0x45, 0xc1, 0xd7, 0xf4, 0xba, 0x2f, 0xbf, 0x8e, 0xb6, 0x34, 0xf4, 0x84,
-    0x96, 0xfd, 0x1e, 0xf8, 0xb6, 0x4e, 0xbf, 0xd2, 0x45, 0xc7, 0x7e, 0x84,
-    0xeb, 0xff, 0xd1, 0x83, 0xbf, 0xb3, 0x89, 0x3b, 0xac, 0xeb, 0xf3, 0xb3,
-    0xec, 0xee, 0x8f, 0xf3, 0xc6, 0x94, 0xad, 0xaa, 0xbd, 0x81, 0x59, 0x46,
-    0x4b, 0x8f, 0x1c, 0x26, 0x18, 0x53, 0x5e, 0xd6, 0x48, 0xeb, 0xf2, 0x6f,
-    0x24, 0x13, 0xaf, 0x27, 0x70, 0xeb, 0xa1, 0x78, 0x78, 0x0d, 0x26, 0xbe,
-    0x0e, 0xbb, 0x07, 0x5f, 0x87, 0x8c, 0xbc, 0xe7, 0x56, 0x1e, 0x4b, 0x90,
-    0xdc, 0x01, 0x3a, 0xa1, 0x30, 0x54, 0x5b, 0xe3, 0xae, 0x88, 0x2f, 0x77,
-    0x04, 0xeb, 0xfd, 0x34, 0x4e, 0xb7, 0x9a, 0x0e, 0xbf, 0xfe, 0x75, 0x3d,
-    0x1c, 0xff, 0x91, 0xe1, 0x7f, 0xce, 0xbf, 0xff, 0x85, 0xd4, 0xf9, 0xf4,
-    0x5f, 0xda, 0x4d, 0xfa, 0x8c, 0x9d, 0x58, 0x8f, 0xd7, 0x1a, 0x13, 0x40,
-    0x28, 0x5d, 0xad, 0x87, 0x5f, 0x20, 0xb8, 0x4e, 0xbf, 0xf2, 0xf3, 0xda,
-    0xfb, 0xa7, 0x96, 0x1d, 0x7e, 0xd4, 0x73, 0xd0, 0x73, 0x06, 0xfe, 0x82,
-    0x89, 0x5d, 0x2f, 0x5f, 0xbe, 0xcc, 0xef, 0xc3, 0xaf, 0xbb, 0x89, 0xb0,
-    0xeb, 0xfb, 0x49, 0xcc, 0x07, 0x0e, 0xbf, 0xff, 0xd1, 0x37, 0xc4, 0x68,
-    0x39, 0xa0, 0x7c, 0x5a, 0x7b, 0xa8, 0x75, 0x62, 0x75, 0x89, 0x0a, 0xd5,
-    0x91, 0xf4, 0xa7, 0xc4, 0x5b, 0x45, 0x97, 0x2d, 0x50, 0x68, 0xbf, 0x2f,
-    0xb5, 0xcc, 0xc3, 0xaf, 0xfe, 0x97, 0x81, 0x29, 0x2f, 0xde, 0x85, 0x9d,
-    0x7f, 0xbd, 0xa8, 0x9f, 0x34, 0x13, 0xae, 0xee, 0x1d, 0x7f, 0xfd, 0xd8,
-    0x0e, 0x37, 0xe6, 0x0e, 0x07, 0xb0, 0x75, 0xff, 0xc9, 0x83, 0x99, 0xaf,
-    0x92, 0xd2, 0xce, 0xbf, 0xf3, 0xc6, 0xf2, 0xf9, 0xad, 0xc3, 0x07, 0x50,
-    0x53, 0x7f, 0xdc, 0x81, 0x11, 0x55, 0xcc, 0xe6, 0x15, 0xd2, 0x77, 0x90,
-    0xef, 0x29, 0x1c, 0x3a, 0xfe, 0x0c, 0x7f, 0xcc, 0xdc, 0xea, 0x60, 0xf2,
-    0x96, 0x39, 0x7f, 0xa1, 0x78, 0x9c, 0x9a, 0x47, 0x5c, 0x93, 0x1d, 0x7f,
-    0xfb, 0xd1, 0xd1, 0x79, 0xe3, 0x9c, 0x79, 0x1d, 0x7b, 0xc9, 0x39, 0xd7,
-    0xef, 0xdf, 0x78, 0x98, 0xeb, 0xc3, 0x0d, 0x3a, 0xff, 0xe0, 0xa4, 0xdd,
-    0x8e, 0x6f, 0x28, 0xe1, 0xd7, 0xff, 0x90, 0x5f, 0x7d, 0x6b, 0x38, 0x1e,
-    0xe1, 0xd5, 0xf1, 0x34, 0xa4, 0x16, 0x5a, 0x43, 0x8e, 0x09, 0x4e, 0x86,
-    0xb6, 0x91, 0x6d, 0x07, 0x5e, 0xea, 0x78, 0xeb, 0x6c, 0xc3, 0x55, 0xf4,
-    0x3e, 0xa1, 0x74, 0x44, 0x2b, 0xd9, 0x1d, 0x32, 0x42, 0xcf, 0xa4, 0x6f,
-    0x1b, 0xe7, 0xf0, 0x91, 0xbf, 0xec, 0x19, 0x0e, 0x2e, 0x1a, 0x75, 0xfb,
-    0xa9, 0xb3, 0x02, 0x75, 0xff, 0x83, 0x03, 0x82, 0x09, 0x66, 0x8e, 0xbf,
-    0x3a, 0xd3, 0x6b, 0x0e, 0xbd, 0xe8, 0xdc, 0xea, 0xc3, 0xc4, 0x72, 0x8b,
-    0xd0, 0x93, 0x1d, 0x78, 0x55, 0x9d, 0xa3, 0xaf, 0xd9, 0x3a, 0xe3, 0x47,
-    0x5f, 0xff, 0xfa, 0x3a, 0x8b, 0x62, 0x69, 0x3f, 0x3e, 0xf5, 0x37, 0xd3,
-    0x52, 0x73, 0xa8, 0x29, 0xe9, 0x28, 0x6a, 0x85, 0x13, 0x3f, 0xf4, 0x80,
-    0x46, 0xf4, 0x47, 0xb4, 0x4f, 0x7f, 0x3f, 0x23, 0xbf, 0x42, 0x75, 0xf4,
-    0x24, 0xf0, 0x75, 0xf3, 0x2f, 0x9a, 0x3a, 0xff, 0xa4, 0xb7, 0x97, 0xb5,
-    0x0a, 0x1d, 0x50, 0x7b, 0x4e, 0x43, 0x7b, 0x48, 0x27, 0x5f, 0x85, 0xbf,
-    0x35, 0xb9, 0xd5, 0x87, 0x88, 0xe3, 0x54, 0xe9, 0x96, 0x7e, 0x5c, 0x2f,
-    0x40, 0x64, 0xba, 0x79, 0x1d, 0x79, 0x3a, 0x87, 0x56, 0xe6, 0xc7, 0xc2,
-    0xf7, 0xdf, 0x40, 0xfa, 0x3a, 0xff, 0x48, 0x03, 0x3e, 0x93, 0x73, 0xaf,
-    0xbf, 0xff, 0x37, 0x3a, 0xfe, 0xda, 0xf6, 0x38, 0xb4, 0xeb, 0xfe, 0x03,
-    0xc8, 0x39, 0x9f, 0xe8, 0xeb, 0xfd, 0xfa, 0x6f, 0xbc, 0xb3, 0xc7, 0x57,
-    0x4f, 0xb7, 0x47, 0x17, 0xed, 0xf4, 0xb4, 0x57, 0x3a, 0xff, 0xfd, 0x9a,
-    0xf9, 0xd7, 0x4f, 0x7e, 0x01, 0x17, 0x91, 0xd5, 0x08, 0x80, 0x12, 0xbb,
-    0xf9, 0xe7, 0xfd, 0xc4, 0x27, 0x54, 0xc9, 0xf1, 0xf0, 0xd3, 0xa4, 0x9e,
-    0x84, 0xde, 0xc8, 0x51, 0x6d, 0x90, 0xdf, 0xf7, 0x7e, 0xc3, 0x76, 0xf3,
-    0x90, 0x75, 0x42, 0xaa, 0xac, 0x94, 0x0c, 0xed, 0x17, 0x4c, 0x03, 0xac,
-    0xb3, 0xab, 0x73, 0x4e, 0xa9, 0x17, 0xbf, 0xfa, 0x39, 0x9b, 0x1e, 0x5f,
-    0xe6, 0x04, 0xeb, 0xf9, 0xf7, 0x90, 0xc0, 0x4e, 0xbf, 0xe8, 0xde, 0x48,
-    0x2b, 0x7f, 0x1d, 0x4e, 0x7c, 0x62, 0x59, 0x7e, 0x79, 0x64, 0xf0, 0x75,
-    0xff, 0xd1, 0xad, 0x62, 0xfc, 0x30, 0xbd, 0x1d, 0x7f, 0xf2, 0x46, 0x85,
-    0xe5, 0xf3, 0x59, 0xc3, 0xaf, 0xff, 0xf2, 0x6a, 0x7c, 0x67, 0x04, 0x1b,
-    0x50, 0xc6, 0x0b, 0xf0, 0xeb, 0xfd, 0xbc, 0xb5, 0x34, 0xa2, 0x73, 0xa8,
-    0x29, 0xa1, 0xb4, 0x98, 0x50, 0xbc, 0x86, 0x06, 0x2b, 0xff, 0xff, 0x75,
-    0x37, 0xf6, 0x6f, 0xee, 0x72, 0x3d, 0xff, 0xd1, 0x97, 0x70, 0xeb, 0xe0,
-    0x85, 0xc4, 0xeb, 0xff, 0x4a, 0x07, 0xdc, 0x4d, 0x98, 0x13, 0xaf, 0xfc,
-    0xfd, 0x6a, 0x3f, 0xcd, 0x3f, 0x4e, 0xbf, 0xff, 0x68, 0x7e, 0x75, 0xd3,
-    0xdf, 0x80, 0x45, 0xe4, 0x75, 0xfe, 0xea, 0x29, 0xb6, 0x0e, 0x28, 0x75,
-    0xff, 0x43, 0x2b, 0xec, 0x20, 0xce, 0x75, 0xff, 0xf0, 0xe6, 0xb1, 0x70,
-    0xdc, 0xf2, 0x73, 0x0e, 0xb6, 0x35, 0x17, 0x7e, 0x38, 0xd8, 0x71, 0x7f,
-    0x4f, 0x9c, 0x46, 0xc1, 0xd7, 0xc2, 0x18, 0x59, 0xd7, 0xed, 0x98, 0x20,
-    0x73, 0xaf, 0xe7, 0xff, 0x02, 0xf2, 0x3a, 0xa0, 0xfc, 0xf0, 0x81, 0x09,
-    0xe9, 0x11, 0x97, 0xd8, 0x4f, 0xd4, 0x2e, 0xdf, 0xce, 0x4c, 0x18, 0x53,
-    0xe4, 0x6c, 0x6d, 0x4a, 0x47, 0x09, 0x88, 0x3a, 0x7d, 0xf9, 0xf0, 0xc6,
-    0x21, 0xe8, 0xc0, 0xaf, 0xfe, 0xc1, 0xff, 0x33, 0x9a, 0xf4, 0x61, 0xd7,
-    0xfd, 0xbf, 0xb3, 0x89, 0x3b, 0xac, 0xeb, 0x67, 0xe7, 0xf4, 0x28, 0x37,
-    0x95, 0x32, 0x43, 0xaf, 0xa0, 0x5e, 0x47, 0x5f, 0xb1, 0x5d, 0xc7, 0xff,
-    0x86, 0xfb, 0x83, 0xf7, 0xf6, 0xce, 0xa4, 0x73, 0x47, 0x5f, 0xff, 0xa0,
-    0x65, 0x9d, 0x45, 0x87, 0x26, 0x8c, 0xe1, 0xd7, 0xcd, 0xea, 0x4c, 0x75,
-    0xff, 0xf8, 0x71, 0x45, 0x10, 0x3d, 0x49, 0xba, 0x9b, 0xf8, 0xea, 0x83,
-    0xf9, 0xc2, 0x2b, 0xcd, 0x7e, 0x1d, 0x7e, 0xd3, 0x63, 0x8a, 0x1d, 0x5d,
-    0x3c, 0x3f, 0xc6, 0xef, 0xf6, 0x4b, 0x10, 0x3d, 0x43, 0xaf, 0xbd, 0x25,
-    0xf4, 0xeb, 0xe4, 0x51, 0x19, 0x3a, 0xb0, 0xf1, 0x04, 0x8a, 0xef, 0x98,
-    0x75, 0xf6, 0x86, 0x16, 0x75, 0x41, 0xb7, 0xdc, 0x5e, 0xfb, 0x3b, 0x25,
-    0x9d, 0x50, 0xac, 0xce, 0x4c, 0xb8, 0x84, 0xa1, 0x77, 0x61, 0x96, 0xec,
-    0x62, 0x47, 0xa7, 0x40, 0x2b, 0xed, 0x90, 0xde, 0x0a, 0xda, 0x75, 0xba,
-    0x75, 0xda, 0x91, 0xd5, 0xf9, 0xa6, 0x00, 0x85, 0xfd, 0x3c, 0xd2, 0x55,
-    0x72, 0x73, 0xaf, 0x3e, 0x70, 0xeb, 0xc3, 0x9e, 0x3a, 0xba, 0x6d, 0x04,
-    0x6a, 0xef, 0x09, 0xd7, 0xa3, 0x7d, 0x1d, 0x7c, 0x83, 0x2c, 0x3a, 0xf4,
-    0xee, 0x27, 0x50, 0x4f, 0x59, 0x63, 0x9e, 0x1f, 0xbf, 0x67, 0xba, 0x9e,
-    0x3a, 0xfc, 0xfb, 0xe6, 0xfe, 0x3a, 0xca, 0x74, 0xf3, 0xbc, 0x4d, 0x72,
-    0x70, 0xeb, 0xfa, 0x7f, 0x93, 0xbb, 0xf4, 0xea, 0x56, 0x53, 0xdf, 0x86,
-    0x99, 0x10, 0x63, 0x5a, 0x3e, 0xf4, 0xa5, 0xc5, 0x6f, 0xfb, 0x02, 0x14,
-    0xdf, 0x37, 0xf1, 0xd7, 0xcd, 0x18, 0x91, 0xd5, 0xd3, 0xd9, 0x73, 0x9b,
-    0xfd, 0x19, 0xe8, 0xeb, 0x84, 0xea, 0x9c, 0xf4, 0x42, 0x43, 0x7f, 0xf0,
-    0x60, 0x3c, 0x8f, 0x23, 0x50, 0x27, 0x5f, 0x4d, 0x1b, 0x52, 0x3a, 0xfe,
-    0xf3, 0x42, 0x15, 0xf0, 0xeb, 0xfe, 0x9b, 0x5b, 0x1c, 0x67, 0x00, 0x4e,
-    0xbe, 0xcf, 0x62, 0xce, 0xb8, 0x54, 0x3a, 0xda, 0x73, 0x6c, 0x02, 0x0b,
-    0xfb, 0xa0, 0x9e, 0x6e, 0xa1, 0xd7, 0xc2, 0x39, 0xe3, 0xaa, 0x13, 0x9e,
-    0x09, 0x1e, 0x21, 0x28, 0x4a, 0x85, 0xd3, 0x39, 0x74, 0x9b, 0xc5, 0xf7,
-    0xf7, 0xc9, 0xa3, 0xc3, 0xb0, 0xeb, 0xff, 0xc3, 0x1b, 0x39, 0x1c, 0xc4,
-    0xec, 0x04, 0xeb, 0xc2, 0xeb, 0x3a, 0xa4, 0x89, 0x3c, 0x31, 0x44, 0x8b,
-    0x30, 0xac, 0xbb, 0xa0, 0xd5, 0x6c, 0xf1, 0x5a, 0x0e, 0x2b, 0x51, 0xb8,
-    0x94, 0xb5, 0x3c, 0x3a, 0xe5, 0x0d, 0x90, 0xce, 0x20, 0xe4, 0xed, 0xaa,
-    0x90, 0xdc, 0x6c, 0xab, 0xed, 0xe3, 0xe3, 0x48, 0xc4, 0x66, 0x96, 0x0f,
-    0xc8, 0xda, 0xd7, 0x19, 0xcf, 0x67, 0xbd, 0xde, 0x52, 0x67, 0xf1, 0xd0,
-    0xaa, 0x5b, 0x86, 0x56, 0x66, 0xa7, 0x87, 0x3d, 0x38, 0xbc, 0x08, 0x49,
-    0x32, 0x85, 0xb7, 0x28, 0x07, 0xec, 0xaa, 0xed, 0xa8, 0xc1, 0x29, 0x87,
-    0x79, 0x27, 0xdb, 0x74, 0xbb, 0x7f, 0xf9, 0x85, 0xbc, 0x98, 0xce, 0x35,
-    0xdd, 0xa6, 0x89, 0xb2, 0xff, 0x31, 0x9c, 0x6b, 0xbb, 0x4d, 0x15, 0x6d,
-    0xfe, 0x94, 0x81, 0xe1, 0x89, 0x1d, 0x7d, 0x9d, 0x7f, 0x1d, 0x65, 0x46,
-    0x1e, 0x90, 0x99, 0x5f, 0xee, 0x63, 0x63, 0xff, 0xab, 0x3a, 0xff, 0xa3,
-    0xb1, 0x3f, 0x23, 0x02, 0x75, 0x70, 0xfb, 0x3a, 0x6b, 0x7e, 0x8e, 0x2f,
-    0xa1, 0x3a, 0xf0, 0x70, 0x4e, 0xbc, 0xee, 0xd3, 0x45, 0x69, 0x7e, 0x53,
-    0x7d, 0x03, 0x73, 0xa9, 0xa7, 0xa4, 0x84, 0xf7, 0xff, 0x93, 0xd2, 0x86,
-    0xf5, 0x3d, 0xa7, 0xdc, 0xea, 0xe1, 0xf5, 0x6c, 0x21, 0xbf, 0xfd, 0xd4,
-    0x5c, 0x37, 0x17, 0x83, 0xed, 0xb3, 0xaf, 0xff, 0x9b, 0x1c, 0xcf, 0xdd,
-    0x6f, 0x28, 0x46, 0x9d, 0x7f, 0xfd, 0x2d, 0x60, 0xc2, 0xdf, 0x3d, 0xe8,
-    0x59, 0xd7, 0x7b, 0xd0, 0x89, 0x97, 0x4d, 0xbf, 0xff, 0xfd, 0x1b, 0x13,
-    0xda, 0xc5, 0x1b, 0xd4, 0xf6, 0x4c, 0x30, 0xb9, 0xf1, 0x93, 0xaf, 0xf4,
-    0x79, 0xfb, 0xf0, 0x30, 0x75, 0xf4, 0xbc, 0x93, 0x9d, 0x7e, 0xfb, 0xe1,
-    0x8f, 0xce, 0xad, 0xcf, 0x2f, 0x61, 0x15, 0xfe, 0x79, 0x79, 0x27, 0xea,
-    0x1d, 0x50, 0x7a, 0xe8, 0x4b, 0x7e, 0xce, 0xa6, 0x2c, 0xeb, 0xff, 0x85,
-    0xd1, 0xbd, 0x70, 0x4f, 0xc4, 0x3a, 0xa7, 0x3e, 0x7e, 0x92, 0xdf, 0xe9,
-    0x47, 0x27, 0x8e, 0x4e, 0x75, 0xec, 0xe7, 0xe7, 0x5f, 0xa6, 0xc0, 0xad,
-    0x5c, 0xeb, 0xf8, 0x61, 0x9d, 0xe5, 0xa3, 0xa9, 0x0f, 0xd6, 0x61, 0xcd,
-    0xa2, 0xba, 0x84, 0x6d, 0xe4, 0x2a, 0x6f, 0xff, 0xff, 0xec, 0x46, 0xe7,
-    0xa0, 0x7d, 0xaf, 0x90, 0x81, 0xc5, 0xfc, 0xe4, 0x24, 0x9f, 0x47, 0x5f,
-    0xd9, 0xe7, 0x1f, 0xc0, 0x75, 0xfd, 0xdf, 0x89, 0x3b, 0x89, 0xd5, 0x23,
-    0xda, 0xc2, 0xcb, 0x30, 0xaa, 0x5e, 0xe5, 0x88, 0x4b, 0x4e, 0x44, 0x12,
-    0x7c, 0x86, 0xb3, 0x49, 0x12, 0x1c, 0x7c, 0x2d, 0x5b, 0xd7, 0x61, 0xaa,
-    0xf0, 0x87, 0x18, 0x7f, 0x68, 0x9b, 0xd0, 0xe1, 0xbf, 0xcc, 0x67, 0x1a,
-    0xee, 0xd3, 0x45, 0x81, 0x7e, 0xe3, 0x5d, 0xda, 0x68, 0x9d, 0x6f, 0xff,
-    0xf7, 0x62, 0x70, 0xe2, 0xd8, 0xd6, 0xb3, 0xa9, 0xa0, 0x4e, 0x75, 0xf9,
-    0x85, 0xbc, 0x98, 0xc4, 0x4b, 0x4c, 0x67, 0x7f, 0xa5, 0xa6, 0x14, 0x52,
-    0x16, 0x75, 0xfb, 0x8d, 0x77, 0x69, 0xa2, 0xd9, 0xbf, 0xff, 0xcf, 0x26,
-    0x35, 0x09, 0x81, 0x4c, 0xd6, 0x78, 0x60, 0xeb, 0xff, 0x7f, 0x1a, 0x63,
-    0xa8, 0xd7, 0xe1, 0xd7, 0xfd, 0x12, 0x8e, 0x4f, 0x1c, 0x9c, 0xeb, 0x31,
-    0x89, 0x83, 0xac, 0xcd, 0xd7, 0x04, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0x0d,
-    0x31, 0x9c, 0x7d, 0x75, 0xe4, 0x75, 0xf3, 0x5d, 0xda, 0x68, 0xb9, 0xac,
-    0xb3, 0xab, 0x86, 0xf5, 0x92, 0xdb, 0xfd, 0xc1, 0xcd, 0xff, 0x49, 0x1d,
-    0x74, 0xcb, 0x3a, 0x8e, 0xb3, 0x18, 0x7e, 0xc8, 0x44, 0xc9, 0x9e, 0xd8,
-    0xbd, 0xfb, 0x8d, 0x77, 0x69, 0xa2, 0xef, 0xbf, 0xd2, 0x63, 0x5c, 0xe2,
-    0x32, 0x75, 0x98, 0xc3, 0xe8, 0x73, 0x3b, 0xe6, 0x14, 0x0f, 0xe7, 0x54,
-    0x3e, 0x52, 0x36, 0x5b, 0xcb, 0xf6, 0x9a, 0xee, 0xae, 0x93, 0xee, 0xdc,
-    0x87, 0x62, 0xe1, 0xaa, 0xe8, 0x5f, 0xc6, 0x7a, 0x28, 0x5a, 0x8c, 0x2b,
-    0xd0, 0xad, 0xfa, 0x4f, 0x7f, 0xe6, 0x5c, 0x67, 0xd2, 0x0e, 0xf2, 0x3a,
-    0xff, 0xec, 0x9f, 0x19, 0xee, 0x6b, 0x10, 0x4e, 0xb9, 0x18, 0xea, 0x20,
-    0x44, 0xfe, 0xfd, 0xad, 0x2d, 0xe4, 0x75, 0xff, 0xff, 0xff, 0xba, 0x9d,
-    0x48, 0x1f, 0x0b, 0xa9, 0x9e, 0x07, 0x93, 0xda, 0xea, 0x72, 0x27, 0x7e,
-    0x34, 0xeb, 0xb5, 0x07, 0x5f, 0xfd, 0xbb, 0x40, 0xfb, 0xfb, 0x30, 0x54,
-    0x3a, 0xf0, 0xbb, 0x10, 0x98, 0xc3, 0x49, 0xf5, 0x09, 0x7f, 0x0a, 0xde,
-    0x03, 0xac, 0xeb, 0xf6, 0x6d, 0x7a, 0x14, 0x3a, 0xdb, 0x47, 0x54, 0xe6,
-    0xf7, 0x0a, 0xab, 0x87, 0xf2, 0x2b, 0x17, 0xfe, 0xd3, 0xa9, 0xd4, 0x81,
-    0x04, 0x1d, 0x7f, 0xee, 0xbf, 0x9f, 0xbb, 0xcb, 0x3c, 0x75, 0x61, 0xfd,
-    0x21, 0xe5, 0xcf, 0xf9, 0xd7, 0xff, 0xff, 0x85, 0xd9, 0x1c, 0xf7, 0xb2,
-    0x78, 0x17, 0x53, 0x4b, 0x8c, 0x10, 0x9d, 0x58, 0x88, 0xae, 0x0b, 0x5f,
-    0xee, 0xe0, 0x53, 0x67, 0x30, 0xeb, 0xce, 0xed, 0x34, 0x4a, 0xf7, 0xf9,
-    0x47, 0x1f, 0xfd, 0x9d, 0x3a, 0x9a, 0x7b, 0x48, 0x4f, 0x7f, 0xfb, 0xdd,
-    0xc9, 0x37, 0xa8, 0x18, 0x1f, 0x1d, 0x52, 0x47, 0xb7, 0x21, 0x1a, 0x24,
-    0x37, 0x4a, 0x73, 0xaf, 0xfc, 0x2e, 0xc8, 0x7b, 0x13, 0xe3, 0x27, 0x5f,
-    0xff, 0xb1, 0x3f, 0xc5, 0xa7, 0xb5, 0x0b, 0x7d, 0xfc, 0x75, 0xff, 0x42,
-    0xfd, 0x93, 0x49, 0x3c, 0x75, 0x49, 0x11, 0x9e, 0x54, 0xbe, 0x03, 0xf2,
-    0x47, 0x5f, 0xf4, 0x34, 0x62, 0x7f, 0xdf, 0xc7, 0x5f, 0xff, 0xe4, 0xf3,
-    0xad, 0xc7, 0xfe, 0xb2, 0xe3, 0x3b, 0x52, 0x73, 0xa8, 0x28, 0xba, 0x42,
-    0x17, 0x38, 0xbf, 0xe0, 0x7e, 0xb7, 0x96, 0xb8, 0x13, 0xaf, 0xff, 0xf6,
-    0x20, 0xfb, 0x07, 0xe0, 0xb8, 0x60, 0x67, 0x8e, 0x1d, 0x6c, 0xf2, 0x25,
-    0xf6, 0x1d, 0x5f, 0xf6, 0xff, 0xe7, 0x33, 0x3d, 0xa3, 0xa8, 0x2a, 0xb4,
-    0x32, 0x19, 0x7d, 0x86, 0xe8, 0xc3, 0x17, 0xe9, 0x55, 0xff, 0xbc, 0xf2,
-    0xd7, 0x63, 0x9f, 0x42, 0x75, 0xff, 0xde, 0x4d, 0x89, 0xe9, 0xa5, 0x03,
-    0xe3, 0xaf, 0xff, 0x3e, 0x4b, 0xb8, 0x83, 0x9f, 0xed, 0xe1, 0xd7, 0x9e,
-    0x4c, 0x42, 0xf5, 0x0c, 0xa1, 0x36, 0x18, 0x55, 0x64, 0x63, 0x0b, 0x34,
-    0xd4, 0xae, 0x7f, 0x2d, 0xfd, 0x40, 0xda, 0x45, 0xbf, 0xfd, 0x9d, 0x60,
-    0x70, 0x28, 0x3e, 0xce, 0x9d, 0x7b, 0xd0, 0x12, 0xaf, 0xff, 0x75, 0xd3,
-    0xd1, 0x24, 0xe4, 0xe0, 0xfc, 0xab, 0xfc, 0xed, 0x60, 0x3c, 0x54, 0xb1,
-    0x07, 0xcb, 0xa1, 0xbb, 0x30, 0x16, 0x52, 0xe3, 0x63, 0x46, 0x5c, 0xfb,
-    0x6f, 0xa1, 0x5b, 0xb2, 0x15, 0x97, 0xff, 0x98, 0x5b, 0xc9, 0x8c, 0xe3,
-    0x5d, 0xda, 0x68, 0x98, 0x6f, 0xff, 0xec, 0xd8, 0xe1, 0xec, 0x31, 0xee,
-    0xe0, 0x41, 0xed, 0x1d, 0x7f, 0xfb, 0x8f, 0xfb, 0x0a, 0x7a, 0x4c, 0xc6,
-    0xa4, 0x75, 0xd8, 0xc0, 0xa2, 0xaf, 0xea, 0xed, 0xff, 0xca, 0x8c, 0xde,
-    0x40, 0x7f, 0x0c, 0x48, 0xeb, 0xf6, 0x2f, 0xe6, 0xea, 0xe7, 0x5f, 0xd0,
-    0xbc, 0xfe, 0x36, 0x1d, 0x41, 0x3d, 0xbe, 0x96, 0xdf, 0xee, 0x63, 0x63,
-    0xff, 0xab, 0x3a, 0xfd, 0xd8, 0x0a, 0x28, 0x75, 0x21, 0xff, 0x70, 0x8b,
-    0x68, 0xd6, 0xff, 0x43, 0xcf, 0xe5, 0x1f, 0x87, 0x5f, 0x9f, 0x92, 0x75,
-    0x9d, 0x42, 0x7b, 0x20, 0x33, 0xbf, 0xff, 0x27, 0x3a, 0xff, 0x03, 0x92,
-    0xec, 0x6c, 0x0c, 0x1d, 0x7f, 0xcc, 0xfd, 0xec, 0x37, 0xa9, 0x31, 0xd7,
-    0xc0, 0x5e, 0x04, 0xeb, 0x66, 0xe7, 0xbb, 0xb4, 0x79, 0x5d, 0x46, 0xf8,
-    0xc2, 0xd2, 0xfe, 0x5c, 0x60, 0xfb, 0x6c, 0xeb, 0x68, 0xeb, 0xf4, 0x60,
-    0xfb, 0x6c, 0xeb, 0xfb, 0xa9, 0xed, 0x3e, 0xff, 0x0f, 0x9a, 0x62, 0xe5,
-    0x88, 0x5f, 0xe9, 0x7a, 0x17, 0xb3, 0xf9, 0x1d, 0x7f, 0xff, 0x99, 0xda,
-    0xf6, 0x77, 0xe0, 0xe4, 0xe9, 0x83, 0xbc, 0xb4, 0x75, 0xf9, 0x9f, 0x67,
-    0x5a, 0x75, 0x87, 0x11, 0x1c, 0xec, 0xd7, 0xff, 0xbc, 0x2f, 0xff, 0x71,
-    0x02, 0x0f, 0x68, 0xeb, 0xfe, 0x89, 0xfe, 0xcb, 0xa0, 0x79, 0xce, 0xa8,
-    0x44, 0x2f, 0x12, 0x6f, 0xfe, 0xcd, 0xe5, 0xf3, 0xae, 0xd8, 0x10, 0x9d,
-    0x7f, 0x6c, 0xfb, 0xe1, 0x8f, 0xce, 0xbf, 0xfd, 0x1e, 0xfe, 0x25, 0x9b,
-    0xfa, 0x70, 0x32, 0x75, 0x41, 0xff, 0x21, 0x8d, 0xfc, 0xff, 0xf3, 0x89,
-    0xc3, 0xaf, 0x7b, 0xe6, 0x1d, 0x5f, 0x9e, 0x57, 0xd2, 0xdb, 0xfb, 0x48,
-    0xa2, 0xdf, 0xc7, 0x5f, 0xff, 0xfb, 0x99, 0xb2, 0x07, 0xdf, 0x3e, 0x8c,
-    0x75, 0xd3, 0xd1, 0xed, 0x1d, 0x7f, 0x0e, 0x6b, 0xe3, 0x55, 0x47, 0x56,
-    0xe8, 0xcd, 0xe1, 0x6e, 0xc6, 0xeb, 0xef, 0x9b, 0x36, 0xa7, 0x3a, 0xb0,
-    0xf7, 0x54, 0x33, 0xb2, 0xb9, 0xd7, 0x7b, 0x0e, 0xbf, 0xfc, 0xa9, 0x18,
-    0x5b, 0xa7, 0x5f, 0xdd, 0x83, 0xaa, 0x0f, 0x7c, 0x02, 0xb7, 0xfb, 0xa9,
-    0x33, 0xb7, 0x52, 0x3a, 0xff, 0x40, 0xf9, 0xd6, 0x9e, 0x3a, 0xff, 0xb1,
-    0x31, 0x63, 0x93, 0xb9, 0xd7, 0xe8, 0xf6, 0xbf, 0x01, 0xd4, 0xac, 0xa6,
-    0xa7, 0x8e, 0x4d, 0x21, 0xe9, 0x98, 0x98, 0x78, 0xd6, 0xff, 0xfd, 0xd1,
-    0xcf, 0x75, 0x33, 0x7f, 0x66, 0xc8, 0xd1, 0xd7, 0xff, 0x38, 0xf6, 0x10,
-    0x29, 0xac, 0x91, 0xd7, 0xa3, 0xff, 0xa7, 0x56, 0x22, 0xcd, 0xd5, 0x45,
-    0x02, 0xf7, 0xd0, 0xe1, 0xd7, 0x95, 0x3a, 0x55, 0x1d, 0x4e, 0x78, 0x3a,
-    0x1d, 0xbf, 0xc2, 0xec, 0xc7, 0xb2, 0x73, 0xac, 0xc2, 0xa9, 0x95, 0xbb,
-    0x11, 0x90, 0x06, 0x11, 0x59, 0x18, 0x03, 0x61, 0x1b, 0xba, 0xac, 0xd0,
-    0xc4, 0xe4, 0x2a, 0xd6, 0x45, 0xd8, 0x61, 0xfe, 0xd4, 0x31, 0xa7, 0xea,
-    0x37, 0x5f, 0x46, 0x1c, 0x06, 0xed, 0xb2, 0x1b, 0xff, 0xee, 0x26, 0xf2,
-    0xd2, 0x7b, 0xb1, 0xcf, 0x41, 0xd7, 0xee, 0x35, 0xdd, 0xa6, 0x8a, 0xba,
-    0xf7, 0x21, 0x67, 0x5f, 0xf4, 0x98, 0xce, 0x35, 0xdd, 0xa6, 0x88, 0xf2,
-    0xff, 0xa2, 0x51, 0xc9, 0xe3, 0x93, 0x9d, 0x7f, 0xe8, 0xf2, 0x01, 0x53,
-    0x92, 0x9e, 0x63, 0xac, 0xc0, 0x53, 0x5e, 0xc4, 0xfe, 0x19, 0xb8, 0xd8,
-    0xa2, 0xe8, 0xe6, 0xfd, 0xc6, 0xbb, 0xb4, 0xd1, 0x60, 0xde, 0x52, 0x27,
-    0x3a, 0xff, 0xfe, 0x10, 0x3c, 0xeb, 0xcd, 0xb0, 0x73, 0x39, 0x2f, 0xb2,
-    0x3a, 0xfd, 0x83, 0x9e, 0xd1, 0xd7, 0xfb, 0x8e, 0xbf, 0xbc, 0x7d, 0xce,
-    0xb3, 0x18, 0x98, 0x52, 0x86, 0x6d, 0x1d, 0x76, 0x0f, 0xa4, 0xb7, 0xf9,
-    0x8c, 0xe3, 0x5d, 0xda, 0x68, 0xb2, 0xaf, 0xdc, 0x6b, 0xbb, 0x4d, 0x16,
-    0x9d, 0xff, 0x38, 0x7a, 0xf3, 0x75, 0x16, 0x75, 0x98, 0xc3, 0xeb, 0x59,
-    0x9d, 0xf9, 0x5a, 0x2a, 0xf5, 0x65, 0x59, 0x56, 0xce, 0xbf, 0xe5, 0x57,
-    0x51, 0x90, 0xbb, 0xb4, 0xeb, 0xf2, 0xb4, 0x54, 0x6b, 0x20, 0xeb, 0xfd,
-    0xf5, 0x79, 0xed, 0x26, 0x8e, 0xb2, 0x1d, 0x4a, 0xa3, 0xc3, 0xdb, 0x34,
-    0xbf, 0xff, 0x93, 0xae, 0x3e, 0x96, 0x73, 0x20, 0x47, 0x3c, 0x75, 0xfb,
-    0x63, 0x87, 0x16, 0x75, 0xf2, 0xe3, 0x7d, 0x1d, 0x52, 0x44, 0xfe, 0x2a,
-    0xcc, 0x51, 0x7e, 0xf9, 0xce, 0x03, 0xa7, 0x5f, 0x91, 0x48, 0x16, 0x9d,
-    0x6c, 0xd1, 0xe8, 0x78, 0xaa, 0xff, 0xf8, 0x5b, 0xd4, 0xea, 0x72, 0x26,
-    0x67, 0x3a, 0x75, 0xff, 0x96, 0xb7, 0x96, 0xd8, 0x3a, 0x9c, 0x3a, 0xfc,
-    0xfa, 0xf4, 0x04, 0xea, 0x83, 0xe7, 0x02, 0x0d, 0x42, 0x35, 0xfb, 0x0b,
-    0x6b, 0xe8, 0xfb, 0x1d, 0x3a, 0xf9, 0xae, 0xed, 0x34, 0x5b, 0x97, 0xfe,
-    0xce, 0x60, 0xfc, 0xee, 0x6e, 0xc9, 0xd7, 0xe1, 0xfd, 0xf7, 0xd1, 0xd5,
-    0x07, 0xd0, 0xe8, 0x15, 0xba, 0x35, 0xf8, 0x45, 0xa8, 0x4a, 0xdf, 0xe7,
-    0x1f, 0xe6, 0x18, 0x59, 0xd7, 0x96, 0x28, 0x75, 0x84, 0xeb, 0xfe, 0xe8,
-    0x1f, 0x59, 0x82, 0xa1, 0xd7, 0xed, 0x3e, 0xee, 0x13, 0xac, 0x81, 0x3d,
-    0xef, 0x1b, 0xd4, 0x22, 0xbb, 0x06, 0xba, 0xdb, 0x7f, 0xd0, 0xe3, 0xdc,
-    0xc1, 0x69, 0xd7, 0xfb, 0xde, 0x49, 0xd7, 0x02, 0x75, 0x48, 0xf9, 0xb0,
-    0xd2, 0xff, 0xa0, 0x40, 0xb8, 0xd7, 0x90, 0xeb, 0xe0, 0xc6, 0x70, 0xeb,
-    0xf7, 0xcd, 0xf4, 0x8a, 0x1d, 0x67, 0x9c, 0xf2, 0xf7, 0x20, 0xbf, 0xfa,
-    0x59, 0xd4, 0xe0, 0x7b, 0x02, 0xd3, 0xaf, 0xf6, 0xf2, 0x81, 0xf6, 0x7e,
-    0x75, 0xf6, 0xbf, 0x4f, 0x1d, 0x4e, 0x8c, 0x0d, 0x14, 0x81, 0x0b, 0xe9,
-    0x9d, 0xff, 0xde, 0x4f, 0xe2, 0x41, 0xec, 0x0b, 0x4e, 0xa3, 0xaf, 0x01,
-    0xfc, 0x75, 0xc0, 0x83, 0xaa, 0x46, 0xc3, 0xc3, 0x74, 0x75, 0xf6, 0xed,
-    0x4e, 0x1d, 0x7a, 0x16, 0xc6, 0x22, 0x1f, 0x73, 0xa5, 0x90, 0xf8, 0x2a,
-    0xa1, 0x31, 0x94, 0x86, 0x55, 0xe1, 0xf6, 0xd9, 0xd7, 0xfd, 0x26, 0x33,
-    0x8d, 0x77, 0x69, 0xa2, 0x87, 0xa4, 0x3e, 0x37, 0x1e, 0xbf, 0x7f, 0x0d,
-    0xc5, 0x9d, 0x7d, 0x13, 0x60, 0x4e, 0xae, 0x1e, 0x46, 0x89, 0xef, 0xfb,
-    0x20, 0x3d, 0x8d, 0xa8, 0x98, 0xeb, 0xfd, 0xfa, 0x77, 0xb9, 0xfb, 0x9d,
-    0x4b, 0x3e, 0xdf, 0xce, 0xaa, 0x11, 0x64, 0xf0, 0x8f, 0xbf, 0xf3, 0x86,
-    0x03, 0xd4, 0x14, 0x59, 0xd7, 0xff, 0x6a, 0x06, 0x6c, 0x1f, 0xdf, 0xd8,
-    0x75, 0xfe, 0xd0, 0x1b, 0x9e, 0x18, 0x3a, 0x96, 0x8a, 0xee, 0x9d, 0xf9,
-    0x0a, 0xff, 0xe0, 0x4b, 0xaf, 0xcd, 0xfd, 0x09, 0x39, 0xd7, 0xfd, 0x12,
-    0x8e, 0x4f, 0x1c, 0x9c, 0xeb, 0xf2, 0x7b, 0x4e, 0x87, 0x5f, 0xf7, 0x3f,
-    0xe3, 0x8f, 0xb3, 0xf3, 0xab, 0xf3, 0xde, 0x01, 0x2d, 0xef, 0xbc, 0x91,
-    0xd7, 0xf7, 0xdf, 0x02, 0x32, 0x73, 0xaa, 0x47, 0x9b, 0x30, 0xf5, 0xff,
-    0xcd, 0x18, 0xf0, 0xe6, 0xcc, 0xe4, 0x8e, 0xbf, 0xe0, 0x0a, 0x9f, 0x7b,
-    0xd0, 0x68, 0xeb, 0xfc, 0x22, 0xfe, 0xfb, 0x0d, 0x3a, 0xf8, 0x7f, 0x9f,
-    0xf3, 0xab, 0x0f, 0x59, 0x0c, 0xaf, 0xf6, 0xbe, 0x7b, 0xe0, 0x70, 0x4e,
-    0xb7, 0xe7, 0x59, 0x37, 0x3c, 0x7e, 0x1b, 0x5f, 0x9f, 0x7d, 0x79, 0x0e,
-    0xa8, 0x4e, 0xbb, 0x08, 0xd1, 0x0f, 0xb0, 0x92, 0x16, 0x7d, 0x14, 0x5f,
-    0x9c, 0x0a, 0x47, 0xd3, 0xaf, 0xca, 0xac, 0xe4, 0x68, 0xea, 0x98, 0xf4,
-    0xc4, 0xa6, 0xff, 0x9f, 0x51, 0x36, 0xf2, 0xcd, 0x87, 0x5f, 0xff, 0x83,
-    0xd8, 0xfa, 0xc7, 0x85, 0xff, 0xd6, 0xa3, 0xf2, 0xae, 0x0e, 0x1d, 0x7e,
-    0x9e, 0x27, 0x7d, 0x1d, 0x58, 0x89, 0x64, 0x59, 0x71, 0x5b, 0xbf, 0x01,
-    0xd7, 0xf3, 0xff, 0x30, 0xc0, 0x4e, 0xa8, 0x3c, 0x4e, 0x8b, 0xd9, 0x85,
-    0x61, 0xb0, 0x6c, 0x56, 0xd0, 0xd5, 0x79, 0xe2, 0xac, 0xe7, 0x10, 0xc8,
-    0x94, 0x20, 0x03, 0x0f, 0xec, 0x87, 0xf2, 0x86, 0xcd, 0x87, 0x06, 0xf0,
-    0x94, 0x42, 0x19, 0xa3, 0x41, 0xe4, 0x6a, 0xeb, 0x84, 0x57, 0x63, 0x1a,
-    0x78, 0x6a, 0x7e, 0x60, 0x28, 0xba, 0x84, 0xbf, 0xa5, 0x0f, 0x02, 0x15,
-    0x9b, 0x08, 0xb6, 0xe1, 0xa3, 0xf5, 0xc6, 0xfe, 0x62, 0x78, 0xe4, 0x96,
-    0x75, 0xfe, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x2f, 0x3a, 0x87, 0x48, 0x51,
-    0x26, 0xf0, 0xc6, 0x05, 0x94, 0xb0, 0xdd, 0xe5, 0x40, 0x72, 0x36, 0x65,
-    0xa9, 0xf6, 0x15, 0x43, 0x58, 0x4a, 0x6a, 0x3c, 0x5d, 0x85, 0xf7, 0xf9,
-    0x8c, 0xe3, 0x5d, 0xda, 0x68, 0xa5, 0xaf, 0xdc, 0x6b, 0xbb, 0x4d, 0x16,
-    0x15, 0xff, 0xfa, 0x30, 0x43, 0x1d, 0x8d, 0xfd, 0x82, 0xeb, 0x3a, 0xfe,
-    0x07, 0x12, 0x77, 0x59, 0xd6, 0x63, 0x11, 0x62, 0xb3, 0x3d, 0xb5, 0x1b,
-    0xfc, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x59, 0x77, 0x71, 0x43, 0xaf, 0x98,
-    0x51, 0x56, 0x56, 0x0e, 0xbc, 0xc7, 0xd5, 0x9d, 0x4d, 0x3c, 0xd0, 0x17,
-    0x50, 0xa2, 0x1b, 0x4c, 0x96, 0xfc, 0xeb, 0x94, 0x9c, 0xeb, 0x9f, 0x92,
-    0x35, 0x38, 0x23, 0x7f, 0xcf, 0xb8, 0xe6, 0xfe, 0x85, 0x0e, 0xbf, 0xd3,
-    0xef, 0xa8, 0x0f, 0x90, 0xeb, 0xf4, 0x66, 0xc8, 0xd1, 0xd6, 0x87, 0x3d,
-    0xb6, 0x4d, 0x29, 0xd1, 0x76, 0x30, 0x94, 0xbe, 0x79, 0x48, 0x27, 0x5f,
-    0xcf, 0xc8, 0xf3, 0xf4, 0xeb, 0xcc, 0xb2, 0xc9, 0x57, 0xfd, 0x12, 0xdf,
-    0xdc, 0x8c, 0xdc, 0xa6, 0x0b, 0xfb, 0xfe, 0x03, 0xef, 0x9e, 0x4d, 0xd9,
-    0x3a, 0xe8, 0xd1, 0xd4, 0x14, 0xc0, 0xfa, 0x42, 0x29, 0x5a, 0x49, 0xd8,
-    0x75, 0x7f, 0x23, 0xeb, 0xfd, 0x00, 0xeb, 0xff, 0xfb, 0xa9, 0xee, 0xe6,
-    0x87, 0x16, 0x0d, 0x75, 0xe4, 0x75, 0xfe, 0x89, 0x79, 0xfa, 0xe1, 0x3a,
-    0xb1, 0x11, 0x5c, 0x59, 0xb4, 0x8e, 0xb4, 0x8e, 0xb4, 0x8e, 0xa8, 0x36,
-    0x0a, 0x08, 0x20, 0x85, 0xff, 0xfb, 0xda, 0x46, 0xe0, 0xf2, 0x07, 0x03,
-    0x8a, 0x1d, 0x6d, 0xce, 0xbb, 0x40, 0x3a, 0xb0, 0xfe, 0x74, 0xa5, 0xe1,
-    0x1b, 0x92, 0x0e, 0xbf, 0x86, 0x16, 0x31, 0x87, 0x5d, 0x28, 0x3a, 0x82,
-    0x7a, 0x53, 0x0a, 0x00, 0xa6, 0xff, 0xff, 0xfb, 0xb1, 0xed, 0x26, 0xb5,
-    0x1e, 0xea, 0x47, 0x3f, 0x5b, 0xca, 0x5e, 0x50, 0xeb, 0x93, 0x73, 0xae,
-    0x85, 0x9d, 0x7f, 0xff, 0x4a, 0x04, 0x12, 0x94, 0x7b, 0xb8, 0xbf, 0xb1,
-    0xf9, 0xd7, 0x35, 0x88, 0x5e, 0x0a, 0x9d, 0x2c, 0x30, 0xe6, 0xc8, 0xca,
-    0x5a, 0x99, 0xc8, 0x5b, 0xba, 0x90, 0xc2, 0x9b, 0x50, 0x80, 0xf1, 0x86,
-    0xc7, 0xed, 0xb1, 0x6f, 0xa2, 0xb7, 0xff, 0x98, 0x5b, 0xc9, 0x8c, 0xe3,
-    0x5d, 0xda, 0x68, 0xa3, 0x2f, 0xdb, 0x23, 0x91, 0xf9, 0xd7, 0xe1, 0x7f,
-    0xe3, 0xe9, 0xd7, 0xff, 0x6e, 0xd4, 0xe7, 0x73, 0x06, 0x5a, 0x3a, 0xcc,
-    0x42, 0x25, 0x3a, 0x53, 0xe2, 0x8a, 0x93, 0x27, 0xe7, 0x90, 0xf0, 0x59,
-    0xcb, 0xcf, 0x67, 0xea, 0x1c, 0x1e, 0x87, 0x5d, 0xff, 0xcc, 0x3c, 0x98,
-    0xce, 0x35, 0xdd, 0xa6, 0x88, 0xe6, 0xff, 0xf3, 0x0b, 0x79, 0x31, 0x9c,
-    0x6b, 0xbb, 0x4d, 0x13, 0x95, 0xfe, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x2c,
-    0xcb, 0xfe, 0x96, 0x9d, 0x6c, 0x77, 0xdf, 0x9d, 0x7f, 0xca, 0xb8, 0x38,
-    0xb8, 0xde, 0x16, 0x75, 0xff, 0x7f, 0xc8, 0xf7, 0x5f, 0x79, 0x1d, 0x7f,
-    0xb3, 0x5c, 0xe6, 0x6f, 0xa3, 0xaf, 0xee, 0x37, 0xae, 0x8a, 0x93, 0xae,
-    0xdd, 0x67, 0x59, 0x85, 0x61, 0x1e, 0x50, 0x7d, 0x23, 0xa0, 0x19, 0xed,
-    0x98, 0x5f, 0xe6, 0x33, 0x8d, 0x77, 0x69, 0xa2, 0xdd, 0xbf, 0x85, 0xd8,
-    0xe4, 0xfd, 0x3a, 0xf2, 0x6f, 0xf9, 0xd7, 0xee, 0x35, 0xdd, 0xa6, 0x8a,
-    0x42, 0xff, 0xd9, 0xd4, 0xd9, 0xdc, 0xc1, 0x69, 0xd7, 0x9e, 0x4c, 0x61,
-    0xf8, 0x68, 0xce, 0xcc, 0x35, 0x1d, 0xdc, 0x2e, 0x5c, 0x23, 0x6f, 0xfe,
-    0x61, 0xe4, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x4a, 0x55, 0x3a, 0xe1, 0x34,
-    0xca, 0x2b, 0x57, 0x73, 0xff, 0xe3, 0x2d, 0x15, 0x8f, 0x46, 0x5b, 0xb4,
-    0x79, 0x7f, 0xa4, 0x83, 0xec, 0x40, 0x9d, 0x7b, 0x40, 0x59, 0xd6, 0x63,
-    0x73, 0xcc, 0x43, 0x0b, 0xc2, 0xf2, 0x3a, 0xff, 0xcf, 0x26, 0x33, 0x8d,
-    0x77, 0x69, 0xa2, 0x76, 0xba, 0x75, 0x73, 0xaf, 0xff, 0xc8, 0x10, 0x2e,
-    0x36, 0x9c, 0x23, 0x03, 0x8d, 0x3a, 0xff, 0xa2, 0x51, 0xc9, 0xe3, 0x93,
-    0x9d, 0x66, 0x31, 0x30, 0xb5, 0x8d, 0x75, 0x29, 0xc6, 0x85, 0x52, 0xff,
-    0xf9, 0x8f, 0xbb, 0x6e, 0x3f, 0xe7, 0xa0, 0x53, 0xf3, 0xaf, 0xfe, 0x75,
-    0xf7, 0x1a, 0xfd, 0x8f, 0xb2, 0x3a, 0xf2, 0x05, 0xce, 0xbf, 0xf8, 0x73,
-    0xaf, 0x3e, 0x68, 0x5f, 0x73, 0xae, 0xdb, 0x60, 0x28, 0xa0, 0xea, 0x26,
-    0x86, 0xaa, 0x4a, 0xad, 0xd7, 0x19, 0xa6, 0x93, 0xf6, 0xe1, 0xe9, 0x7f,
-    0xff, 0x05, 0xfc, 0xc6, 0x6a, 0x07, 0x7f, 0xf5, 0xa8, 0xfc, 0xeb, 0xf7,
-    0x1a, 0xee, 0xd3, 0x44, 0x59, 0x7f, 0xe7, 0x93, 0x19, 0xc6, 0xbb, 0xb4,
-    0xd1, 0x2e, 0xdf, 0xff, 0xd8, 0x1e, 0xc7, 0xd6, 0x3c, 0x2f, 0xfe, 0xb5,
-    0x1f, 0x95, 0x66, 0x31, 0x1b, 0x6b, 0x33, 0xdb, 0x4a, 0xbf, 0xfc, 0xc2,
-    0xde, 0x4c, 0x67, 0x1a, 0xee, 0xd3, 0x44, 0xc5, 0x7e, 0xe3, 0x5d, 0xda,
-    0x68, 0xaa, 0x6d, 0x87, 0x56, 0x1e, 0x12, 0x86, 0x77, 0xff, 0xff, 0xb8,
-    0xfd, 0xde, 0x59, 0xe6, 0x3a, 0xfa, 0xe2, 0x33, 0xee, 0xa7, 0x24, 0x75,
-    0x30, 0x89, 0xc7, 0x22, 0xbf, 0xfc, 0xc2, 0xde, 0x4c, 0x67, 0x1a, 0xee,
-    0xd3, 0x44, 0xe9, 0x7f, 0x91, 0xf9, 0x12, 0x7d, 0x87, 0x5f, 0xa6, 0x89,
-    0xa3, 0x47, 0x5f, 0xcc, 0xe2, 0x6c, 0xc1, 0x3a, 0x90, 0xf5, 0x74, 0x51,
-    0x79, 0x3b, 0x07, 0x30, 0x68, 0x6f, 0xfe, 0x06, 0xbd, 0x1b, 0xb0, 0x09,
-    0x91, 0x67, 0x52, 0xcf, 0xcb, 0xa5, 0x77, 0xfe, 0x79, 0x31, 0x9c, 0x6b,
-    0xbb, 0x4d, 0x13, 0xbd, 0xfb, 0xc0, 0x75, 0xa1, 0x57, 0xfe, 0x18, 0xf6,
-    0x6b, 0x33, 0x79, 0x1d, 0x41, 0x4f, 0xa3, 0x23, 0x1a, 0x59, 0x13, 0xa5,
-    0x78, 0x9a, 0xfe, 0x86, 0x3f, 0x1c, 0x09, 0xd4, 0xc1, 0xfe, 0x0a, 0x7d,
-    0xff, 0xe6, 0x16, 0xf2, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x28, 0x5b, 0xff,
-    0xff, 0xdd, 0x02, 0xd6, 0xf2, 0x61, 0xbd, 0x07, 0xa0, 0x72, 0x75, 0x01,
-    0x13, 0x1d, 0x7e, 0x06, 0xfe, 0x46, 0x9d, 0x7e, 0xcf, 0xf1, 0xc4, 0xeb,
-    0xd1, 0xfb, 0x13, 0x9e, 0x68, 0x94, 0x52, 0x23, 0xf4, 0x61, 0x91, 0x7f,
-    0xf9, 0x85, 0xbc, 0x98, 0xce, 0x35, 0xdd, 0xa6, 0x8a, 0x4a, 0xff, 0xff,
-    0x66, 0x98, 0xfb, 0x93, 0x75, 0xd7, 0xee, 0xc7, 0x80, 0xb3, 0xaa, 0x17,
-    0xf6, 0xe7, 0x8c, 0xe2, 0x47, 0x2d, 0x8c, 0xd7, 0x84, 0x6b, 0x95, 0x77,
-    0xf9, 0x17, 0xa3, 0x54, 0x01, 0x36, 0xda, 0xbd, 0xfe, 0x63, 0x38, 0xd7,
-    0x76, 0x9a, 0x22, 0x4b, 0xff, 0xcc, 0x2d, 0xe4, 0xc6, 0x71, 0xae, 0xed,
-    0x34, 0x4b, 0xd7, 0xdc, 0x07, 0xb4, 0x75, 0xfb, 0x9f, 0xad, 0x34, 0x75,
-    0xe8, 0x1d, 0xce, 0xbf, 0x7b, 0xea, 0xc6, 0x0e, 0xb2, 0x74, 0xf0, 0xc4,
-    0x6e, 0xff, 0xf7, 0x76, 0x40, 0xfe, 0xaf, 0x81, 0xce, 0x6e, 0x75, 0xd1,
-    0xe3, 0xaf, 0xff, 0x00, 0x29, 0xcf, 0xb3, 0x6d, 0x01, 0xc6, 0x63, 0xaa,
-    0x48, 0xda, 0x42, 0x6f, 0xd3, 0xf4, 0x2b, 0x7f, 0xf3, 0xcd, 0xa8, 0xd8,
-    0xfd, 0x8d, 0xe6, 0x3a, 0xfd, 0x93, 0xe6, 0x96, 0x75, 0xff, 0xd3, 0x7c,
-    0xfa, 0x31, 0xb1, 0xf6, 0x44, 0xc7, 0x51, 0xd7, 0xf4, 0xd2, 0x7f, 0x3e,
-    0xc3, 0xaa, 0x11, 0x0b, 0x89, 0x8e, 0x15, 0x77, 0x20, 0xea, 0x0a, 0xad,
-    0x94, 0x22, 0x9a, 0x34, 0x5e, 0x1e, 0x8a, 0x3e, 0xc8, 0x56, 0x6d, 0x16,
-    0xde, 0x0e, 0x09, 0xd7, 0x07, 0x73, 0xaf, 0xf9, 0x1c, 0x41, 0xe9, 0xa1,
-    0x43, 0xaf, 0xff, 0x93, 0x9f, 0x3b, 0x09, 0xed, 0x01, 0xa0, 0x83, 0xaf,
-    0x92, 0x7f, 0xd5, 0xce, 0xbe, 0x6b, 0xbb, 0x4d, 0x14, 0xbd, 0xf0, 0xfa,
-    0x38, 0x75, 0xff, 0x67, 0x15, 0xf0, 0x39, 0xcd, 0xce, 0xa4, 0x3d, 0xbd,
-    0x84, 0x14, 0xa2, 0x64, 0x33, 0x28, 0x70, 0x9b, 0xb0, 0x88, 0xbf, 0x0f,
-    0xa7, 0xc6, 0x4e, 0xbf, 0xf4, 0x0c, 0x77, 0xe0, 0x04, 0x0d, 0x3a, 0xf0,
-    0x1f, 0x47, 0x5f, 0xa3, 0xf7, 0xdf, 0x47, 0x5e, 0x14, 0xfc, 0xeb, 0xd9,
-    0xed, 0x1d, 0x50, 0x6d, 0xb4, 0x37, 0x41, 0x46, 0xbc, 0xc7, 0xdf, 0x8d,
-    0xf9, 0x7a, 0xfc, 0xae, 0xe2, 0x1d, 0xa3, 0xaf, 0xfb, 0xfd, 0x72, 0x37,
-    0x92, 0x2c, 0xeb, 0xde, 0x7d, 0x87, 0x5f, 0xf3, 0xcf, 0xf2, 0x70, 0x4d,
-    0x0a, 0xe7, 0x54, 0x22, 0x5d, 0xce, 0x80, 0x3b, 0x7f, 0xc9, 0xa9, 0x90,
-    0x7d, 0x1f, 0x9d, 0x52, 0x3e, 0x65, 0x97, 0x5c, 0xe2, 0x75, 0xff, 0x47,
-    0xff, 0x3b, 0x0b, 0x71, 0x3a, 0xdc, 0xdc, 0xf3, 0x76, 0x0a, 0x54, 0x27,
-    0x87, 0x91, 0x94, 0xa3, 0x7d, 0xee, 0x42, 0xce, 0xbf, 0xa0, 0x66, 0xf2,
-    0x28, 0x75, 0xff, 0x4b, 0x39, 0x36, 0x0c, 0x2c, 0xeb, 0xf7, 0xf0, 0xdc,
-    0x59, 0xd4, 0x87, 0xbd, 0xc3, 0x7b, 0xa5, 0x87, 0x5e, 0x8f, 0xf4, 0x75,
-    0x41, 0xe9, 0x04, 0x85, 0x91, 0x5b, 0xf7, 0x40, 0xa6, 0x09, 0xd7, 0xfd,
-    0x1d, 0xd3, 0xfa, 0x39, 0xb4, 0x75, 0xff, 0x96, 0xe1, 0xfb, 0x34, 0xa0,
-    0x77, 0x3a, 0x82, 0x7f, 0x68, 0x75, 0x7d, 0xcf, 0xfe, 0xec, 0x3a, 0xf2,
-    0x33, 0xe3, 0xab, 0xa7, 0x87, 0xa2, 0x7a, 0x0a, 0x65, 0x1d, 0x85, 0x17,
-    0x99, 0x2f, 0xfb, 0xf4, 0xee, 0x71, 0xe6, 0xd1, 0xd7, 0xff, 0xe8, 0x90,
-    0xc4, 0xff, 0x66, 0xd7, 0x73, 0x6b, 0x9f, 0x9d, 0x7f, 0x7c, 0x5e, 0x79,
-    0xfc, 0x75, 0x9a, 0x75, 0xdb, 0xeb, 0x0d, 0xf3, 0x97, 0x56, 0xe8, 0xff,
-    0x59, 0xcb, 0xc2, 0x6a, 0xff, 0x63, 0x32, 0x4d, 0x01, 0x67, 0x5d, 0xb3,
-    0x47, 0x5f, 0xb2, 0x7c, 0xee, 0x8e, 0xa8, 0x37, 0xe2, 0x31, 0x7b, 0x39,
-    0xa3, 0xa9, 0xa6, 0xeb, 0x60, 0xfd, 0xff, 0x7f, 0x1f, 0xfd, 0xd9, 0x03,
-    0xb4, 0x75, 0x42, 0x61, 0xf9, 0x0a, 0xc4, 0x23, 0xbf, 0xff, 0xfb, 0xb1,
-    0xcd, 0xda, 0x9b, 0xfc, 0x51, 0xfe, 0x6b, 0xae, 0xd8, 0x10, 0x9d, 0x7d,
-    0xe1, 0x45, 0x9d, 0x7f, 0x86, 0x1c, 0x7d, 0x82, 0x75, 0xfe, 0xeb, 0xcc,
-    0x9c, 0x89, 0xce, 0xbb, 0x16, 0x75, 0x05, 0x30, 0xdc, 0x77, 0x59, 0x03,
-    0x97, 0x6c, 0x33, 0xbf, 0x6d, 0x22, 0xe3, 0x47, 0x5f, 0x9f, 0x66, 0x73,
-    0x47, 0x50, 0x4f, 0x45, 0x65, 0x37, 0xee, 0xb8, 0xa2, 0xce, 0xbe, 0x52,
-    0x6d, 0x41, 0xd7, 0xf9, 0xff, 0xd4, 0x76, 0x34, 0x75, 0x42, 0x27, 0x30,
-    0x89, 0x09, 0x44, 0x8e, 0xef, 0xda, 0x75, 0xb4, 0x75, 0xc8, 0xa6, 0x8d,
-    0x38, 0x05, 0xef, 0x7e, 0xed, 0x3a, 0xff, 0xfc, 0x81, 0xcd, 0x8f, 0xc9,
-    0xbe, 0xc9, 0xfc, 0xeb, 0x3a, 0xa0, 0xfd, 0x38, 0x39, 0x66, 0x21, 0x9b,
-    0xb7, 0x3b, 0xac, 0x86, 0x82, 0x2f, 0x91, 0xac, 0xee, 0x8a, 0x90, 0xff,
-    0x9a, 0x50, 0x17, 0x0d, 0x16, 0x37, 0xd8, 0x6e, 0xbc, 0x6a, 0xff, 0xc6,
-    0x6a, 0x31, 0xa2, 0x6a, 0x34, 0x0f, 0x46, 0x71, 0xb6, 0xc1, 0xf6, 0x14,
-    0x37, 0xf9, 0x8c, 0xe3, 0x5d, 0xda, 0x68, 0xa7, 0x2f, 0xfc, 0x9c, 0x7d,
-    0x77, 0x30, 0x5a, 0x75, 0xf9, 0x7c, 0xe6, 0x68, 0xeb, 0xff, 0xf7, 0x41,
-    0xee, 0x47, 0xb5, 0x8d, 0xd4, 0x71, 0xa7, 0x5f, 0xe4, 0x58, 0x63, 0x40,
-    0x13, 0xaf, 0xec, 0xf6, 0xf2, 0x86, 0x4e, 0xbf, 0xf9, 0x44, 0xdf, 0x43,
-    0x81, 0xeb, 0xb2, 0x75, 0xff, 0xb3, 0xb1, 0xcc, 0x61, 0x96, 0x59, 0x2a,
-    0xe4, 0x64, 0xeb, 0xa7, 0x60, 0x29, 0xd9, 0x61, 0xdb, 0x49, 0xfa, 0xaa,
-    0x26, 0x3e, 0x2e, 0xdb, 0x45, 0xda, 0x41, 0xbf, 0x71, 0xae, 0xed, 0x34,
-    0x57, 0x97, 0xff, 0xf6, 0x07, 0xb1, 0xf5, 0x8f, 0x0b, 0xff, 0xad, 0x47,
-    0xe5, 0x59, 0x8c, 0x44, 0x8e, 0xd9, 0x9d, 0xff, 0xcc, 0x3c, 0x98, 0xce,
-    0x35, 0xdd, 0xa6, 0x89, 0x1e, 0xf3, 0x71, 0x67, 0x5e, 0x4f, 0xe0, 0xeb,
-    0xcd, 0xc5, 0x94, 0xc1, 0x77, 0x7e, 0xe3, 0x5d, 0xda, 0x68, 0x92, 0x2f,
-    0xff, 0xe8, 0x4e, 0x26, 0xd4, 0x0c, 0xf1, 0xe4, 0xeb, 0xce, 0x75, 0xd2,
-    0x62, 0x11, 0x73, 0x85, 0x7d, 0x33, 0xbf, 0x67, 0x58, 0xc5, 0x9d, 0x66,
-    0x21, 0x35, 0x17, 0x87, 0x7f, 0x8e, 0xef, 0xfe, 0x61, 0xe4, 0xc6, 0x71,
-    0xae, 0xed, 0x34, 0x49, 0x57, 0xee, 0x35, 0xdd, 0xa6, 0x8b, 0xc6, 0xff,
-    0xa4, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x49, 0xb6, 0x63, 0x0f, 0xe1, 0xcc,
-    0xee, 0x67, 0xa7, 0x5f, 0x93, 0xfd, 0x60, 0x9d, 0x7f, 0xfc, 0x07, 0xdf,
-    0x31, 0x45, 0x1e, 0x59, 0xbf, 0x8e, 0xa9, 0x1f, 0xbe, 0x89, 0xaf, 0x7d,
-    0x19, 0xce, 0xbb, 0x9e, 0x3a, 0xf4, 0xc3, 0x39, 0xd6, 0x13, 0xae, 0xfb,
-    0xf4, 0xea, 0xfc, 0xd4, 0xfd, 0x0f, 0xbb, 0x6d, 0x88, 0x4d, 0x3b, 0x21,
-    0x1d, 0xd2, 0x27, 0x1e, 0xd0, 0xb7, 0xd4, 0x6a, 0x86, 0xe8, 0xfe, 0x73,
-    0xf9, 0x56, 0x21, 0x61, 0x8c, 0xf1, 0x23, 0xf1, 0x9a, 0x31, 0x55, 0x96,
-    0x76, 0x3a, 0x2f, 0x1d, 0x82, 0x19, 0x3f, 0x63, 0x75, 0xa8, 0x97, 0xf8,
-    0x0d, 0x3c, 0xa4, 0x69, 0x4e, 0xbb, 0x86, 0x75, 0x2b, 0x31, 0x1c, 0x84,
-    0xa4, 0xe3, 0x73, 0x6f, 0x53, 0x77, 0x7a, 0xcb, 0x8d, 0x29, 0x2f, 0xaa,
-    0xf2, 0x88, 0xe6, 0xb6, 0x18, 0xfc, 0xb4, 0x26, 0x4b, 0xcd, 0xb0, 0x8b,
-    0xb4, 0xa8, 0xc7, 0xb6, 0x50, 0x5f, 0xcf, 0x9a, 0xaa, 0x63, 0xe3, 0x1a,
-    0xca, 0xdb, 0x55, 0xb8, 0x8f, 0xaf, 0x50, 0xe0, 0x16, 0xbf, 0xaf, 0x65,
-    0x2b, 0x21, 0x99, 0xc9, 0x7d, 0xb9, 0x70, 0xff, 0x69, 0x05, 0x1b, 0x55,
-    0xd7, 0x55, 0x00,
+    0x9c, 0x15, 0xbf, 0xd8, 0x11, 0xcf, 0x77, 0x0e, 0xb9, 0x54, 0xd3, 0xc6,
+    0x15, 0x7f, 0x4f, 0xf7, 0x6d, 0xc7, 0xf3, 0xaf, 0xec, 0xf7, 0xa3, 0x9a,
+    0x3a, 0xfe, 0x71, 0xfe, 0x7f, 0xfc, 0x75, 0x42, 0x23, 0x84, 0xcf, 0x6c,
+    0xb2, 0xcc, 0x42, 0xed, 0x84, 0xe7, 0xe1, 0x6b, 0xc8, 0x4c, 0xb5, 0xc7,
+    0x77, 0x2e, 0x10, 0x2c, 0x85, 0xd2, 0x86, 0x1c, 0x1a, 0x84, 0xd7, 0x93,
+    0xf6, 0x10, 0x32, 0x61, 0xf6, 0x16, 0xb7, 0x96, 0x0e, 0x15, 0x7f, 0xe7,
+    0x93, 0x19, 0xc6, 0xbb, 0xb4, 0xd1, 0x31, 0xdf, 0x47, 0x23, 0x68, 0xeb,
+    0x30, 0x88, 0x89, 0x58, 0xe7, 0x52, 0xaf, 0xa2, 0x78, 0xe1, 0xd7, 0xec,
+    0x89, 0x91, 0x67, 0x52, 0x1e, 0x3f, 0x08, 0x6f, 0xf7, 0x63, 0x93, 0xfd,
+    0x07, 0xe7, 0x5c, 0xfa, 0x3a, 0xfb, 0xe7, 0xb3, 0xa7, 0x5a, 0x3a, 0x6e,
+    0x34, 0x2b, 0x7a, 0x06, 0x73, 0xaf, 0xff, 0xff, 0xa5, 0xae, 0xe0, 0x19,
+    0xd7, 0x71, 0xb9, 0xaf, 0x99, 0xbc, 0xb4, 0x82, 0x87, 0x5e, 0x77, 0x69,
+    0xa2, 0xb1, 0xbe, 0x7f, 0xb0, 0xa1, 0xd4, 0xd3, 0xca, 0xe1, 0x3d, 0xff,
+    0xb6, 0xf3, 0xc3, 0x80, 0x81, 0xf1, 0xd4, 0xa2, 0x6d, 0x4d, 0x26, 0xdc,
+    0x6f, 0x90, 0xc9, 0xf1, 0x15, 0xff, 0xc3, 0xe5, 0x01, 0x03, 0x8d, 0x8e,
+    0x1d, 0x7f, 0xb9, 0x3f, 0xb4, 0xfb, 0xb4, 0xea, 0x83, 0xf7, 0x74, 0x2b,
+    0xfa, 0x36, 0xbd, 0x9b, 0xcc, 0x75, 0xfc, 0x0d, 0xb6, 0xf5, 0x15, 0x27,
+    0x5f, 0xd9, 0xad, 0xe5, 0x1d, 0x3a, 0xe8, 0xd8, 0x75, 0x83, 0xd3, 0xc4,
+    0x12, 0xdb, 0xfe, 0x8d, 0xe5, 0x34, 0x9f, 0x93, 0x9d, 0x50, 0x8d, 0xac,
+    0x78, 0x42, 0x7b, 0xd1, 0x2f, 0x1d, 0x7f, 0xec, 0x0f, 0x10, 0x13, 0xff,
+    0xa9, 0x1d, 0x7c, 0xb7, 0xdf, 0xc7, 0x5f, 0xfd, 0x3c, 0x7b, 0xe7, 0xd6,
+    0xfd, 0xda, 0xfb, 0xa3, 0xaf, 0xfb, 0x91, 0xa7, 0xe0, 0xc4, 0x8e, 0xae,
+    0x22, 0x1f, 0x62, 0x8d, 0xe9, 0x3c, 0xe7, 0x5e, 0xf9, 0x3a, 0xce, 0xb8,
+    0x3e, 0x3a, 0x95, 0x49, 0x8f, 0xe4, 0x2a, 0x77, 0x25, 0x41, 0xc1, 0x1f,
+    0xbf, 0xf0, 0xb8, 0x7b, 0x1b, 0x3a, 0xe2, 0x75, 0xff, 0xff, 0x81, 0x3e,
+    0x37, 0xe0, 0x83, 0x6b, 0xe6, 0x6f, 0x2c, 0x00, 0xff, 0xa3, 0xaf, 0xf9,
+    0xf7, 0x1c, 0x0f, 0x5d, 0x93, 0xa8, 0x28, 0xea, 0x13, 0xdd, 0x3a, 0xdf,
+    0xd3, 0xcd, 0x25, 0x57, 0x27, 0x3a, 0xf8, 0x47, 0x3c, 0x75, 0x2b, 0x27,
+    0xa9, 0x06, 0xb7, 0xf4, 0xff, 0x76, 0xdc, 0x7f, 0x3a, 0xff, 0xe9, 0xba,
+    0xeb, 0xf7, 0x63, 0xc0, 0x59, 0xd7, 0xfc, 0x92, 0x4e, 0x81, 0x6b, 0x43,
+    0xaa, 0x11, 0x5f, 0x86, 0x7e, 0x45, 0xbd, 0xd4, 0x62, 0x19, 0x0a, 0xf2,
+    0x21, 0xc8, 0xf6, 0x5b, 0x0c, 0x9e, 0x10, 0x76, 0x30, 0xb7, 0x2d, 0x11,
+    0xbd, 0x46, 0xbf, 0xe8, 0xcf, 0x36, 0xe1, 0x07, 0xf6, 0x1a, 0xb7, 0x48,
+    0x4e, 0xbf, 0xb9, 0xc8, 0x0e, 0x2c, 0xeb, 0xbe, 0xfe, 0x75, 0xee, 0xa2,
+    0xce, 0xb4, 0xc7, 0x53, 0x9a, 0xc0, 0x0d, 0xdf, 0x9c, 0x67, 0x06, 0x8e,
+    0xbf, 0xe8, 0x0f, 0x70, 0x3c, 0x76, 0x9d, 0x48, 0x8e, 0xff, 0xcb, 0x05,
+    0x17, 0x44, 0x1e, 0x27, 0xbd, 0xaf, 0xba, 0x3a, 0xfb, 0x79, 0xe1, 0x43,
+    0xa8, 0x27, 0x84, 0x01, 0xeb, 0xbd, 0x07, 0x5f, 0x97, 0x83, 0x12, 0x3a,
+    0xf8, 0x1e, 0xcd, 0x1d, 0x7d, 0x1c, 0x71, 0x3a, 0xff, 0x3f, 0x25, 0xfa,
+    0x6f, 0xa3, 0xaf, 0xb5, 0xa8, 0xfc, 0xea, 0x84, 0x5d, 0xa1, 0x2f, 0x48,
+    0x40, 0x3e, 0xc9, 0xa5, 0xf4, 0xbf, 0x04, 0x8e, 0xbe, 0xe7, 0xd8, 0xfc,
+    0xea, 0x83, 0xc7, 0x42, 0x3b, 0xfc, 0x93, 0xba, 0xff, 0xfe, 0x0e, 0xbf,
+    0xe4, 0x6f, 0x72, 0x61, 0x80, 0x9d, 0x7d, 0x2f, 0x67, 0xd3, 0xaf, 0x36,
+    0x3f, 0x3a, 0xf7, 0x21, 0x67, 0x53, 0x9e, 0xd0, 0x08, 0xd9, 0x1c, 0xbf,
+    0x44, 0xff, 0x72, 0x63, 0xaf, 0x40, 0xc8, 0xea, 0x99, 0x35, 0x8e, 0x10,
+    0x74, 0xd0, 0x61, 0x23, 0xa2, 0xff, 0x15, 0x5f, 0xfa, 0x33, 0x5f, 0x21,
+    0x03, 0xf6, 0x47, 0x5f, 0xc8, 0xce, 0xa7, 0xc6, 0x4e, 0xa1, 0x3e, 0xff,
+    0x20, 0x5f, 0xa0, 0x3e, 0xc6, 0x9d, 0x7d, 0xd8, 0x16, 0x9d, 0x52, 0x3e,
+    0x7d, 0x10, 0xf8, 0x9a, 0xf9, 0xc5, 0xe6, 0x3a, 0xfc, 0x9e, 0x1c, 0x91,
+    0xd7, 0xd0, 0xcc, 0x4c, 0x75, 0xdf, 0x56, 0x75, 0xff, 0x03, 0xe7, 0x85,
+    0xff, 0xc1, 0x3a, 0xa7, 0x45, 0xc2, 0x84, 0x08, 0x4b, 0xd2, 0x21, 0x18,
+    0xbf, 0xd0, 0xc8, 0x40, 0xfc, 0x91, 0xd7, 0xf2, 0x73, 0x7d, 0x44, 0x8e,
+    0xb6, 0xc3, 0xab, 0x87, 0xe5, 0xd3, 0x3d, 0xa2, 0xdb, 0xc2, 0x8a, 0x1d,
+    0x7d, 0x81, 0x4d, 0x87, 0x5d, 0x0b, 0xc3, 0x7a, 0xe3, 0x76, 0xd1, 0xd4,
+    0x86, 0xe9, 0xca, 0xae, 0xfe, 0x0a, 0xb9, 0x96, 0x4a, 0xa4, 0x35, 0xcc,
+    0x8b, 0x5f, 0xe7, 0x90, 0xe7, 0xba, 0x85, 0x30, 0x68, 0x6f, 0x3e, 0xfa,
+    0x3a, 0xfb, 0xef, 0x5f, 0xc7, 0x50, 0x4d, 0xff, 0x87, 0x2f, 0x40, 0xcc,
+    0x75, 0xc3, 0x07, 0x5a, 0x63, 0xaa, 0x63, 0xc0, 0xe0, 0xdb, 0x8a, 0x5f,
+    0xfc, 0xa2, 0x0b, 0x75, 0x0b, 0x7d, 0xfc, 0x75, 0xef, 0xf3, 0x68, 0xea,
+    0x50, 0xf8, 0xf8, 0x89, 0x7c, 0xbd, 0x01, 0x67, 0x59, 0x43, 0xad, 0xb6,
+    0x75, 0xdc, 0x50, 0xea, 0x83, 0xdd, 0x42, 0x20, 0x08, 0xfd, 0x13, 0xbf,
+    0xfe, 0xee, 0x4b, 0x51, 0xe9, 0x62, 0xbb, 0x8f, 0xe7, 0x5f, 0xfa, 0x49,
+    0xee, 0xe6, 0xfe, 0x04, 0x1d, 0x76, 0x68, 0xea, 0x83, 0xd3, 0x91, 0xf5,
+    0x69, 0x18, 0xbe, 0x85, 0x25, 0xf9, 0x21, 0x70, 0xb3, 0xad, 0x87, 0x52,
+    0x1e, 0xe6, 0x8a, 0x36, 0xc9, 0x6a, 0x15, 0x80, 0xe3, 0x0a, 0x42, 0x4b,
+    0xb0, 0x80, 0x78, 0xd7, 0x6f, 0x6a, 0x26, 0x3a, 0x8e, 0xb2, 0xce, 0xaf,
+    0x17, 0x5b, 0x02, 0xaf, 0xdf, 0xa7, 0x11, 0x43, 0xae, 0x75, 0x0e, 0xa9,
+    0x91, 0x2d, 0xd3, 0x6f, 0xc8, 0x84, 0xa2, 0xef, 0x41, 0xd7, 0xe8, 0xee,
+    0x6c, 0x73, 0xa9, 0xcd, 0xe7, 0xe2, 0xb7, 0xf2, 0x7b, 0x3a, 0xea, 0x1d,
+    0x7f, 0x74, 0x0f, 0x3f, 0x50, 0xeb, 0xcc, 0xb2, 0xc9, 0x57, 0xfc, 0x18,
+    0x9f, 0xee, 0x75, 0xf7, 0x29, 0x82, 0xfe, 0xec, 0x9c, 0xea, 0x0a, 0x2b,
+    0x5a, 0x98, 0x89, 0x77, 0xa1, 0x68, 0x75, 0x61, 0xe4, 0xb4, 0xbe, 0xf9,
+    0x39, 0xb4, 0x13, 0xaf, 0xdd, 0x8d, 0xdd, 0x5c, 0xeb, 0xff, 0xe8, 0xf6,
+    0x83, 0x9e, 0x4e, 0x83, 0x37, 0xf1, 0xd5, 0xd3, 0xf9, 0xf1, 0x55, 0xb8,
+    0x75, 0xfe, 0xcc, 0x6f, 0xdd, 0x9d, 0xc3, 0xae, 0x06, 0x8e, 0xbf, 0xff,
+    0x60, 0x63, 0x37, 0xfb, 0xe4, 0x10, 0x4b, 0x34, 0x75, 0xcb, 0xfc, 0xeb,
+    0x9c, 0x4e, 0xae, 0x9a, 0xb7, 0x17, 0xbf, 0x2d, 0x3d, 0xfb, 0x9d, 0x53,
+    0xa7, 0xc3, 0x90, 0x9d, 0x57, 0x22, 0x98, 0x41, 0xcd, 0x44, 0x5b, 0xd0,
+    0x80, 0x01, 0x05, 0xf7, 0x7c, 0x93, 0x9d, 0x7f, 0x9a, 0x9a, 0x1c, 0xd8,
+    0xe7, 0x5f, 0x44, 0xef, 0x23, 0xae, 0xcf, 0x1d, 0x7e, 0xc9, 0xc7, 0x37,
+    0x3a, 0xb1, 0x16, 0x3b, 0x91, 0x70, 0xcb, 0xa4, 0x22, 0x2b, 0x7b, 0xb0,
+    0x13, 0xae, 0xe6, 0x8e, 0xa3, 0x90, 0xb6, 0xbf, 0xd0, 0x32, 0x75, 0xe0,
+    0x4e, 0xbe, 0xf2, 0xd7, 0xc3, 0xaf, 0xfe, 0xfe, 0x05, 0xaf, 0xef, 0xfe,
+    0x8c, 0x8e, 0xbd, 0x24, 0xe9, 0xd7, 0xde, 0x1c, 0x91, 0xd7, 0xec, 0x02,
+    0xa7, 0x4e, 0x75, 0xff, 0xe4, 0xd7, 0x70, 0x23, 0x9b, 0x07, 0x34, 0x75,
+    0x49, 0x34, 0x55, 0x0c, 0x37, 0x22, 0x99, 0x1b, 0x83, 0x62, 0x41, 0xe2,
+    0xaa, 0x55, 0x36, 0x7e, 0x31, 0x18, 0x24, 0xf0, 0x8b, 0x91, 0x10, 0x61,
+    0xa1, 0x91, 0xf4, 0x6f, 0x19, 0x9a, 0x43, 0x9e, 0x68, 0x5e, 0x72, 0x15,
+    0x2b, 0x6e, 0xec, 0xb8, 0x17, 0x87, 0x77, 0xef, 0x4a, 0x92, 0x11, 0x8c,
+    0x8b, 0x52, 0x80, 0xbd, 0x19, 0x7b, 0x29, 0x3b, 0x66, 0x3f, 0x63, 0x5d,
+    0xbf, 0xe6, 0x3c, 0x99, 0xb5, 0xa0, 0x41, 0xd7, 0xff, 0xfc, 0x08, 0x63,
+    0xda, 0x4e, 0xba, 0x7b, 0x39, 0xfa, 0xde, 0x47, 0x53, 0x0a, 0x87, 0x67,
+    0x8d, 0xf0, 0x27, 0x77, 0xee, 0x35, 0xdd, 0xa6, 0x8a, 0xde, 0xff, 0xcf,
+    0x26, 0x33, 0x8d, 0x77, 0x69, 0xa2, 0x70, 0xb3, 0x18, 0x7f, 0xab, 0x33,
+    0xb9, 0x54, 0x13, 0xad, 0xd3, 0xad, 0xa3, 0xa8, 0x06, 0x83, 0x6c, 0x42,
+    0xf9, 0xae, 0xed, 0x34, 0x5a, 0x37, 0xff, 0xb0, 0x3d, 0x75, 0x26, 0x99,
+    0x34, 0x05, 0x9d, 0x5c, 0x3f, 0x9e, 0x96, 0xdf, 0x35, 0xc7, 0xf3, 0xaf,
+    0xfa, 0x6c, 0x57, 0xd7, 0x38, 0xfe, 0x3a, 0xfe, 0x87, 0x10, 0x07, 0x0e,
+    0xb9, 0x14, 0x3a, 0xff, 0xfd, 0x3c, 0x7a, 0x03, 0xc8, 0xeb, 0xe8, 0x73,
+    0xf3, 0xaf, 0xfd, 0x1b, 0xba, 0xbf, 0x45, 0xd5, 0xe7, 0x3a, 0xff, 0xd1,
+    0xcf, 0xf1, 0x33, 0x9e, 0x01, 0xd5, 0x08, 0xd5, 0xea, 0xa6, 0x91, 0x2d,
+    0x93, 0x26, 0x35, 0xa8, 0x75, 0xdf, 0xee, 0xf4, 0x0a, 0x2e, 0x34, 0x75,
+    0xff, 0xf9, 0x34, 0x39, 0xb1, 0xfc, 0x39, 0xae, 0xbc, 0xc7, 0x56, 0x22,
+    0x22, 0x63, 0x4b, 0xec, 0xfd, 0xfa, 0x75, 0xdd, 0xd1, 0xd6, 0x61, 0x50,
+    0xae, 0xad, 0x5b, 0x3a, 0xc8, 0x4e, 0xb4, 0x8a, 0x62, 0x15, 0x9e, 0x76,
+    0x34, 0x4f, 0x42, 0xdf, 0x6c, 0x8f, 0xe9, 0x0d, 0xf3, 0x5d, 0xda, 0x68,
+    0xb6, 0xaf, 0xff, 0xe8, 0x7f, 0x47, 0x63, 0x48, 0x92, 0x4e, 0x60, 0x4e,
+    0xbf, 0xbb, 0x0b, 0x84, 0x09, 0xd5, 0xc4, 0x57, 0x68, 0xb7, 0xca, 0xd7,
+    0xfe, 0xea, 0x05, 0xe4, 0x1e, 0xa2, 0xce, 0xbe, 0x8d, 0x98, 0x87, 0x5f,
+    0xf4, 0x4a, 0x39, 0x3c, 0x72, 0x73, 0xaf, 0xfa, 0x39, 0xf3, 0x51, 0xd7,
+    0x43, 0xaf, 0xf7, 0x51, 0xe5, 0xe4, 0x9c, 0xea, 0xc4, 0xcc, 0x5a, 0x61,
+    0xc3, 0xd1, 0x21, 0x64, 0xe7, 0x6c, 0xe2, 0xfe, 0x51, 0xf8, 0x10, 0x09,
+    0xd7, 0xf0, 0xed, 0xa7, 0x31, 0x43, 0xaf, 0xc9, 0x3a, 0xe1, 0xa7, 0x5f,
+    0x9f, 0x79, 0x7d, 0xd1, 0xd6, 0x61, 0x44, 0x56, 0x89, 0x6f, 0x8b, 0xf6,
+    0x13, 0xd3, 0x09, 0xa6, 0xff, 0x18, 0x3d, 0xcb, 0xe9, 0xd7, 0xee, 0x35,
+    0xdd, 0xa6, 0x8b, 0x96, 0xcc, 0x04, 0xf2, 0x70, 0x5a, 0xfd, 0xc6, 0xbb,
+    0xb4, 0xd1, 0x76, 0xdf, 0xf2, 0x4a, 0x48, 0x3f, 0xc4, 0x8e, 0xb3, 0x18,
+    0x7d, 0x4e, 0x67, 0x50, 0xec, 0x60, 0xe7, 0x29, 0x94, 0xf4, 0x48, 0x63,
+    0x76, 0x52, 0x91, 0xa8, 0x95, 0xb7, 0x8a, 0xbc, 0x2d, 0xfb, 0x2f, 0x4c,
+    0x65, 0xef, 0x69, 0xd7, 0xd0, 0x92, 0xbf, 0xcc, 0x67, 0x1a, 0xee, 0xd3,
+    0x45, 0x4f, 0x78, 0x33, 0xac, 0xeb, 0x78, 0xeb, 0xfe, 0x87, 0x9f, 0xe6,
+    0xfa, 0x80, 0x9d, 0x48, 0x79, 0x62, 0x21, 0x7c, 0xd7, 0x76, 0x9a, 0x2b,
+    0x9b, 0xfc, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x59, 0xd7, 0x9d, 0xe4, 0x75,
+    0xfc, 0x9a, 0xc1, 0x76, 0x4e, 0xae, 0x22, 0xc7, 0xa5, 0xa2, 0x7f, 0xe1,
+    0xab, 0xff, 0xde, 0x8d, 0x7c, 0x06, 0xbd, 0x13, 0x4c, 0x87, 0x5f, 0xc8,
+    0xb9, 0xc1, 0xc9, 0x1d, 0x7f, 0xa3, 0xbf, 0x16, 0xad, 0xaa, 0x3c, 0x75,
+    0x62, 0x2e, 0x7a, 0x9b, 0xb0, 0xba, 0xfd, 0xcc, 0xf2, 0x2c, 0xeb, 0xe7,
+    0x18, 0x09, 0xd7, 0xf6, 0x4d, 0x0b, 0x8f, 0xa7, 0x5f, 0xb8, 0xd7, 0x76,
+    0x9a, 0x24, 0x2b, 0xff, 0x62, 0xf1, 0xf9, 0x3f, 0xcd, 0xd6, 0x75, 0xff,
+    0x26, 0xfa, 0xf0, 0xc2, 0xf4, 0x75, 0xd2, 0x63, 0x11, 0x59, 0xd3, 0x3f,
+    0xd0, 0x6f, 0xfe, 0xea, 0x2f, 0x35, 0xf3, 0x79, 0x67, 0x8e, 0xbe, 0x97,
+    0x7e, 0xe8, 0xea, 0x83, 0xea, 0xc4, 0x6b, 0xe5, 0x6f, 0xb0, 0xb3, 0xaf,
+    0xee, 0xeb, 0x59, 0xc9, 0xce, 0xba, 0x19, 0x3a, 0xb0, 0xf1, 0x10, 0xba,
+    0xcc, 0x4e, 0xb9, 0x9e, 0x16, 0x8c, 0x86, 0x8a, 0x43, 0xd7, 0x86, 0x2b,
+    0x26, 0xe8, 0xfb, 0xc3, 0x68, 0x61, 0x4f, 0xa2, 0x0f, 0x35, 0x5f, 0xfc,
+    0xc7, 0x5f, 0x43, 0x9e, 0xf4, 0x7e, 0x75, 0xff, 0xe6, 0x16, 0xf2, 0x63,
+    0x38, 0xd7, 0x76, 0x9a, 0x27, 0xca, 0x6a, 0xf2, 0xe2, 0xbc, 0xe8, 0x72,
+    0xe1, 0x67, 0xd4, 0x4b, 0x93, 0x73, 0xaf, 0xff, 0xa5, 0x3a, 0xad, 0x0a,
+    0xdc, 0xed, 0xe7, 0xcf, 0x9d, 0xdb, 0x3a, 0xa4, 0x7f, 0x5f, 0x8b, 0x5f,
+    0xb3, 0x99, 0x93, 0x1d, 0x66, 0x3a, 0x79, 0x3f, 0x48, 0xef, 0xdc, 0x6b,
+    0xbb, 0x4d, 0x15, 0x95, 0xff, 0x9e, 0x4c, 0x67, 0x1a, 0xee, 0xd3, 0x44,
+    0xdd, 0x66, 0x30, 0xff, 0x56, 0x67, 0x4d, 0x46, 0x82, 0x42, 0xa2, 0xfd,
+    0xc6, 0xbb, 0xb4, 0xd1, 0x2b, 0x5f, 0x86, 0x02, 0xfd, 0x3a, 0xfc, 0xc2,
+    0xde, 0x4c, 0x61, 0xec, 0x21, 0x9d, 0xff, 0xbd, 0x8c, 0x67, 0x12, 0x77,
+    0x59, 0xd7, 0xff, 0x95, 0x85, 0x65, 0x51, 0xac, 0x79, 0x26, 0x73, 0x0e,
+    0xbf, 0xf2, 0x68, 0x0b, 0x14, 0xd8, 0x07, 0x3a, 0xfe, 0x81, 0x76, 0xba,
+    0xb9, 0xd5, 0x23, 0xeb, 0x59, 0xf5, 0xc1, 0xe1, 0xd7, 0xee, 0x35, 0xdd,
+    0xa6, 0x89, 0x72, 0xff, 0x91, 0xe5, 0xe1, 0x85, 0xe8, 0xeb, 0xf4, 0xb6,
+    0xd3, 0xae, 0x75, 0xe8, 0xdb, 0x83, 0xaf, 0x20, 0xc1, 0xd5, 0x23, 0xdf,
+    0x09, 0x4e, 0xc1, 0xdb, 0xff, 0xf3, 0xf9, 0x01, 0x21, 0x49, 0x47, 0x84,
+    0x12, 0x3a, 0xfe, 0x97, 0x70, 0x71, 0xa7, 0x5e, 0x97, 0x7c, 0x75, 0xdd,
+    0x84, 0x3c, 0x7e, 0x95, 0xdf, 0xfc, 0x29, 0xfe, 0xb9, 0x09, 0x27, 0xd1,
+    0xd5, 0x87, 0xdc, 0x85, 0x97, 0x9e, 0x4c, 0x2a, 0xf5, 0x63, 0x11, 0x0c,
+    0x09, 0x11, 0x60, 0xb7, 0x4c, 0xde, 0x12, 0xba, 0x31, 0xf4, 0x60, 0xf6,
+    0x61, 0x15, 0xf7, 0x2e, 0x5a, 0xb5, 0xff, 0xcc, 0x3c, 0x98, 0xce, 0x35,
+    0xdd, 0xa6, 0x88, 0xee, 0xff, 0xbd, 0xdc, 0x93, 0x0e, 0x3a, 0x3a, 0xfe,
+    0x55, 0x0c, 0x37, 0x04, 0xeb, 0x81, 0xd3, 0xaf, 0xe5, 0x40, 0xe7, 0x5f,
+    0xc7, 0x5f, 0xff, 0xde, 0x92, 0x07, 0xa9, 0xb3, 0xe6, 0x07, 0x88, 0x06,
+    0x9d, 0x7f, 0xb1, 0x9d, 0x40, 0xfb, 0x47, 0x5f, 0xe7, 0x1f, 0xdf, 0x8f,
+    0xf4, 0xeb, 0xff, 0x27, 0x3e, 0x68, 0x71, 0x70, 0xd3, 0xaf, 0xfd, 0x02,
+    0x0f, 0x23, 0xec, 0x79, 0x1d, 0x7c, 0xd7, 0x76, 0x9a, 0x2a, 0x1b, 0xfe,
+    0xce, 0xe0, 0xbf, 0x38, 0x87, 0x52, 0x88, 0xdd, 0x69, 0xf7, 0x0f, 0x74,
+    0x5b, 0x74, 0xb0, 0xeb, 0xfe, 0x97, 0x93, 0x8e, 0xd4, 0x13, 0xaf, 0xff,
+    0x3a, 0xf3, 0x83, 0x89, 0xb1, 0x38, 0xe7, 0x5f, 0xfd, 0xd1, 0xc9, 0xbd,
+    0xdc, 0xe2, 0x68, 0xeb, 0xf6, 0xe2, 0x8b, 0x43, 0xaa, 0x11, 0x61, 0x88,
+    0xe8, 0x87, 0x7f, 0xa3, 0xcf, 0xdf, 0x81, 0x83, 0xaf, 0xfc, 0x0f, 0x8e,
+    0x39, 0xb5, 0xf3, 0xa0, 0x3a, 0xff, 0x4a, 0x39, 0x3c, 0x72, 0x73, 0xaf,
+    0xfe, 0xd6, 0xb0, 0x7d, 0xac, 0x92, 0x74, 0xeb, 0xff, 0xe8, 0xff, 0x07,
+    0xe3, 0xfb, 0xe7, 0x73, 0xf7, 0x3a, 0xe1, 0x9c, 0xea, 0x84, 0x6f, 0x61,
+    0xa2, 0x21, 0x0a, 0x95, 0xfd, 0xb1, 0xd7, 0xd6, 0x5c, 0xeb, 0xff, 0xfc,
+    0x91, 0xe7, 0xeb, 0x1a, 0xee, 0x0f, 0xbe, 0x7f, 0x2d, 0x1d, 0x6c, 0x44,
+    0x49, 0x09, 0x7d, 0xf7, 0x7d, 0x93, 0x9d, 0x7e, 0xc9, 0xdc, 0x76, 0x1d,
+    0x7f, 0xff, 0xff, 0xa2, 0x5f, 0x3d, 0xd4, 0x8d, 0x7c, 0xc0, 0x36, 0x36,
+    0x7c, 0xce, 0x73, 0x36, 0x01, 0xfa, 0x75, 0xf7, 0x45, 0xf6, 0x8e, 0xac,
+    0x4c, 0x0c, 0x48, 0xb4, 0x51, 0xe8, 0x4b, 0x5f, 0xff, 0xf0, 0x1d, 0x5d,
+    0x27, 0xeb, 0xa7, 0xa3, 0xa9, 0xed, 0x60, 0x4e, 0xb3, 0x0a, 0x85, 0xf6,
+    0xa5, 0x6c, 0xb9, 0x54, 0x2d, 0x05, 0xf3, 0xaf, 0x04, 0xcb, 0x23, 0x10,
+    0x69, 0xf6, 0xe2, 0xbc, 0x87, 0x32, 0xcb, 0x7a, 0x66, 0x31, 0x91, 0x6a,
+    0x19, 0x7e, 0x8c, 0xa7, 0x6d, 0x06, 0xf9, 0xae, 0xed, 0x34, 0x55, 0x17,
+    0xfb, 0x91, 0xb3, 0x79, 0x67, 0x8e, 0xae, 0x1f, 0x10, 0x0b, 0x6f, 0xfc,
+    0xf2, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x26, 0xbb, 0xcb, 0x7f, 0x1d, 0x66,
+    0x31, 0x10, 0xeb, 0x22, 0x74, 0xab, 0xf7, 0x1a, 0xee, 0xd3, 0x45, 0x59,
+    0x7f, 0xd1, 0x28, 0xe4, 0xf1, 0xc9, 0xce, 0xb3, 0x18, 0x7d, 0x82, 0x67,
+    0x7f, 0xe6, 0x3b, 0x1b, 0xfa, 0x3a, 0xea, 0xe7, 0x5f, 0xfc, 0xc3, 0xc9,
+    0x8c, 0xe3, 0x5d, 0xda, 0x68, 0x91, 0x2f, 0xdc, 0x6b, 0xbb, 0x4d, 0x16,
+    0x95, 0xff, 0x9e, 0x4c, 0x67, 0x1a, 0xee, 0xd3, 0x44, 0xfb, 0x66, 0x30,
+    0xff, 0x56, 0x67, 0x7f, 0xf9, 0x85, 0xbc, 0x98, 0xce, 0x35, 0xdd, 0xa6,
+    0x8a, 0x12, 0xfd, 0xd4, 0x9e, 0x38, 0x75, 0xfb, 0x8d, 0x77, 0x69, 0xa2,
+    0x8f, 0xbf, 0xe8, 0x94, 0x72, 0x78, 0xe4, 0xe7, 0x5f, 0xf8, 0x62, 0x68,
+    0x18, 0x9b, 0xb0, 0x75, 0xff, 0xfd, 0x81, 0xec, 0x7d, 0x63, 0xc2, 0xff,
+    0xeb, 0x51, 0xf9, 0x57, 0xe6, 0x16, 0xf2, 0x62, 0x13, 0x2d, 0xc2, 0x71,
+    0x33, 0xf1, 0xce, 0xd9, 0xe5, 0x43, 0x64, 0x6f, 0x3c, 0xe1, 0x6c, 0x8c,
+    0xb1, 0x45, 0x49, 0xfa, 0x26, 0xc7, 0xef, 0xbc, 0x28, 0x50, 0x9e, 0x64,
+    0x2e, 0xc3, 0x3b, 0xf2, 0x8f, 0x47, 0x09, 0x7f, 0x98, 0xce, 0x35, 0xdd,
+    0xa6, 0x88, 0x8a, 0xfe, 0xce, 0x35, 0xdd, 0xa6, 0x88, 0xae, 0xff, 0x95,
+    0xd8, 0xce, 0x35, 0xdd, 0xa6, 0x8a, 0xe2, 0x98, 0x44, 0x03, 0x9c, 0x5f,
+    0xfe, 0xfe, 0x05, 0xac, 0x3f, 0xbf, 0xfa, 0x32, 0x3a, 0xf9, 0x89, 0xe6,
+    0x57, 0x3a, 0xc9, 0xb9, 0xfa, 0xfe, 0x9b, 0x7d, 0x9d, 0x7f, 0x1d, 0x7f,
+    0xb1, 0x39, 0xff, 0xe0, 0xd1, 0xd6, 0x54, 0x09, 0xea, 0x68, 0x82, 0xff,
+    0xfe, 0xf6, 0x93, 0xae, 0x92, 0x41, 0xf0, 0x3b, 0xcc, 0x3a, 0xfd, 0xc6,
+    0xbb, 0xb4, 0xd1, 0x4f, 0x5f, 0xe5, 0xa0, 0x40, 0xfc, 0x91, 0xd7, 0x2d,
+    0x0e, 0xa8, 0x3c, 0x76, 0x99, 0x5f, 0xff, 0xe9, 0x47, 0xb4, 0x05, 0xb5,
+    0x3f, 0x8c, 0xea, 0x01, 0xa7, 0x5f, 0xff, 0xdc, 0xe0, 0x39, 0xc8, 0x1c,
+    0x51, 0x3b, 0xdc, 0xfa, 0x75, 0xff, 0xc9, 0x2c, 0x1f, 0xe1, 0x69, 0xc9,
+    0x1d, 0x7f, 0xa5, 0x1c, 0x9e, 0x39, 0x39, 0xd7, 0xdf, 0x05, 0xe4, 0x75,
+    0xf9, 0xf3, 0xa8, 0xb3, 0xab, 0x47, 0x8f, 0xb0, 0x8a, 0xa1, 0x13, 0xf8,
+    0xf7, 0x7f, 0xd0, 0x2d, 0xcd, 0x99, 0xed, 0x1d, 0x7e, 0x79, 0xe3, 0x80,
+    0x3a, 0x95, 0x4a, 0xce, 0xe0, 0xaf, 0x16, 0x1a, 0xf5, 0xb9, 0x0a, 0x30,
+    0x3a, 0xe0, 0xc3, 0x87, 0x61, 0x0e, 0xd9, 0xc5, 0xff, 0xe7, 0x93, 0x01,
+    0x17, 0x67, 0x5a, 0x8f, 0xce, 0xbf, 0xfd, 0xff, 0xe0, 0xd3, 0x1f, 0x45,
+    0xd6, 0x30, 0x75, 0xff, 0xc3, 0x9f, 0xb8, 0xfe, 0xc2, 0xd1, 0x67, 0x57,
+    0x11, 0x23, 0xe4, 0xda, 0x61, 0x39, 0x60, 0xc2, 0x5d, 0x21, 0xb9, 0x70,
+    0x70, 0xeb, 0xff, 0x90, 0x3c, 0x7d, 0xd8, 0xe7, 0x22, 0x73, 0xa9, 0x83,
+    0xdb, 0xe8, 0xad, 0xc1, 0x83, 0xaf, 0xff, 0xdd, 0x8e, 0x64, 0x91, 0xfd,
+    0x81, 0x40, 0x34, 0xab, 0xf4, 0x4b, 0xf0, 0x48, 0xeb, 0xe6, 0xbb, 0xb4,
+    0xd1, 0x59, 0xd4, 0xc7, 0xab, 0xc2, 0x8b, 0xef, 0x22, 0xf4, 0x75, 0xfd,
+    0x3a, 0xe0, 0x65, 0xa3, 0xaf, 0xd9, 0xed, 0x7d, 0xd1, 0xd7, 0xa2, 0x74,
+    0x3a, 0xfd, 0xef, 0xfe, 0x8c, 0x8e, 0xbc, 0x07, 0xd1, 0xd7, 0xfd, 0x92,
+    0x40, 0x2b, 0xab, 0x7f, 0xac, 0xeb, 0xf6, 0x4d, 0x38, 0x3f, 0x3a, 0xcc,
+    0x42, 0xa2, 0x10, 0x8a, 0xe4, 0x29, 0xf7, 0x23, 0xe1, 0x0a, 0xcb, 0x7a,
+    0x52, 0xe3, 0x62, 0x55, 0xa1, 0xbf, 0xa8, 0x37, 0xfe, 0xea, 0x79, 0xf9,
+    0x3c, 0x20, 0x4e, 0xbf, 0x79, 0x07, 0x16, 0x75, 0xf4, 0x9c, 0x58, 0xc3,
+    0xe2, 0xda, 0x3d, 0xbf, 0xf3, 0xc9, 0x8c, 0xe3, 0x5d, 0xda, 0x68, 0x91,
+    0x6f, 0xfc, 0xfe, 0x62, 0x13, 0x89, 0xe0, 0x1d, 0x4c, 0x22, 0x1d, 0xd2,
+    0xaf, 0xec, 0xe3, 0x5d, 0xda, 0x68, 0xb2, 0x6f, 0xff, 0x7b, 0x5f, 0x74,
+    0xc6, 0x4e, 0x83, 0x2d, 0x1d, 0x4c, 0x22, 0x17, 0x0e, 0x2f, 0xff, 0xf3,
+    0xa7, 0x81, 0xc7, 0xd3, 0x0d, 0xea, 0x72, 0x25, 0xa3, 0xaf, 0xec, 0xe3,
+    0x5d, 0xda, 0x68, 0xb6, 0x2f, 0xff, 0xe5, 0x47, 0x7e, 0x0e, 0x73, 0xda,
+    0xec, 0xdf, 0x3e, 0x77, 0x6c, 0xeb, 0xdc, 0x07, 0x4e, 0xbb, 0xcc, 0x42,
+    0x21, 0xb8, 0xd5, 0x4c, 0x23, 0xb5, 0x21, 0x7d, 0x7b, 0x35, 0x87, 0x5f,
+    0x35, 0xdd, 0xa6, 0x8b, 0x6e, 0xfb, 0x53, 0xbf, 0x0e, 0xae, 0x1e, 0x7f,
+    0x8b, 0x6f, 0xe4, 0xef, 0x93, 0xf0, 0x1d, 0x7f, 0xd1, 0x28, 0xe4, 0xf1,
+    0xc9, 0xce, 0xb3, 0x12, 0x47, 0x8e, 0x34, 0xcc, 0x44, 0x25, 0xb7, 0xff,
+    0xb0, 0x7f, 0x61, 0x6e, 0x1c, 0xc1, 0x50, 0xeb, 0xca, 0xae, 0x84, 0xeb,
+    0xd3, 0xf5, 0x0e, 0xbf, 0xf2, 0xa9, 0x54, 0xad, 0x3d, 0xdc, 0x18, 0xfc,
+    0xeb, 0xfa, 0x06, 0x41, 0x02, 0xce, 0xbe, 0x6b, 0xbb, 0x4d, 0x17, 0x85,
+    0xff, 0x9f, 0xd1, 0xb3, 0x9c, 0xcd, 0xf4, 0x75, 0x70, 0xfb, 0x44, 0xb6,
+    0xfb, 0xdb, 0x79, 0xd3, 0xaf, 0xcb, 0x81, 0x93, 0x9d, 0x7f, 0xa5, 0x03,
+    0xed, 0x8e, 0xd3, 0xaf, 0xf4, 0x79, 0xfb, 0xf0, 0x30, 0x75, 0xff, 0xbe,
+    0xaf, 0x79, 0x7b, 0x07, 0xda, 0x3a, 0xec, 0x50, 0xea, 0x83, 0xd7, 0xc4,
+    0x1b, 0xe4, 0x9f, 0x16, 0x75, 0xfb, 0x07, 0xfd, 0xa8, 0x3a, 0xfd, 0x1f,
+    0x40, 0xfa, 0x3a, 0xff, 0xf6, 0x2e, 0x1b, 0xf3, 0x04, 0x12, 0xcd, 0x1d,
+    0x7f, 0xf6, 0x77, 0xaf, 0x25, 0xa4, 0x72, 0x47, 0x5d, 0x1f, 0x9d, 0x52,
+    0x3d, 0x8f, 0x21, 0x52, 0xa1, 0x5c, 0xea, 0xa8, 0x81, 0x57, 0x8e, 0x4e,
+    0x99, 0x90, 0x99, 0xdc, 0x85, 0x09, 0x26, 0x25, 0x59, 0x9f, 0x61, 0x14,
+    0xe4, 0x1f, 0x90, 0x89, 0x4e, 0x8a, 0x3d, 0x0a, 0x1b, 0xfd, 0xbb, 0x19,
+    0xfb, 0xf3, 0x47, 0x5f, 0xef, 0xd8, 0x9a, 0x50, 0x3e, 0x3a, 0x98, 0x4d,
+    0x56, 0x21, 0xd7, 0xc3, 0x5b, 0xc9, 0x9b, 0x9d, 0x7c, 0xd7, 0x76, 0x9a,
+    0x2f, 0x4b, 0xff, 0x27, 0xba, 0x2f, 0x2f, 0xdf, 0xf3, 0xab, 0x87, 0xd6,
+    0xb2, 0xdb, 0xcb, 0x4f, 0x1d, 0x7f, 0xcf, 0xe9, 0x42, 0x9e, 0x49, 0xce,
+    0xa5, 0x9e, 0xa0, 0x8d, 0xdf, 0xb1, 0x7d, 0x70, 0x9d, 0x41, 0x4d, 0x0f,
+    0x21, 0x0d, 0xf5, 0xdb, 0x68, 0x86, 0xff, 0xff, 0x93, 0x66, 0x0b, 0x01,
+    0xc0, 0xf7, 0x16, 0xb7, 0x96, 0x09, 0xd4, 0xc2, 0x2b, 0x31, 0x1e, 0xa1,
+    0xb6, 0x3f, 0x9e, 0x17, 0xf2, 0x84, 0xc6, 0x4e, 0xa7, 0x36, 0x12, 0xc9,
+    0x29, 0x12, 0x68, 0xc1, 0xf9, 0x0c, 0x25, 0xc2, 0xa3, 0xa4, 0x7f, 0xc6,
+    0x9a, 0x31, 0x8c, 0xe9, 0x0c, 0x13, 0xa7, 0x6c, 0xca, 0x25, 0xb8, 0x1d,
+    0x3a, 0xff, 0xe0, 0x44, 0xc3, 0x9b, 0x1d, 0x6b, 0x43, 0xaf, 0xb3, 0xaf,
+    0xe3, 0xaf, 0xf6, 0x27, 0x3f, 0xfc, 0x1a, 0x3a, 0xca, 0x85, 0x11, 0x30,
+    0x28, 0x9a, 0x20, 0xbe, 0xf4, 0x6f, 0x39, 0xd7, 0xfd, 0xed, 0x66, 0xf2,
+    0xe8, 0x14, 0x3a, 0x90, 0xf7, 0x84, 0x8e, 0xfa, 0x36, 0x44, 0x8e, 0xbf,
+    0x71, 0xae, 0xed, 0x34, 0x44, 0x77, 0xff, 0xdd, 0x06, 0xb5, 0x8b, 0x1c,
+    0xd9, 0xf2, 0x15, 0x83, 0xaf, 0xfa, 0x27, 0xe6, 0x7b, 0xc9, 0xe3, 0xaf,
+    0x0c, 0x6e, 0x75, 0x48, 0xf4, 0xc2, 0x71, 0x7f, 0xd9, 0xcc, 0xd6, 0x38,
+    0xce, 0x75, 0xec, 0x0a, 0xce, 0xbf, 0xff, 0xdd, 0x74, 0xf4, 0x74, 0x73,
+    0xdd, 0x4e, 0xe2, 0x32, 0x75, 0xff, 0xff, 0xef, 0x79, 0x17, 0xc4, 0xcd,
+    0xc4, 0x1e, 0x8e, 0xfc, 0xd8, 0x9e, 0x9a, 0x0e, 0xa8, 0x46, 0xc6, 0x2e,
+    0xdf, 0xe7, 0x5e, 0x72, 0x50, 0xb3, 0xae, 0x9d, 0x65, 0x5c, 0xcb, 0x25,
+    0x5f, 0xf9, 0x86, 0xf5, 0x26, 0xec, 0x4e, 0xc7, 0xe6, 0xbd, 0x91, 0x7b,
+    0xed, 0x91, 0xe8, 0x3a, 0xa4, 0x7f, 0xa8, 0xb7, 0x7f, 0x63, 0xaf, 0x37,
+    0xf1, 0xd7, 0xf9, 0xd8, 0xd2, 0x71, 0xff, 0x3a, 0xca, 0xe7, 0x5f, 0xf4,
+    0x66, 0xf0, 0xf2, 0x79, 0x1d, 0x4a, 0xc9, 0xe4, 0x84, 0x4e, 0xfe, 0x57,
+    0x1c, 0xeb, 0xf8, 0xeb, 0xfa, 0x14, 0xc1, 0x45, 0x0e, 0xbf, 0xb3, 0xdb,
+    0x5e, 0xce, 0x9d, 0x58, 0x88, 0x91, 0x2e, 0xd1, 0x65, 0xff, 0xfc, 0xd6,
+    0x38, 0xe2, 0x9e, 0x63, 0x91, 0xe1, 0x7f, 0xce, 0xa5, 0x6d, 0x7a, 0xc1,
+    0x55, 0x0a, 0xe8, 0x84, 0xc4, 0x88, 0x30, 0x89, 0xa6, 0x7b, 0xc2, 0xa9,
+    0x08, 0xa6, 0x36, 0xe4, 0x3c, 0xfa, 0x42, 0xf0, 0xdd, 0xfc, 0x84, 0x4b,
+    0x34, 0xf9, 0xe8, 0x58, 0x6c, 0x2e, 0xbb, 0x6b, 0xa7, 0x5f, 0xb8, 0xd7,
+    0x76, 0x9a, 0x22, 0xeb, 0xf7, 0xbf, 0xfa, 0x32, 0x2a, 0xfd, 0xaf, 0x76,
+    0x3f, 0x3a, 0xfc, 0xf3, 0xc7, 0x00, 0x75, 0x98, 0x9d, 0x18, 0xb8, 0x32,
+    0xe6, 0x60, 0x2a, 0xdb, 0x28, 0xa6, 0x15, 0x14, 0x4a, 0x3d, 0x5b, 0xff,
+    0x96, 0xf2, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x26, 0x6b, 0xf9, 0x56, 0x56,
+    0x8a, 0x8d, 0x47, 0x8e, 0xbd, 0xbc, 0x68, 0xeb, 0xcd, 0x45, 0x9d, 0x7c,
+    0xaa, 0xf3, 0x89, 0xd7, 0x6d, 0xab, 0x27, 0x5d, 0x80, 0x3a, 0xff, 0xf7,
+    0x61, 0x6f, 0xec, 0xdf, 0xf5, 0xfd, 0xe9, 0xd7, 0xf7, 0xb2, 0x7c, 0xfe,
+    0x63, 0xaf, 0xf7, 0xcc, 0x17, 0xe7, 0xfb, 0x67, 0x5f, 0xff, 0x96, 0xfd,
+    0xcd, 0xff, 0xeb, 0x2f, 0xd9, 0xba, 0x03, 0xa8, 0x28, 0x90, 0xc3, 0x7b,
+    0xb5, 0x87, 0x5d, 0xb5, 0xe3, 0xac, 0xa9, 0x3a, 0xdf, 0xc1, 0xad, 0x00,
+    0xcd, 0xff, 0xff, 0x90, 0x61, 0xa3, 0x0b, 0xf9, 0x1c, 0xe2, 0x6c, 0xe3,
+    0xbf, 0xe7, 0x52, 0xb2, 0xa8, 0xd9, 0xa3, 0xc8, 0x2b, 0x32, 0x6f, 0x61,
+    0x7e, 0xe4, 0x5f, 0xa1, 0x78, 0x9e, 0xfe, 0x66, 0x04, 0x73, 0xc7, 0x5f,
+    0x3f, 0x52, 0x63, 0xaf, 0xbb, 0x34, 0x04, 0xea, 0xc3, 0xee, 0x69, 0x5b,
+    0x90, 0xdf, 0xe6, 0xa6, 0x08, 0x7b, 0x07, 0x51, 0xd7, 0xee, 0xbf, 0xa5,
+    0xf9, 0xd7, 0xff, 0xbe, 0x75, 0xd3, 0xdf, 0x80, 0x45, 0xe4, 0x75, 0x62,
+    0x2b, 0x1a, 0x60, 0x81, 0x4b, 0x28, 0xbf, 0xff, 0xff, 0xff, 0xfc, 0xab,
+    0xd5, 0x18, 0xab, 0xd5, 0x4a, 0xd1, 0x5a, 0x35, 0x53, 0x0a, 0xb9, 0x55,
+    0xc9, 0xf6, 0xb0, 0x01, 0x56, 0xb1, 0xb7, 0xbf, 0xde, 0xaa, 0xa2, 0x15,
+    0x4a, 0xea, 0xb7, 0xbe, 0x7c, 0xee, 0xd9, 0xd7, 0xff, 0xef, 0xf7, 0x97,
+    0x41, 0x1c, 0x63, 0xa8, 0xd7, 0xe1, 0xd7, 0xff, 0x6e, 0xcc, 0x78, 0x28,
+    0xaf, 0xa8, 0x59, 0xd7, 0xff, 0xfe, 0x45, 0xa7, 0x3a, 0x0d, 0x4a, 0x36,
+    0x72, 0x07, 0xdd, 0xc9, 0x1d, 0x7f, 0xe4, 0xf2, 0x35, 0x03, 0xec, 0x69,
+    0xd5, 0x88, 0xf0, 0xf2, 0x46, 0xd3, 0x65, 0xf7, 0xb6, 0xf3, 0xa7, 0x5f,
+    0xff, 0xe7, 0x16, 0x8e, 0x07, 0xa0, 0xf9, 0xd8, 0x97, 0x22, 0x73, 0xab,
+    0x11, 0x0a, 0x02, 0x4b, 0xff, 0xfc, 0xea, 0x0e, 0x7e, 0x0d, 0x7c, 0x92,
+    0x76, 0x1a, 0x2e, 0x75, 0xf7, 0x93, 0xa8, 0x75, 0xff, 0x3f, 0x25, 0xf3,
+    0x1a, 0x1c, 0x3a, 0x95, 0x4b, 0x80, 0xd1, 0x19, 0x5e, 0x46, 0x91, 0xd8,
+    0x5b, 0xb9, 0x10, 0xb0, 0x80, 0x82, 0xdc, 0x3a, 0xfe, 0xf6, 0x2f, 0x7c,
+    0x59, 0xd6, 0xee, 0x1b, 0xd4, 0x10, 0xbf, 0xc0, 0x0b, 0xcb, 0x49, 0x23,
+    0xaf, 0xff, 0xc1, 0x41, 0x9f, 0x34, 0x8f, 0xd6, 0x19, 0x65, 0x92, 0xaf,
+    0xef, 0x76, 0x27, 0xe8, 0x0e, 0xbf, 0xb7, 0x96, 0xbf, 0x04, 0xc7, 0x5f,
+    0xf4, 0xf9, 0xf8, 0x40, 0xfc, 0x91, 0xd7, 0x9d, 0xda, 0x68, 0xb3, 0xef,
+    0xef, 0xdc, 0x64, 0x8b, 0x3a, 0xa7, 0x44, 0x6b, 0x4e, 0xbf, 0x27, 0xbf,
+    0xf2, 0x76, 0x24, 0x9e, 0x8f, 0x68, 0xeb, 0xff, 0xdc, 0xeb, 0xfc, 0xcd,
+    0x83, 0x9a, 0xc1, 0x3a, 0xff, 0xed, 0x79, 0x26, 0x65, 0xc3, 0x1b, 0xe8,
+    0xea, 0x44, 0x48, 0x01, 0x2a, 0xf3, 0x2c, 0xb2, 0x55, 0xff, 0x9e, 0x5a,
+    0x1c, 0x68, 0x73, 0x85, 0x30, 0x5f, 0xdf, 0xb6, 0x80, 0xbc, 0x09, 0xd7,
+    0xfb, 0xdd, 0xcd, 0x9f, 0x24, 0xb3, 0xab, 0x0f, 0x84, 0x05, 0x57, 0xfe,
+    0xde, 0x42, 0x0f, 0xfe, 0x35, 0x7f, 0x9d, 0x74, 0x28, 0x75, 0x41, 0xed,
+    0x4e, 0x89, 0x7f, 0xba, 0x81, 0x17, 0x79, 0x8e, 0xbf, 0xc1, 0xe8, 0x1f,
+    0xfd, 0xbc, 0x3a, 0xa0, 0xf9, 0xd0, 0xc6, 0xff, 0x90, 0x43, 0xf4, 0x20,
+    0xf6, 0x8e, 0xbd, 0x02, 0xa1, 0xd5, 0x25, 0xd0, 0x00, 0x92, 0xb4, 0xcb,
+    0x75, 0x89, 0x8b, 0xb9, 0x0b, 0xe5, 0x99, 0x76, 0x19, 0x9f, 0xa0, 0x8c,
+    0x2b, 0x74, 0xf7, 0xe8, 0x44, 0xec, 0x20, 0xfa, 0x75, 0x7f, 0xdc, 0x76,
+    0x7a, 0x91, 0xc8, 0x3a, 0xff, 0xdc, 0x4d, 0x4b, 0xef, 0x60, 0x60, 0xeb,
+    0xee, 0x24, 0x2c, 0xeb, 0xff, 0xf7, 0x94, 0x04, 0x60, 0x7b, 0x9a, 0xde,
+    0x51, 0xd3, 0xab, 0x88, 0xb4, 0x59, 0xf0, 0x90, 0x5c, 0xf2, 0x3a, 0xff,
+    0xff, 0xfe, 0x17, 0x67, 0xd9, 0xd1, 0xcf, 0x03, 0xf5, 0xbc, 0x9c, 0x30,
+    0x2f, 0xc7, 0x91, 0xd7, 0xfb, 0x3b, 0xd0, 0x79, 0xc4, 0xeb, 0xe5, 0xa4,
+    0xda, 0x3a, 0xc8, 0x14, 0x76, 0xcc, 0x2b, 0xc8, 0x42, 0xac, 0xc6, 0xfd,
+    0xc9, 0xb6, 0x60, 0x4e, 0xbf, 0xf6, 0x33, 0xb5, 0xcc, 0xda, 0x10, 0x32,
+    0x75, 0x42, 0x7a, 0x7d, 0x8c, 0x71, 0xd2, 0x04, 0xaa, 0xff, 0xff, 0xfb,
+    0xfd, 0x66, 0x0a, 0x9f, 0x78, 0x31, 0x9d, 0x63, 0x43, 0x93, 0xaf, 0x16,
+    0x75, 0xfb, 0xec, 0x0f, 0xd5, 0x9d, 0x58, 0x8a, 0x9f, 0x3f, 0xdf, 0xb6,
+    0x3f, 0x63, 0xe9, 0xd5, 0x87, 0x98, 0x84, 0x57, 0xb5, 0x13, 0x9d, 0x7f,
+    0xd1, 0x8d, 0xea, 0x6c, 0x7e, 0x1d, 0x76, 0x74, 0xea, 0x13, 0xcd, 0xdb,
+    0x38, 0xa9, 0x22, 0xb7, 0x44, 0x1e, 0x69, 0xbd, 0xd0, 0x32, 0x75, 0xef,
+    0xc0, 0xd3, 0xaf, 0x7b, 0x3e, 0x9d, 0x7f, 0x46, 0xfa, 0xf9, 0xc8, 0x3a,
+    0xf0, 0x40, 0xd3, 0xaf, 0x82, 0x31, 0x23, 0xa9, 0x0d, 0xe3, 0x8e, 0x50,
+    0x51, 0xc3, 0xb8, 0xea, 0x0e, 0xac, 0x77, 0xad, 0x77, 0x63, 0x4e, 0xbf,
+    0xb8, 0x9b, 0x30, 0x74, 0x75, 0xfd, 0xbf, 0xb3, 0xa0, 0x57, 0x3a, 0xfe,
+    0xe6, 0x77, 0xa0, 0xf1, 0xd7, 0xee, 0x8c, 0x67, 0x0c, 0xbf, 0xb3, 0x93,
+    0x81, 0xc2, 0x68, 0x83, 0x58, 0x34, 0xb6, 0xe4, 0xe8, 0x9d, 0x92, 0x95,
+    0x42, 0x3e, 0x12, 0x19, 0xd7, 0xe7, 0x6a, 0x2e, 0x0e, 0xbf, 0xa5, 0xd1,
+    0x7d, 0xfc, 0x75, 0xb1, 0xa7, 0xa4, 0x24, 0xb7, 0xe8, 0xf7, 0xc5, 0xb2,
+    0x75, 0xfe, 0x92, 0x2e, 0x3b, 0xf4, 0x27, 0x5f, 0xfe, 0x8c, 0x1d, 0xfd,
+    0x9c, 0x49, 0xdd, 0x67, 0x5f, 0x9d, 0x9f, 0x67, 0x74, 0x7f, 0x9e, 0x34,
+    0xa5, 0x6d, 0x55, 0xec, 0x0a, 0xca, 0x32, 0x5c, 0x78, 0xe1, 0x30, 0xc2,
+    0x9a, 0xf6, 0xb2, 0x47, 0x5f, 0x93, 0x79, 0x20, 0x9d, 0x79, 0x3b, 0x87,
+    0x5d, 0x0b, 0xc3, 0xc0, 0x69, 0x35, 0xf0, 0x75, 0xd8, 0x3a, 0xfc, 0x3c,
+    0x65, 0xe7, 0x3a, 0xb0, 0xf2, 0x5c, 0x86, 0xe0, 0x09, 0xd5, 0x09, 0x82,
+    0xa2, 0xdf, 0x1d, 0x74, 0x41, 0x7b, 0xb8, 0x27, 0x5f, 0xe9, 0xa2, 0x75,
+    0xbc, 0xd0, 0x75, 0xff, 0xf3, 0xa9, 0xe8, 0xe7, 0xfc, 0x8f, 0x0b, 0xfe,
+    0x75, 0xff, 0xfc, 0x2e, 0xa7, 0xcf, 0xa2, 0xfe, 0xd2, 0x6f, 0xd4, 0x64,
+    0xea, 0xc4, 0x7e, 0xb8, 0xd0, 0x9a, 0x01, 0x42, 0xed, 0x6c, 0x3a, 0xf9,
+    0x05, 0xc2, 0x75, 0xff, 0x97, 0x9e, 0xd7, 0xdd, 0x3c, 0xb0, 0xeb, 0xf6,
+    0xa3, 0x9e, 0x83, 0x98, 0x37, 0xf4, 0x14, 0x4a, 0xe9, 0x7a, 0xfd, 0xf6,
+    0x67, 0x7e, 0x1d, 0x7d, 0xdc, 0x4d, 0x87, 0x5f, 0xda, 0x4e, 0x60, 0x38,
+    0x75, 0xff, 0xfe, 0x89, 0xbe, 0x23, 0x41, 0xcd, 0x03, 0xe2, 0xd3, 0xdd,
+    0x43, 0xab, 0x13, 0xac, 0x48, 0x56, 0xac, 0x8f, 0xa5, 0x3e, 0x22, 0xda,
+    0x2c, 0xb9, 0x6a, 0x83, 0x45, 0xf9, 0x7d, 0xae, 0x66, 0x1d, 0x7f, 0xf4,
+    0xbc, 0x09, 0x49, 0x7e, 0xf4, 0x2c, 0xeb, 0xfd, 0xed, 0x44, 0xf9, 0xa0,
+    0x9d, 0x77, 0x70, 0xeb, 0xff, 0xee, 0xc0, 0x71, 0xbf, 0x30, 0x70, 0x3d,
+    0x83, 0xaf, 0xfe, 0x4c, 0x1c, 0xcd, 0x7c, 0x96, 0x96, 0x75, 0xff, 0x9e,
+    0x37, 0x97, 0xcd, 0x6e, 0x18, 0x3a, 0x82, 0x9b, 0xfe, 0xe4, 0x08, 0x8a,
+    0xae, 0x67, 0x30, 0xae, 0x93, 0xbc, 0x87, 0x79, 0x48, 0xe1, 0xd7, 0xf0,
+    0x63, 0xfe, 0x66, 0xe7, 0x53, 0x07, 0x94, 0xb1, 0xcb, 0xfd, 0x0b, 0xc4,
+    0xe4, 0xd2, 0x3a, 0xe4, 0x98, 0xeb, 0xff, 0xde, 0x8e, 0x8b, 0xcf, 0x1c,
+    0xe3, 0xc8, 0xeb, 0xde, 0x49, 0xce, 0xbf, 0x7e, 0xfb, 0xc4, 0xc7, 0x5e,
+    0x18, 0x69, 0xd7, 0xff, 0x05, 0x26, 0xec, 0x73, 0x79, 0x47, 0x0e, 0xbf,
+    0xfc, 0x82, 0xfb, 0xeb, 0x59, 0xc0, 0xf7, 0x0e, 0xaf, 0x89, 0xa5, 0x20,
+    0xb2, 0xd2, 0x1c, 0x70, 0x4a, 0x74, 0x35, 0xb4, 0x8b, 0x68, 0x3a, 0xf7,
+    0x53, 0xc7, 0x5b, 0x66, 0x1a, 0xaf, 0xa1, 0xf5, 0x0b, 0xa2, 0x21, 0x5e,
+    0xc8, 0xe9, 0x92, 0x16, 0x7d, 0x23, 0x78, 0xdf, 0x3f, 0x84, 0x8d, 0xff,
+    0x60, 0xc8, 0x71, 0x70, 0xd3, 0xaf, 0xdd, 0x4d, 0x98, 0x13, 0xaf, 0xfc,
+    0x18, 0x1c, 0x10, 0x4b, 0x34, 0x75, 0xf9, 0xd6, 0x9b, 0x58, 0x75, 0xef,
+    0x46, 0xe7, 0x56, 0x1e, 0x23, 0x94, 0x5e, 0x84, 0x98, 0xeb, 0xc2, 0xac,
+    0xed, 0x1d, 0x7e, 0xc9, 0xd7, 0x1a, 0x3a, 0xff, 0xff, 0xd1, 0xd4, 0x5b,
+    0x13, 0x49, 0xf9, 0xf7, 0xa9, 0xbe, 0x9a, 0x93, 0x9d, 0x41, 0x4f, 0x49,
+    0x43, 0x54, 0x28, 0x99, 0xff, 0xa4, 0x02, 0x37, 0xa2, 0x3d, 0xa2, 0x7b,
+    0xf9, 0xf9, 0x1d, 0xfa, 0x13, 0xaf, 0xa1, 0x27, 0x83, 0xaf, 0x99, 0x7c,
+    0xd1, 0xd7, 0xfd, 0x25, 0xbc, 0xbd, 0xa8, 0x50, 0xea, 0x83, 0xda, 0x72,
+    0x1b, 0xda, 0x41, 0x3a, 0xfc, 0x2d, 0xf9, 0xad, 0xce, 0xac, 0x3c, 0x47,
+    0x1a, 0xa7, 0x4c, 0xb3, 0xf2, 0xe1, 0x7a, 0x03, 0x25, 0xd3, 0xc8, 0xeb,
+    0xc9, 0xd4, 0x3a, 0xb7, 0x36, 0x3e, 0x17, 0xbe, 0xfa, 0x07, 0xd1, 0xd7,
+    0xfa, 0x40, 0x19, 0xf4, 0x9b, 0x9d, 0x7d, 0xff, 0xf9, 0xb9, 0xd7, 0xf6,
+    0xd7, 0xb1, 0xc5, 0xa7, 0x5f, 0xf0, 0x1e, 0x41, 0xcc, 0xff, 0x47, 0x5f,
+    0xef, 0xd3, 0x7d, 0xe5, 0x9e, 0x3a, 0xba, 0x7d, 0xba, 0x38, 0xbf, 0x6f,
+    0xa5, 0xa2, 0xb9, 0xd7, 0xff, 0xec, 0xd7, 0xce, 0xba, 0x7b, 0xf0, 0x08,
+    0xbc, 0x8e, 0xa8, 0x44, 0x00, 0x95, 0xdf, 0xcf, 0x3f, 0xee, 0x21, 0x3a,
+    0xa6, 0x4f, 0x8f, 0x86, 0x9d, 0x24, 0xf4, 0x26, 0xf6, 0x42, 0x8b, 0x6c,
+    0x86, 0xff, 0xbb, 0xf6, 0x1b, 0xb7, 0x9c, 0x83, 0xaa, 0x15, 0x55, 0x64,
+    0xa0, 0x67, 0x68, 0xba, 0x60, 0x1d, 0x65, 0x9d, 0x5b, 0x9a, 0x75, 0x48,
+    0xbd, 0xff, 0xd1, 0xcc, 0xd8, 0xf2, 0xff, 0x30, 0x27, 0x5f, 0xcf, 0xbc,
+    0x86, 0x02, 0x75, 0xff, 0x46, 0xf2, 0x41, 0x5b, 0xf8, 0xea, 0x73, 0xe3,
+    0x12, 0xcb, 0xf3, 0xcb, 0x27, 0x83, 0xaf, 0xfe, 0x8d, 0x6b, 0x17, 0xe1,
+    0x85, 0xe8, 0xeb, 0xff, 0x92, 0x34, 0x2f, 0x2f, 0x9a, 0xce, 0x1d, 0x7f,
+    0xff, 0x93, 0x53, 0xe3, 0x38, 0x20, 0xda, 0x86, 0x30, 0x5f, 0x87, 0x5f,
+    0xed, 0xe5, 0xa9, 0xa5, 0x13, 0x9d, 0x41, 0x4d, 0x0d, 0xa4, 0xc2, 0x85,
+    0xe4, 0x30, 0x31, 0x5f, 0xff, 0xfb, 0xa9, 0xbf, 0xb3, 0x7f, 0x73, 0x91,
+    0xef, 0xfe, 0x8c, 0xbb, 0x87, 0x5f, 0x04, 0x2e, 0x27, 0x5f, 0xfa, 0x50,
+    0x3e, 0xe2, 0x6c, 0xc0, 0x9d, 0x7f, 0xe7, 0xeb, 0x51, 0xfe, 0x69, 0xfa,
+    0x75, 0xff, 0xfb, 0x43, 0xf3, 0xae, 0x9e, 0xfc, 0x02, 0x2f, 0x23, 0xaf,
+    0xf7, 0x51, 0x4d, 0xb0, 0x71, 0x43, 0xaf, 0xfa, 0x19, 0x5f, 0x61, 0x06,
+    0x73, 0xaf, 0xff, 0x87, 0x35, 0x8b, 0x86, 0xe7, 0x93, 0x98, 0x75, 0xb1,
+    0xa8, 0xbb, 0xf1, 0xc6, 0xc3, 0x8b, 0xfa, 0x7c, 0xe2, 0x36, 0x0e, 0xbe,
+    0x10, 0xc2, 0xce, 0xbf, 0x6c, 0xc1, 0x03, 0x9d, 0x7f, 0x3f, 0xf8, 0x17,
+    0x91, 0xd5, 0x07, 0xe7, 0x84, 0x08, 0x4f, 0x48, 0x8c, 0xbe, 0xc2, 0x7e,
+    0xa1, 0x76, 0xfe, 0x72, 0x60, 0xc2, 0x9f, 0x23, 0x63, 0x6a, 0x52, 0x38,
+    0x4c, 0x41, 0xd3, 0xef, 0xcf, 0x86, 0x31, 0x0f, 0x46, 0x05, 0x7f, 0xf6,
+    0x0f, 0xf9, 0x9c, 0xd7, 0xa3, 0x0e, 0xbf, 0xed, 0xfd, 0x9c, 0x49, 0xdd,
+    0x67, 0x5b, 0x3f, 0x3f, 0xa1, 0x41, 0xbc, 0xa9, 0x92, 0x1d, 0x7d, 0x02,
+    0xf2, 0x3a, 0xfd, 0x8a, 0xee, 0x3f, 0xfc, 0x37, 0xdc, 0x1f, 0xbf, 0xb6,
+    0x75, 0x23, 0x9a, 0x3a, 0xff, 0xfd, 0x03, 0x2c, 0xea, 0x2c, 0x39, 0x34,
+    0x67, 0x0e, 0xbe, 0x6f, 0x52, 0x63, 0xaf, 0xff, 0xc3, 0x8a, 0x28, 0x81,
+    0xea, 0x4d, 0xd4, 0xdf, 0xc7, 0x54, 0x1f, 0xce, 0x11, 0x5e, 0x6b, 0xf0,
+    0xeb, 0xf6, 0x9b, 0x1c, 0x50, 0xea, 0xe9, 0xe1, 0xfe, 0x37, 0x7f, 0xb2,
+    0x58, 0x81, 0xea, 0x1d, 0x7d, 0xe9, 0x2f, 0xa7, 0x5f, 0x22, 0x88, 0xc9,
+    0xd5, 0x87, 0x88, 0x24, 0x57, 0x7c, 0xc3, 0xaf, 0xb4, 0x30, 0xb3, 0xaa,
+    0x0d, 0xbe, 0xe2, 0xf7, 0xd9, 0xd9, 0x2c, 0xea, 0x85, 0x66, 0x72, 0x65,
+    0xc4, 0x25, 0x0b, 0xbb, 0x0c, 0xb7, 0x63, 0x12, 0x3d, 0x3a, 0x01, 0x5f,
+    0x6c, 0x86, 0xf0, 0x56, 0xd3, 0xad, 0xd3, 0xae, 0xd4, 0x8e, 0xaf, 0xcd,
+    0x30, 0x04, 0x2f, 0xe9, 0xe6, 0x92, 0xab, 0x93, 0x9d, 0x79, 0xf3, 0x87,
+    0x5e, 0x1c, 0xf1, 0xd5, 0xd3, 0x68, 0x23, 0x57, 0x78, 0x4e, 0xbd, 0x1b,
+    0xe8, 0xeb, 0xe4, 0x19, 0x61, 0xd7, 0xa7, 0x71, 0x3a, 0x82, 0x7a, 0xcb,
+    0x1c, 0xf0, 0xfd, 0xfb, 0x3d, 0xd4, 0xf1, 0xd7, 0xe7, 0xdf, 0x37, 0xf1,
+    0xd6, 0x53, 0xa7, 0x9d, 0xe2, 0x6b, 0x93, 0x87, 0x5f, 0xd3, 0xfc, 0x9d,
+    0xdf, 0xa7, 0x52, 0xb2, 0x9e, 0xfc, 0x34, 0xc8, 0x83, 0x1a, 0xd1, 0xf7,
+    0xa5, 0x2e, 0x2b, 0x7f, 0xd8, 0x10, 0xa6, 0xf9, 0xbf, 0x8e, 0xbe, 0x68,
+    0xc4, 0x8e, 0xae, 0x9e, 0xcb, 0x9c, 0xdf, 0xe8, 0xcf, 0x47, 0x5c, 0x27,
+    0x54, 0xe7, 0xa2, 0x12, 0x1b, 0xff, 0x83, 0x01, 0xe4, 0x79, 0x1a, 0x81,
+    0x3a, 0xfa, 0x68, 0xda, 0x91, 0xd7, 0xf7, 0x9a, 0x10, 0xaf, 0x87, 0x5f,
+    0xf4, 0xda, 0xd8, 0xe3, 0x38, 0x02, 0x75, 0xf6, 0x7b, 0x16, 0x75, 0xc2,
+    0xa1, 0xd6, 0xd3, 0x9b, 0x60, 0x10, 0x5f, 0xdd, 0x04, 0xf3, 0x75, 0x0e,
+    0xbe, 0x11, 0xcf, 0x1d, 0x50, 0x9c, 0xf0, 0x48, 0xf1, 0x09, 0x42, 0x54,
+    0x2e, 0x99, 0xcb, 0xa4, 0xde, 0x2f, 0xbf, 0xbe, 0x4d, 0x1e, 0x1d, 0x87,
+    0x5f, 0xfe, 0x18, 0xd9, 0xc8, 0xe6, 0x27, 0x60, 0x27, 0x5e, 0x17, 0x59,
+    0xd5, 0x24, 0x49, 0xe1, 0x8a, 0x24, 0x59, 0x85, 0x65, 0xdd, 0x06, 0xab,
+    0x67, 0x8a, 0xd0, 0x71, 0x5a, 0x8d, 0xc4, 0xa5, 0xa9, 0xe1, 0xd7, 0x28,
+    0x6c, 0x86, 0x71, 0x07, 0x27, 0x6d, 0x54, 0x86, 0xe3, 0x65, 0x5f, 0x6f,
+    0x1f, 0x1a, 0x46, 0x23, 0x34, 0xb0, 0x7e, 0x46, 0xd6, 0xb8, 0xce, 0x7b,
+    0x3d, 0xee, 0xf2, 0x93, 0x3f, 0x8e, 0x85, 0x52, 0xdc, 0x32, 0xb3, 0x35,
+    0x3c, 0x39, 0xe9, 0xc5, 0xe0, 0x42, 0x49, 0x94, 0x2d, 0xb9, 0x40, 0x3f,
+    0x65, 0x57, 0x6d, 0x46, 0x09, 0x4c, 0x3b, 0xc9, 0x3e, 0xdb, 0xa5, 0xdb,
+    0xff, 0xcc, 0x2d, 0xe4, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x4d, 0x97, 0xf9,
+    0x8c, 0xe3, 0x5d, 0xda, 0x68, 0xab, 0x6f, 0xf4, 0xa4, 0x0f, 0x0c, 0x48,
+    0xeb, 0xec, 0xeb, 0xf8, 0xeb, 0x2a, 0x30, 0xf4, 0x84, 0xca, 0xff, 0x73,
+    0x1b, 0x1f, 0xfd, 0x59, 0xd7, 0xfd, 0x1d, 0x89, 0xf9, 0x18, 0x13, 0xab,
+    0x87, 0xd9, 0xd3, 0x5b, 0xf4, 0x71, 0x7d, 0x09, 0xd7, 0x83, 0x82, 0x75,
+    0xe7, 0x76, 0x9a, 0x2b, 0x4b, 0xf2, 0x9b, 0xe8, 0x1b, 0x9d, 0x4d, 0x3d,
+    0x24, 0x27, 0xbf, 0xfc, 0x9e, 0x94, 0x37, 0xa9, 0xed, 0x3e, 0xe7, 0x57,
+    0x0f, 0xab, 0x61, 0x0d, 0xff, 0xee, 0xa2, 0xe1, 0xb8, 0xbc, 0x1f, 0x6d,
+    0x9d, 0x7f, 0xfc, 0xd8, 0xe6, 0x7e, 0xeb, 0x79, 0x42, 0x34, 0xeb, 0xff,
+    0xe9, 0x6b, 0x06, 0x16, 0xf9, 0xef, 0x42, 0xce, 0xbb, 0xde, 0x84, 0x4c,
+    0xba, 0x6d, 0xff, 0xff, 0xe8, 0xd8, 0x9e, 0xd6, 0x28, 0xde, 0xa7, 0xb2,
+    0x61, 0x85, 0xcf, 0x8c, 0x9d, 0x7f, 0xa3, 0xcf, 0xdf, 0x81, 0x83, 0xaf,
+    0xa5, 0xe4, 0x9c, 0xeb, 0xf7, 0xdf, 0x0c, 0x7e, 0x75, 0x6e, 0x79, 0x7b,
+    0x08, 0xaf, 0xf3, 0xcb, 0xc9, 0x3f, 0x50, 0xea, 0x83, 0xd7, 0x42, 0x5b,
+    0xf6, 0x75, 0x31, 0x67, 0x5f, 0xfc, 0x2e, 0x8d, 0xeb, 0x82, 0x7e, 0x21,
+    0xd5, 0x39, 0xf3, 0xf4, 0x96, 0xff, 0x4a, 0x39, 0x3c, 0x72, 0x73, 0xaf,
+    0x67, 0x3f, 0x3a, 0xfd, 0x36, 0x05, 0x6a, 0xe7, 0x5f, 0xc3, 0x0c, 0xef,
+    0x2d, 0x1d, 0x48, 0x7e, 0xb3, 0x0e, 0x6d, 0x15, 0xd4, 0x23, 0x6f, 0x21,
+    0x53, 0x7f, 0xff, 0xff, 0x62, 0x37, 0x3d, 0x03, 0xed, 0x7c, 0x84, 0x0e,
+    0x2f, 0xe7, 0x21, 0x24, 0xfa, 0x3a, 0xfe, 0xcf, 0x38, 0xfe, 0x03, 0xaf,
+    0xee, 0xfc, 0x49, 0xdc, 0x4e, 0xa9, 0x1e, 0xd6, 0x16, 0x59, 0x85, 0x52,
+    0xf7, 0x2c, 0x42, 0x5a, 0x72, 0x20, 0x93, 0xe4, 0x35, 0x9a, 0x48, 0x90,
+    0xe3, 0xe1, 0x6a, 0xde, 0xbb, 0x0d, 0x57, 0x84, 0x38, 0xc3, 0xfb, 0x44,
+    0xde, 0x87, 0x0d, 0xfe, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x2c, 0x0b, 0xf7,
+    0x1a, 0xee, 0xd3, 0x44, 0xeb, 0x7f, 0xff, 0xbb, 0x13, 0x87, 0x16, 0xc6,
+    0xb5, 0x9d, 0x4d, 0x02, 0x73, 0xaf, 0xcc, 0x2d, 0xe4, 0xc6, 0x22, 0x5a,
+    0x63, 0x3b, 0xfd, 0x2d, 0x30, 0xa2, 0x90, 0xb3, 0xaf, 0xdc, 0x6b, 0xbb,
+    0x4d, 0x16, 0xcd, 0xff, 0xfe, 0x79, 0x31, 0xa8, 0x4c, 0x0a, 0x66, 0xb3,
+    0xc3, 0x07, 0x5f, 0xfb, 0xf8, 0xd3, 0x1d, 0x46, 0xbf, 0x0e, 0xbf, 0xe8,
+    0x94, 0x72, 0x78, 0xe4, 0xe7, 0x59, 0x8c, 0x4c, 0x1d, 0x66, 0x6e, 0xb8,
+    0x27, 0xf7, 0xff, 0xe7, 0xff, 0xf0, 0x69, 0x8c, 0xe3, 0xeb, 0xaf, 0x23,
+    0xaf, 0x9a, 0xee, 0xd3, 0x45, 0xcd, 0x65, 0x9d, 0x5c, 0x37, 0xac, 0x96,
+    0xdf, 0xee, 0x0e, 0x6f, 0xfa, 0x48, 0xeb, 0xa6, 0x59, 0xd4, 0x75, 0x98,
+    0xc3, 0xf6, 0x42, 0x26, 0x4c, 0xf6, 0xc5, 0xef, 0xdc, 0x6b, 0xbb, 0x4d,
+    0x17, 0x7d, 0xfe, 0x93, 0x1a, 0xe7, 0x11, 0x93, 0xac, 0xc6, 0x1f, 0x43,
+    0x99, 0xdf, 0x30, 0xa0, 0x7f, 0x3a, 0xa1, 0xf2, 0x91, 0xb2, 0xde, 0x5f,
+    0xb4, 0xd7, 0x75, 0x74, 0x9f, 0x76, 0xe4, 0x3b, 0x17, 0x0d, 0x57, 0x42,
+    0xfe, 0x33, 0xd1, 0x42, 0xd4, 0x61, 0x5e, 0x85, 0x6f, 0xd2, 0x7b, 0xff,
+    0x32, 0xe3, 0x3e, 0x90, 0x77, 0x91, 0xd7, 0xff, 0x64, 0xf8, 0xcf, 0x73,
+    0x58, 0x82, 0x75, 0xc8, 0xc7, 0x51, 0x02, 0x27, 0xf7, 0xed, 0x69, 0x6f,
+    0x23, 0xaf, 0xff, 0xff, 0xfd, 0xd4, 0xea, 0x40, 0xf8, 0x5d, 0x4c, 0xf0,
+    0x3c, 0x9e, 0xd7, 0x53, 0x91, 0x3b, 0xf1, 0xa7, 0x5d, 0xa8, 0x3a, 0xff,
+    0xed, 0xda, 0x07, 0xdf, 0xd9, 0x82, 0xa1, 0xd7, 0x85, 0xd8, 0x84, 0xc6,
+    0x1a, 0x4f, 0xa8, 0x4b, 0xf8, 0x56, 0xf0, 0x1d, 0x67, 0x5f, 0xb3, 0x6b,
+    0xd0, 0xa1, 0xd6, 0xda, 0x3a, 0xa7, 0x37, 0xb8, 0x55, 0x5c, 0x3f, 0x91,
+    0x58, 0xbf, 0xf6, 0x9d, 0x4e, 0xa4, 0x08, 0x20, 0xeb, 0xff, 0x75, 0xfc,
+    0xfd, 0xde, 0x59, 0xe3, 0xab, 0x0f, 0xe9, 0x0f, 0x2e, 0x7f, 0xce, 0xbf,
+    0xff, 0xfc, 0x2e, 0xc8, 0xe7, 0xbd, 0x93, 0xc0, 0xba, 0x9a, 0x5c, 0x60,
+    0x84, 0xea, 0xc4, 0x45, 0x70, 0x5a, 0xff, 0x77, 0x02, 0x9b, 0x39, 0x87,
+    0x5e, 0x77, 0x69, 0xa2, 0x57, 0xbf, 0xca, 0x38, 0xff, 0xec, 0xe9, 0xd4,
+    0xd3, 0xda, 0x42, 0x7b, 0xff, 0xde, 0xee, 0x49, 0xbd, 0x40, 0xc0, 0xf8,
+    0xea, 0x92, 0x3d, 0xb9, 0x08, 0xd1, 0x21, 0xba, 0x53, 0x9d, 0x7f, 0xe1,
+    0x76, 0x43, 0xd8, 0x9f, 0x19, 0x3a, 0xff, 0xfd, 0x89, 0xfe, 0x2d, 0x3d,
+    0xa8, 0x5b, 0xef, 0xe3, 0xaf, 0xfa, 0x17, 0xec, 0x9a, 0x49, 0xe3, 0xaa,
+    0x48, 0x8c, 0xf2, 0xa5, 0xf0, 0x1f, 0x92, 0x3a, 0xff, 0xa1, 0xa3, 0x13,
+    0xfe, 0xfe, 0x3a, 0xff, 0xff, 0x27, 0x9d, 0x6e, 0x3f, 0xf5, 0x97, 0x19,
+    0xda, 0x93, 0x9d, 0x41, 0x45, 0xd2, 0x10, 0xb9, 0xc5, 0xff, 0x03, 0xf5,
+    0xbc, 0xb5, 0xc0, 0x9d, 0x7f, 0xff, 0xb1, 0x07, 0xd8, 0x3f, 0x05, 0xc3,
+    0x03, 0x3c, 0x70, 0xeb, 0x67, 0x91, 0x2f, 0xb0, 0xea, 0xff, 0xb7, 0xff,
+    0x39, 0x99, 0xed, 0x1d, 0x41, 0x55, 0xa1, 0x90, 0xcb, 0xec, 0x37, 0x46,
+    0x18, 0xbf, 0x4a, 0xaf, 0xfd, 0xe7, 0x96, 0xbb, 0x1c, 0xfa, 0x13, 0xaf,
+    0xfe, 0xf2, 0x6c, 0x4f, 0x4d, 0x28, 0x1f, 0x1d, 0x7f, 0xf9, 0xf2, 0x5d,
+    0xc4, 0x1c, 0xff, 0x6f, 0x0e, 0xbc, 0xf2, 0x62, 0x17, 0xa8, 0x65, 0x09,
+    0xb0, 0xc2, 0xab, 0x23, 0x18, 0x59, 0xa6, 0xa5, 0x73, 0xf9, 0x6f, 0xea,
+    0x06, 0xd2, 0x2d, 0xff, 0xec, 0xeb, 0x03, 0x81, 0x41, 0xf6, 0x74, 0xeb,
+    0xde, 0x80, 0x95, 0x7f, 0xfb, 0xae, 0x9e, 0x89, 0x27, 0x27, 0x07, 0xe5,
+    0x5f, 0xe7, 0x6b, 0x01, 0xe2, 0xa5, 0x88, 0x3e, 0x5d, 0x0d, 0xd9, 0x80,
+    0xb2, 0x97, 0x1b, 0x1a, 0x32, 0xe7, 0xdb, 0x7d, 0x0a, 0xdd, 0x90, 0xac,
+    0xbf, 0xfc, 0xc2, 0xde, 0x4c, 0x67, 0x1a, 0xee, 0xd3, 0x44, 0xc3, 0x7f,
+    0xff, 0x66, 0xc7, 0x0f, 0x61, 0x8f, 0x77, 0x02, 0x0f, 0x68, 0xeb, 0xff,
+    0xdc, 0x7f, 0xd8, 0x53, 0xd2, 0x66, 0x35, 0x23, 0xae, 0xc6, 0x05, 0x15,
+    0x7f, 0x57, 0x6f, 0xfe, 0x54, 0x66, 0xf2, 0x03, 0xf8, 0x62, 0x47, 0x5f,
+    0xb1, 0x7f, 0x37, 0x57, 0x3a, 0xfe, 0x85, 0xe7, 0xf1, 0xb0, 0xea, 0x09,
+    0xed, 0xf4, 0xb6, 0xff, 0x73, 0x1b, 0x1f, 0xfd, 0x59, 0xd7, 0xee, 0xc0,
+    0x51, 0x43, 0xa9, 0x0f, 0xfb, 0x84, 0x5b, 0x46, 0xb7, 0xfa, 0x1e, 0x7f,
+    0x28, 0xfc, 0x3a, 0xfc, 0xfc, 0x93, 0xac, 0xea, 0x13, 0xd9, 0x01, 0x9d,
+    0xff, 0xf9, 0x39, 0xd7, 0xf8, 0x1c, 0x97, 0x63, 0x60, 0x60, 0xeb, 0xfe,
+    0x67, 0xef, 0x61, 0xbd, 0x49, 0x8e, 0xbe, 0x02, 0xf0, 0x27, 0x5b, 0x37,
+    0x3d, 0xdd, 0xa3, 0xca, 0xea, 0x37, 0xc6, 0x16, 0x97, 0xf2, 0xe3, 0x07,
+    0xdb, 0x67, 0x5b, 0x47, 0x5f, 0xa3, 0x07, 0xdb, 0x67, 0x5f, 0xdd, 0x4f,
+    0x69, 0xf7, 0xf8, 0x7c, 0xd3, 0x17, 0x2c, 0x42, 0xff, 0x4b, 0xd0, 0xbd,
+    0x9f, 0xc8, 0xeb, 0xff, 0xfc, 0xce, 0xd7, 0xb3, 0xbf, 0x07, 0x27, 0x4c,
+    0x1d, 0xe5, 0xa3, 0xaf, 0xcc, 0xfb, 0x3a, 0xd3, 0xac, 0x38, 0x88, 0xe7,
+    0x66, 0xbf, 0xfd, 0xe1, 0x7f, 0xfb, 0x88, 0x10, 0x7b, 0x47, 0x5f, 0xf4,
+    0x4f, 0xf6, 0x5d, 0x03, 0xce, 0x75, 0x42, 0x21, 0x78, 0x93, 0x7f, 0xf6,
+    0x6f, 0x2f, 0x9d, 0x76, 0xc0, 0x84, 0xeb, 0xfb, 0x67, 0xdf, 0x0c, 0x7e,
+    0x75, 0xff, 0xe8, 0xf7, 0xf1, 0x2c, 0xdf, 0xd3, 0x81, 0x93, 0xaa, 0x0f,
+    0xf9, 0x0c, 0x6f, 0xe7, 0xff, 0x9c, 0x4e, 0x1d, 0x7b, 0xdf, 0x30, 0xea,
+    0xfc, 0xf2, 0xbe, 0x96, 0xdf, 0xda, 0x45, 0x16, 0xfe, 0x3a, 0xff, 0xff,
+    0xdc, 0xcd, 0x90, 0x3e, 0xf9, 0xf4, 0x63, 0xae, 0x9e, 0x8f, 0x68, 0xeb,
+    0xf8, 0x73, 0x5f, 0x1a, 0xaa, 0x3a, 0xb7, 0x46, 0x6f, 0x0b, 0x76, 0x37,
+    0x5f, 0x7c, 0xd9, 0xb5, 0x39, 0xd5, 0x87, 0xba, 0xa1, 0x9d, 0x95, 0xce,
+    0xbb, 0xd8, 0x75, 0xff, 0xe5, 0x48, 0xc2, 0xdd, 0x3a, 0xfe, 0xec, 0x1d,
+    0x50, 0x7b, 0xe0, 0x15, 0xbf, 0xdd, 0x49, 0x9d, 0xba, 0x91, 0xd7, 0xfa,
+    0x07, 0xce, 0xb4, 0xf1, 0xd7, 0xfd, 0x89, 0x8b, 0x1c, 0x9d, 0xce, 0xbf,
+    0x47, 0xb5, 0xf8, 0x0e, 0xa5, 0x65, 0x35, 0x3c, 0x72, 0x69, 0x0f, 0x4c,
+    0xc4, 0xc3, 0xc6, 0xb7, 0xff, 0xee, 0x8e, 0x7b, 0xa9, 0x9b, 0xfb, 0x36,
+    0x46, 0x8e, 0xbf, 0xf9, 0xc7, 0xb0, 0x81, 0x4d, 0x64, 0x8e, 0xbd, 0x1f,
+    0xfd, 0x3a, 0xb1, 0x16, 0x6e, 0xaa, 0x28, 0x17, 0xbe, 0x87, 0x0e, 0xbc,
+    0xa9, 0xd2, 0xa8, 0xea, 0x73, 0xc1, 0xd0, 0xed, 0xfe, 0x17, 0x66, 0x3d,
+    0x93, 0x9d, 0x66, 0x15, 0x4c, 0xad, 0xd8, 0x8c, 0x80, 0x30, 0x8a, 0xc8,
+    0xc0, 0x1b, 0x08, 0xdd, 0xd5, 0x66, 0x86, 0x27, 0x21, 0x56, 0xb2, 0x2e,
+    0xc3, 0x0f, 0xf6, 0xa1, 0x8d, 0x3f, 0x51, 0xba, 0xfa, 0x30, 0xe0, 0x37,
+    0x6d, 0x90, 0xdf, 0xff, 0x71, 0x37, 0x96, 0x93, 0xdd, 0x8e, 0x7a, 0x0e,
+    0xbf, 0x71, 0xae, 0xed, 0x34, 0x55, 0xd7, 0xb9, 0x0b, 0x3a, 0xff, 0xa4,
+    0xc6, 0x71, 0xae, 0xed, 0x34, 0x47, 0x97, 0xfd, 0x12, 0x8e, 0x4f, 0x1c,
+    0x9c, 0xeb, 0xff, 0x47, 0x90, 0x0a, 0x9c, 0x94, 0xf3, 0x1d, 0x66, 0x02,
+    0x9a, 0xf6, 0x27, 0xf0, 0xcd, 0xc6, 0xc5, 0x17, 0x47, 0x37, 0xee, 0x35,
+    0xdd, 0xa6, 0x8b, 0x06, 0xf2, 0x91, 0x39, 0xd7, 0xff, 0xf0, 0x81, 0xe7,
+    0x5e, 0x6d, 0x83, 0x99, 0xc9, 0x7d, 0x91, 0xd7, 0xec, 0x1c, 0xf6, 0x8e,
+    0xbf, 0xdc, 0x75, 0xfd, 0xe3, 0xee, 0x75, 0x98, 0xc4, 0xc2, 0x94, 0x33,
+    0x68, 0xeb, 0xb0, 0x7d, 0x25, 0xbf, 0xcc, 0x67, 0x1a, 0xee, 0xd3, 0x45,
+    0x95, 0x7e, 0xe3, 0x5d, 0xda, 0x68, 0xb4, 0xef, 0xf9, 0xc3, 0xd7, 0x9b,
+    0xa8, 0xb3, 0xac, 0xc6, 0x1f, 0x5a, 0xcc, 0xef, 0xca, 0xd1, 0x57, 0xab,
+    0x2a, 0xca, 0xb6, 0x75, 0xff, 0x2a, 0xba, 0x8c, 0x85, 0xdd, 0xa7, 0x5f,
+    0x95, 0xa2, 0xa3, 0x59, 0x07, 0x5f, 0xef, 0xab, 0xcf, 0x69, 0x34, 0x75,
+    0x90, 0xea, 0x55, 0x1e, 0x1e, 0xd9, 0xa5, 0xff, 0xfc, 0x9d, 0x71, 0xf4,
+    0xb3, 0x99, 0x02, 0x39, 0xe3, 0xaf, 0xdb, 0x1c, 0x38, 0xb3, 0xaf, 0x97,
+    0x1b, 0xe8, 0xea, 0x92, 0x27, 0xf1, 0x56, 0x62, 0x8b, 0xf7, 0xce, 0x70,
+    0x1d, 0x3a, 0xfc, 0x8a, 0x40, 0xb4, 0xeb, 0x66, 0x8f, 0x43, 0xc5, 0x57,
+    0xff, 0xc2, 0xde, 0xa7, 0x53, 0x91, 0x33, 0x39, 0xd3, 0xaf, 0xfc, 0xb5,
+    0xbc, 0xb6, 0xc1, 0xd4, 0xe1, 0xd7, 0xe7, 0xd7, 0xa0, 0x27, 0x54, 0x1f,
+    0x38, 0x10, 0x6a, 0x11, 0xaf, 0xd8, 0x5b, 0x5f, 0x47, 0xd8, 0xe9, 0xd7,
+    0xcd, 0x77, 0x69, 0xa2, 0xdc, 0xbf, 0xf6, 0x73, 0x07, 0xe7, 0x73, 0x76,
+    0x4e, 0xbf, 0x0f, 0xef, 0xbe, 0x8e, 0xa8, 0x3e, 0x87, 0x40, 0xad, 0xd1,
+    0xaf, 0xc2, 0x2d, 0x42, 0x56, 0xff, 0x38, 0xff, 0x30, 0xc2, 0xce, 0xbc,
+    0xb1, 0x43, 0xac, 0x27, 0x5f, 0xf7, 0x40, 0xfa, 0xcc, 0x15, 0x0e, 0xbf,
+    0x69, 0xf7, 0x70, 0x9d, 0x64, 0x09, 0xef, 0x78, 0xde, 0xa1, 0x15, 0xd8,
+    0x35, 0xd6, 0xdb, 0xfe, 0x87, 0x1e, 0xe6, 0x0b, 0x4e, 0xbf, 0xde, 0xf2,
+    0x4e, 0xb8, 0x13, 0xaa, 0x47, 0xcd, 0x86, 0x97, 0xfd, 0x02, 0x05, 0xc6,
+    0xbc, 0x87, 0x5f, 0x06, 0x33, 0x87, 0x5f, 0xbe, 0x6f, 0xa4, 0x50, 0xeb,
+    0x3c, 0xe7, 0x97, 0xb9, 0x05, 0xff, 0xd2, 0xce, 0xa7, 0x03, 0xd8, 0x16,
+    0x9d, 0x7f, 0xb7, 0x94, 0x0f, 0xb3, 0xf3, 0xaf, 0xb5, 0xfa, 0x78, 0xea,
+    0x74, 0x60, 0x68, 0xa4, 0x08, 0x5f, 0x4c, 0xef, 0xfe, 0xf2, 0x7f, 0x12,
+    0x0f, 0x60, 0x5a, 0x75, 0x1d, 0x78, 0x0f, 0xe3, 0xae, 0x04, 0x1d, 0x52,
+    0x36, 0x1e, 0x1b, 0xa3, 0xaf, 0xb7, 0x6a, 0x70, 0xeb, 0xd0, 0xb6, 0x31,
+    0x10, 0xfb, 0x9d, 0x2c, 0x87, 0xc1, 0x55, 0x09, 0x8c, 0xa4, 0x32, 0xaf,
+    0x0f, 0xb6, 0xce, 0xbf, 0xe9, 0x31, 0x9c, 0x6b, 0xbb, 0x4d, 0x14, 0x3d,
+    0x21, 0xf1, 0xb8, 0xf5, 0xfb, 0xf8, 0x6e, 0x2c, 0xeb, 0xe8, 0x9b, 0x02,
+    0x75, 0x70, 0xf2, 0x34, 0x4f, 0x7f, 0xd9, 0x01, 0xec, 0x6d, 0x44, 0xc7,
+    0x5f, 0xef, 0xd3, 0xbd, 0xcf, 0xdc, 0xea, 0x59, 0xf6, 0xfe, 0x75, 0x50,
+    0x8b, 0x27, 0x84, 0x7d, 0xff, 0x9c, 0x30, 0x1e, 0xa0, 0xa2, 0xce, 0xbf,
+    0xfb, 0x50, 0x33, 0x60, 0xfe, 0xfe, 0xc3, 0xaf, 0xf6, 0x80, 0xdc, 0xf0,
+    0xc1, 0xd4, 0xb4, 0x57, 0x74, 0xef, 0xc8, 0x57, 0xff, 0x02, 0x5d, 0x7e,
+    0x6f, 0xe8, 0x49, 0xce, 0xbf, 0xe8, 0x94, 0x72, 0x78, 0xe4, 0xe7, 0x5f,
+    0x93, 0xda, 0x74, 0x3a, 0xff, 0xb9, 0xff, 0x1c, 0x7d, 0x9f, 0x9d, 0x5f,
+    0x9e, 0xf0, 0x09, 0x6f, 0x7d, 0xe4, 0x8e, 0xbf, 0xbe, 0xf8, 0x11, 0x93,
+    0x9d, 0x52, 0x3c, 0xd9, 0x87, 0xaf, 0xfe, 0x68, 0xc7, 0x87, 0x36, 0x67,
+    0x24, 0x75, 0xff, 0x00, 0x54, 0xfb, 0xde, 0x83, 0x47, 0x5f, 0xe1, 0x17,
+    0xf7, 0xd8, 0x69, 0xd7, 0xc3, 0xfc, 0xff, 0x9d, 0x58, 0x7a, 0xc8, 0x65,
+    0x7f, 0xb5, 0xf3, 0xdf, 0x03, 0x82, 0x75, 0xbf, 0x3a, 0xc9, 0xb9, 0xe3,
+    0xf0, 0xda, 0xfc, 0xfb, 0xeb, 0xc8, 0x75, 0x42, 0x75, 0xd8, 0x46, 0x88,
+    0x7d, 0x84, 0x90, 0xb3, 0xe8, 0xa2, 0xfc, 0xe0, 0x52, 0x3e, 0x9d, 0x7e,
+    0x55, 0x67, 0x23, 0x47, 0x54, 0xc7, 0xa6, 0x25, 0x37, 0xfc, 0xfa, 0x89,
+    0xb7, 0x96, 0x6c, 0x3a, 0xff, 0xfc, 0x1e, 0xc7, 0xd6, 0x3c, 0x2f, 0xfe,
+    0xb5, 0x1f, 0x95, 0x70, 0x70, 0xeb, 0xf4, 0xf1, 0x3b, 0xe8, 0xea, 0xc4,
+    0x4b, 0x22, 0xcb, 0x8a, 0xdd, 0xf8, 0x0e, 0xbf, 0x9f, 0xf9, 0x86, 0x02,
+    0x75, 0x41, 0xe2, 0x74, 0x5e, 0xcc, 0x2b, 0x0d, 0x83, 0x62, 0xb6, 0x86,
+    0xab, 0xcf, 0x15, 0x67, 0x38, 0x86, 0x44, 0xa1, 0x00, 0x18, 0x7f, 0x64,
+    0x3f, 0x94, 0x36, 0x6c, 0x38, 0x37, 0x84, 0xa2, 0x10, 0xcd, 0x1a, 0x0f,
+    0x23, 0x57, 0x5c, 0x22, 0xbb, 0x18, 0xd3, 0xc3, 0x53, 0xf3, 0x01, 0x45,
+    0xd4, 0x25, 0xfd, 0x28, 0x78, 0x10, 0xac, 0xd8, 0x45, 0xb7, 0x0d, 0x1f,
+    0xae, 0x37, 0xf3, 0x13, 0xc7, 0x24, 0xb3, 0xaf, 0xf3, 0x19, 0xc6, 0xbb,
+    0xb4, 0xd1, 0x79, 0xd4, 0x3a, 0x42, 0x89, 0x37, 0x86, 0x30, 0x2c, 0xa5,
+    0x86, 0xef, 0x2a, 0x03, 0x91, 0xb3, 0x2d, 0x4f, 0xb0, 0xaa, 0x1a, 0xc2,
+    0x53, 0x51, 0xe2, 0xec, 0x2f, 0xbf, 0xcc, 0x67, 0x1a, 0xee, 0xd3, 0x45,
+    0x2d, 0x7e, 0xe3, 0x5d, 0xda, 0x68, 0xb0, 0xaf, 0xff, 0xd1, 0x82, 0x18,
+    0xec, 0x6f, 0xec, 0x17, 0x59, 0xd7, 0xf0, 0x38, 0x93, 0xba, 0xce, 0xb3,
+    0x18, 0x8b, 0x15, 0x99, 0xed, 0xa8, 0xdf, 0xe6, 0x33, 0x8d, 0x77, 0x69,
+    0xa2, 0xcb, 0xbb, 0x8a, 0x1d, 0x7c, 0xc2, 0x8a, 0xb2, 0xb0, 0x75, 0xe6,
+    0x3e, 0xac, 0xea, 0x69, 0xe6, 0x80, 0xba, 0x85, 0x10, 0xda, 0x64, 0xb7,
+    0xe7, 0x5c, 0xa4, 0xe7, 0x5c, 0xfc, 0x91, 0xa9, 0xc1, 0x1b, 0xfe, 0x7d,
+    0xc7, 0x37, 0xf4, 0x28, 0x75, 0xfe, 0x9f, 0x7d, 0x40, 0x7c, 0x87, 0x5f,
+    0xa3, 0x36, 0x46, 0x8e, 0xb4, 0x39, 0xed, 0xb2, 0x69, 0x4e, 0x8b, 0xb1,
+    0x84, 0xa5, 0xf3, 0xca, 0x41, 0x3a, 0xfe, 0x7e, 0x47, 0x9f, 0xa7, 0x5e,
+    0x65, 0x96, 0x4a, 0xbf, 0xe8, 0x96, 0xfe, 0xe4, 0x66, 0xe5, 0x30, 0x5f,
+    0xdf, 0xf0, 0x1f, 0x7c, 0xf2, 0x6e, 0xc9, 0xd7, 0x46, 0x8e, 0xa0, 0xa6,
+    0x07, 0xd2, 0x11, 0x4a, 0xd2, 0x4e, 0xc3, 0xab, 0xf9, 0x1f, 0x5f, 0xe8,
+    0x07, 0x5f, 0xff, 0xdd, 0x4f, 0x77, 0x34, 0x38, 0xb0, 0x6b, 0xaf, 0x23,
+    0xaf, 0xf4, 0x4b, 0xcf, 0xd7, 0x09, 0xd5, 0x88, 0x8a, 0xe2, 0xcd, 0xa4,
+    0x75, 0xa4, 0x75, 0xa4, 0x75, 0x41, 0xb0, 0x50, 0x41, 0x04, 0x2f, 0xff,
+    0xde, 0xd2, 0x37, 0x07, 0x90, 0x38, 0x1c, 0x50, 0xeb, 0x6e, 0x75, 0xda,
+    0x01, 0xd5, 0x87, 0xf3, 0xa5, 0x2f, 0x08, 0xdc, 0x90, 0x75, 0xfc, 0x30,
+    0xb1, 0x8c, 0x3a, 0xe9, 0x41, 0xd4, 0x13, 0xd2, 0x98, 0x50, 0x05, 0x37,
+    0xff, 0xff, 0xdd, 0x8f, 0x69, 0x35, 0xa8, 0xf7, 0x52, 0x39, 0xfa, 0xde,
+    0x52, 0xf2, 0x87, 0x5c, 0x9b, 0x9d, 0x74, 0x2c, 0xeb, 0xff, 0xfa, 0x50,
+    0x20, 0x94, 0xa3, 0xdd, 0xc5, 0xfd, 0x8f, 0xce, 0xb9, 0xac, 0x42, 0xf0,
+    0x54, 0xe9, 0x61, 0x87, 0x36, 0x46, 0x52, 0xd4, 0xce, 0x42, 0xdd, 0xd4,
+    0x86, 0x14, 0xda, 0x84, 0x07, 0x8c, 0x36, 0x3f, 0x6d, 0x8b, 0x7d, 0x15,
+    0xbf, 0xfc, 0xc2, 0xde, 0x4c, 0x67, 0x1a, 0xee, 0xd3, 0x45, 0x19, 0x7e,
+    0xd9, 0x1c, 0x8f, 0xce, 0xbf, 0x0b, 0xff, 0x1f, 0x4e, 0xbf, 0xfb, 0x76,
+    0xa7, 0x3b, 0x98, 0x32, 0xd1, 0xd6, 0x62, 0x11, 0x29, 0xd2, 0x9f, 0x14,
+    0x54, 0x99, 0x3f, 0x3c, 0x87, 0x82, 0xce, 0x5e, 0x7b, 0x3f, 0x50, 0xe0,
+    0xf4, 0x3a, 0xef, 0xfe, 0x61, 0xe4, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x47,
+    0x37, 0xff, 0x98, 0x5b, 0xc9, 0x8c, 0xe3, 0x5d, 0xda, 0x68, 0x9c, 0xaf,
+    0xf3, 0x19, 0xc6, 0xbb, 0xb4, 0xd1, 0x66, 0x5f, 0xf4, 0xb4, 0xeb, 0x63,
+    0xbe, 0xfc, 0xeb, 0xfe, 0x55, 0xc1, 0xc5, 0xc6, 0xf0, 0xb3, 0xaf, 0xfb,
+    0xfe, 0x47, 0xba, 0xfb, 0xc8, 0xeb, 0xfd, 0x9a, 0xe7, 0x33, 0x7d, 0x1d,
+    0x7f, 0x71, 0xbd, 0x74, 0x54, 0x9d, 0x76, 0xeb, 0x3a, 0xcc, 0x2b, 0x08,
+    0xf2, 0x83, 0xe9, 0x1d, 0x00, 0xcf, 0x6c, 0xc2, 0xff, 0x31, 0x9c, 0x6b,
+    0xbb, 0x4d, 0x16, 0xed, 0xfc, 0x2e, 0xc7, 0x27, 0xe9, 0xd7, 0x93, 0x7f,
+    0xce, 0xbf, 0x71, 0xae, 0xed, 0x34, 0x52, 0x17, 0xfe, 0xce, 0xa6, 0xce,
+    0xe6, 0x0b, 0x4e, 0xbc, 0xf2, 0x63, 0x0f, 0xc3, 0x46, 0x76, 0x61, 0xa8,
+    0xee, 0xe1, 0x72, 0xe1, 0x1b, 0x7f, 0xf3, 0x0f, 0x26, 0x33, 0x8d, 0x77,
+    0x69, 0xa2, 0x52, 0xa9, 0xd7, 0x09, 0xa6, 0x51, 0x5a, 0xbb, 0x9f, 0xff,
+    0x19, 0x68, 0xac, 0x7a, 0x32, 0xdd, 0xa3, 0xcb, 0xfd, 0x24, 0x1f, 0x62,
+    0x04, 0xeb, 0xda, 0x02, 0xce, 0xb3, 0x1b, 0x9e, 0x62, 0x18, 0x5e, 0x17,
+    0x91, 0xd7, 0xfe, 0x79, 0x31, 0x9c, 0x6b, 0xbb, 0x4d, 0x13, 0xb5, 0xd3,
+    0xab, 0x9d, 0x7f, 0xfe, 0x40, 0x81, 0x71, 0xb4, 0xe1, 0x18, 0x1c, 0x69,
+    0xd7, 0xfd, 0x12, 0x8e, 0x4f, 0x1c, 0x9c, 0xeb, 0x31, 0x89, 0x85, 0xac,
+    0x6b, 0xa9, 0x4e, 0x34, 0x2a, 0x97, 0xff, 0xcc, 0x7d, 0xdb, 0x71, 0xff,
+    0x3d, 0x02, 0x9f, 0x9d, 0x7f, 0xf3, 0xaf, 0xb8, 0xd7, 0xec, 0x7d, 0x91,
+    0xd7, 0x90, 0x2e, 0x75, 0xff, 0xc3, 0x9d, 0x79, 0xf3, 0x42, 0xfb, 0x9d,
+    0x76, 0xdb, 0x01, 0x45, 0x07, 0x51, 0x34, 0x35, 0x52, 0x55, 0x6e, 0xb8,
+    0xcd, 0x34, 0x9f, 0xb7, 0x0f, 0x4b, 0xff, 0xf8, 0x2f, 0xe6, 0x33, 0x50,
+    0x3b, 0xff, 0xad, 0x47, 0xe7, 0x5f, 0xb8, 0xd7, 0x76, 0x9a, 0x22, 0xcb,
+    0xff, 0x3c, 0x98, 0xce, 0x35, 0xdd, 0xa6, 0x89, 0x76, 0xff, 0xfe, 0xc0,
+    0xf6, 0x3e, 0xb1, 0xe1, 0x7f, 0xf5, 0xa8, 0xfc, 0xab, 0x31, 0x88, 0xdb,
+    0x59, 0x9e, 0xda, 0x55, 0xff, 0xe6, 0x16, 0xf2, 0x63, 0x38, 0xd7, 0x76,
+    0x9a, 0x26, 0x2b, 0xf7, 0x1a, 0xee, 0xd3, 0x45, 0x53, 0x6c, 0x3a, 0xb0,
+    0xf0, 0x94, 0x33, 0xbf, 0xff, 0xfd, 0xc7, 0xee, 0xf2, 0xcf, 0x31, 0xd7,
+    0xd7, 0x11, 0x9f, 0x75, 0x39, 0x23, 0xa9, 0x84, 0x4e, 0x39, 0x15, 0xff,
+    0xe6, 0x16, 0xf2, 0x63, 0x38, 0xd7, 0x76, 0x9a, 0x27, 0x4b, 0xfc, 0x8f,
+    0xc8, 0x93, 0xec, 0x3a, 0xfd, 0x34, 0x4d, 0x1a, 0x3a, 0xfe, 0x67, 0x13,
+    0x66, 0x09, 0xd4, 0x87, 0xab, 0xa2, 0x8b, 0xc9, 0xd8, 0x39, 0x83, 0x43,
+    0x7f, 0xf0, 0x35, 0xe8, 0xdd, 0x80, 0x4c, 0x8b, 0x3a, 0x96, 0x7e, 0x5d,
+    0x2b, 0xbf, 0xf3, 0xc9, 0x8c, 0xe3, 0x5d, 0xda, 0x68, 0x9d, 0xef, 0xde,
+    0x03, 0xad, 0x0a, 0xbf, 0xf0, 0xc7, 0xb3, 0x59, 0x9b, 0xc8, 0xea, 0x0a,
+    0x7d, 0x19, 0x18, 0xd2, 0xc8, 0x9d, 0x2b, 0xc4, 0xd7, 0xf4, 0x31, 0xf8,
+    0xe0, 0x4e, 0xa6, 0x0f, 0xf0, 0x53, 0xef, 0xff, 0x30, 0xb7, 0x93, 0x19,
+    0xc6, 0xbb, 0xb4, 0xd1, 0x42, 0xdf, 0xff, 0xfe, 0xe8, 0x16, 0xb7, 0x93,
+    0x0d, 0xe8, 0x3d, 0x03, 0x93, 0xa8, 0x08, 0x98, 0xeb, 0xf0, 0x37, 0xf2,
+    0x34, 0xeb, 0xf6, 0x7f, 0x8e, 0x27, 0x5e, 0x8f, 0xd8, 0x9c, 0xf3, 0x44,
+    0xa2, 0x91, 0x1f, 0xa3, 0x0c, 0x8b, 0xff, 0xcc, 0x2d, 0xe4, 0xc6, 0x71,
+    0xae, 0xed, 0x34, 0x52, 0x57, 0xff, 0xfb, 0x34, 0xc7, 0xdc, 0x9b, 0xae,
+    0xbf, 0x76, 0x3c, 0x05, 0x9d, 0x50, 0xbf, 0xb7, 0x3c, 0x67, 0x12, 0x39,
+    0x6c, 0x66, 0xbc, 0x23, 0x5c, 0xab, 0xbf, 0xc8, 0xbd, 0x1a, 0xa0, 0x09,
+    0xb6, 0xd5, 0xef, 0xf3, 0x19, 0xc6, 0xbb, 0xb4, 0xd1, 0x12, 0x5f, 0xfe,
+    0x61, 0x6f, 0x26, 0x33, 0x8d, 0x77, 0x69, 0xa2, 0x5e, 0xbe, 0xe0, 0x3d,
+    0xa3, 0xaf, 0xdc, 0xfd, 0x69, 0xa3, 0xaf, 0x40, 0xee, 0x75, 0xfb, 0xdf,
+    0x56, 0x30, 0x75, 0x93, 0xa7, 0x86, 0x23, 0x77, 0xff, 0xbb, 0xb2, 0x07,
+    0xf5, 0x7c, 0x0e, 0x73, 0x73, 0xae, 0x8f, 0x1d, 0x7f, 0xf8, 0x01, 0x4e,
+    0x7d, 0x9b, 0x68, 0x0e, 0x33, 0x1d, 0x52, 0x46, 0xd2, 0x13, 0x7e, 0x9f,
+    0xa1, 0x5b, 0xff, 0x9e, 0x6d, 0x46, 0xc7, 0xec, 0x6f, 0x31, 0xd7, 0xec,
+    0x9f, 0x34, 0xb3, 0xaf, 0xfe, 0x9b, 0xe7, 0xd1, 0x8d, 0x8f, 0xb2, 0x26,
+    0x3a, 0x8e, 0xbf, 0xa6, 0x93, 0xf9, 0xf6, 0x1d, 0x50, 0x88, 0x5c, 0x4c,
+    0x70, 0xab, 0xb9, 0x07, 0x50, 0x55, 0x6c, 0xa1, 0x14, 0xd1, 0xa2, 0xf0,
+    0xf4, 0x51, 0xf6, 0x42, 0xb3, 0x68, 0xb6, 0xf0, 0x70, 0x4e, 0xb8, 0x3b,
+    0x9d, 0x7f, 0xc8, 0xe2, 0x0f, 0x4d, 0x0a, 0x1d, 0x7f, 0xfc, 0x9c, 0xf9,
+    0xd8, 0x4f, 0x68, 0x0d, 0x04, 0x1d, 0x7c, 0x93, 0xfe, 0xae, 0x75, 0xf3,
+    0x5d, 0xda, 0x68, 0xa5, 0xef, 0x87, 0xd1, 0xc3, 0xaf, 0xfb, 0x38, 0xaf,
+    0x81, 0xce, 0x6e, 0x75, 0x21, 0xed, 0xec, 0x20, 0xa5, 0x13, 0x21, 0x99,
+    0x43, 0x84, 0xdd, 0x84, 0x45, 0xf8, 0x7d, 0x3e, 0x32, 0x75, 0xff, 0xa0,
+    0x63, 0xbf, 0x00, 0x20, 0x69, 0xd7, 0x80, 0xfa, 0x3a, 0xfd, 0x1f, 0xbe,
+    0xfa, 0x3a, 0xf0, 0xa7, 0xe7, 0x5e, 0xcf, 0x68, 0xea, 0x83, 0x6d, 0xa1,
+    0xba, 0x0a, 0x35, 0xe6, 0x3e, 0xfc, 0x6f, 0xcb, 0xd7, 0xe5, 0x77, 0x10,
+    0xed, 0x1d, 0x7f, 0xdf, 0xeb, 0x91, 0xbc, 0x91, 0x67, 0x5e, 0xf3, 0xec,
+    0x3a, 0xff, 0x9e, 0x7f, 0x93, 0x82, 0x68, 0x57, 0x3a, 0xa1, 0x12, 0xee,
+    0x74, 0x01, 0xdb, 0xfe, 0x4d, 0x4c, 0x83, 0xe8, 0xfc, 0xea, 0x91, 0xf3,
+    0x2c, 0xba, 0xe7, 0x13, 0xaf, 0xfa, 0x3f, 0xf9, 0xd8, 0x5b, 0x89, 0xd6,
+    0xe6, 0xe7, 0x9b, 0xb0, 0x52, 0xa1, 0x3c, 0x3c, 0x8c, 0xa5, 0x1b, 0xef,
+    0x72, 0x16, 0x75, 0xfd, 0x03, 0x37, 0x91, 0x43, 0xaf, 0xfa, 0x59, 0xc9,
+    0xb0, 0x61, 0x67, 0x5f, 0xbf, 0x86, 0xe2, 0xce, 0xa4, 0x3d, 0xee, 0x1b,
+    0xdd, 0x2c, 0x3a, 0xf4, 0x7f, 0xa3, 0xaa, 0x0f, 0x48, 0x24, 0x2c, 0x8a,
+    0xdf, 0xba, 0x05, 0x30, 0x4e, 0xbf, 0xe8, 0xee, 0x9f, 0xd1, 0xcd, 0xa3,
+    0xaf, 0xfc, 0xb7, 0x0f, 0xd9, 0xa5, 0x03, 0xb9, 0xd4, 0x13, 0xfb, 0x43,
+    0xab, 0xee, 0x7f, 0xf7, 0x61, 0xd7, 0x91, 0x9f, 0x1d, 0x5d, 0x3c, 0x3d,
+    0x13, 0xd0, 0x53, 0x28, 0xec, 0x28, 0xbc, 0xc9, 0x7f, 0xdf, 0xa7, 0x73,
+    0x8f, 0x36, 0x8e, 0xbf, 0xff, 0x44, 0x86, 0x27, 0xfb, 0x36, 0xbb, 0x9b,
+    0x5c, 0xfc, 0xeb, 0xfb, 0xe2, 0xf3, 0xcf, 0xe3, 0xac, 0xd3, 0xae, 0xdf,
+    0x58, 0x6f, 0x9c, 0xba, 0xb7, 0x47, 0xfa, 0xce, 0x5e, 0x13, 0x57, 0xfb,
+    0x19, 0x92, 0x68, 0x0b, 0x3a, 0xed, 0x9a, 0x3a, 0xfd, 0x93, 0xe7, 0x74,
+    0x75, 0x41, 0xbf, 0x11, 0x8b, 0xd9, 0xcd, 0x1d, 0x4d, 0x37, 0x5b, 0x07,
+    0xef, 0xfb, 0xf8, 0xff, 0xee, 0xc8, 0x1d, 0xa3, 0xaa, 0x13, 0x0f, 0xc8,
+    0x56, 0x21, 0x1d, 0xff, 0xff, 0xdd, 0x8e, 0x6e, 0xd4, 0xdf, 0xe2, 0x8f,
+    0xf3, 0x5d, 0x76, 0xc0, 0x84, 0xeb, 0xef, 0x0a, 0x2c, 0xeb, 0xfc, 0x30,
+    0xe3, 0xec, 0x13, 0xaf, 0xf7, 0x5e, 0x64, 0xe4, 0x4e, 0x75, 0xd8, 0xb3,
+    0xa8, 0x29, 0x86, 0xe3, 0xba, 0xc8, 0x1c, 0xbb, 0x61, 0x9d, 0xfb, 0x69,
+    0x17, 0x1a, 0x3a, 0xfc, 0xfb, 0x33, 0x9a, 0x3a, 0x82, 0x7a, 0x2b, 0x29,
+    0xbf, 0x75, 0xc5, 0x16, 0x75, 0xf2, 0x93, 0x6a, 0x0e, 0xbf, 0xcf, 0xfe,
+    0xa3, 0xb1, 0xa3, 0xaa, 0x11, 0x39, 0x84, 0x48, 0x4a, 0x24, 0x77, 0x7e,
+    0xd3, 0xad, 0xa3, 0xae, 0x45, 0x34, 0x69, 0xc0, 0x2f, 0x7b, 0xf7, 0x69,
+    0xd7, 0xff, 0xe4, 0x0e, 0x6c, 0x7e, 0x4d, 0xf6, 0x4f, 0xe7, 0x59, 0xd5,
+    0x07, 0xe9, 0xc1, 0xcb, 0x31, 0x0c, 0xdd, 0xb9, 0xdd, 0x64, 0x34, 0x11,
+    0x7c, 0x8d, 0x67, 0x74, 0x54, 0x87, 0xfc, 0xd2, 0x80, 0xb8, 0x68, 0xb1,
+    0xbe, 0xc3, 0x75, 0xe3, 0x57, 0xfe, 0x33, 0x51, 0x8d, 0x13, 0x51, 0xa0,
+    0x7a, 0x33, 0x8d, 0xb6, 0x0f, 0xb0, 0xa1, 0xbf, 0xcc, 0x67, 0x1a, 0xee,
+    0xd3, 0x45, 0x39, 0x7f, 0xe4, 0xe3, 0xeb, 0xb9, 0x82, 0xd3, 0xaf, 0xcb,
+    0xe7, 0x33, 0x47, 0x5f, 0xff, 0xba, 0x0f, 0x72, 0x3d, 0xac, 0x6e, 0xa3,
+    0x8d, 0x3a, 0xff, 0x22, 0xc3, 0x1a, 0x00, 0x9d, 0x7f, 0x67, 0xb7, 0x94,
+    0x32, 0x75, 0xff, 0xca, 0x26, 0xfa, 0x1c, 0x0f, 0x5d, 0x93, 0xaf, 0xfd,
+    0x9d, 0x8e, 0x63, 0x0c, 0xb2, 0xc9, 0x57, 0x23, 0x27, 0x5d, 0x3b, 0x01,
+    0x4e, 0xcb, 0x0e, 0xda, 0x4f, 0xd5, 0x51, 0x31, 0xf1, 0x76, 0xda, 0x2e,
+    0xd2, 0x0d, 0xfb, 0x8d, 0x77, 0x69, 0xa2, 0xbc, 0xbf, 0xff, 0xb0, 0x3d,
+    0x8f, 0xac, 0x78, 0x5f, 0xfd, 0x6a, 0x3f, 0x2a, 0xcc, 0x62, 0x24, 0x76,
+    0xcc, 0xef, 0xfe, 0x61, 0xe4, 0xc6, 0x71, 0xae, 0xed, 0x34, 0x48, 0xf7,
+    0x9b, 0x8b, 0x3a, 0xf2, 0x7f, 0x07, 0x5e, 0x6e, 0x2c, 0xa6, 0x0b, 0xbb,
+    0xf7, 0x1a, 0xee, 0xd3, 0x44, 0x91, 0x7f, 0xff, 0x42, 0x71, 0x36, 0xa0,
+    0x67, 0x8f, 0x27, 0x5e, 0x73, 0xae, 0x93, 0x10, 0x8b, 0x9c, 0x2b, 0xe9,
+    0x9d, 0xfb, 0x3a, 0xc6, 0x2c, 0xeb, 0x31, 0x09, 0xa8, 0xbc, 0x3b, 0xfc,
+    0x77, 0x7f, 0xf3, 0x0f, 0x26, 0x33, 0x8d, 0x77, 0x69, 0xa2, 0x4a, 0xbf,
+    0x71, 0xae, 0xed, 0x34, 0x5e, 0x37, 0xfd, 0x26, 0x33, 0x8d, 0x77, 0x69,
+    0xa2, 0x4d, 0xb3, 0x18, 0x7f, 0x0e, 0x67, 0x73, 0x3d, 0x3a, 0xfc, 0x9f,
+    0xeb, 0x04, 0xeb, 0xff, 0xe0, 0x3e, 0xf9, 0x8a, 0x28, 0xf2, 0xcd, 0xfc,
+    0x75, 0x48, 0xfd, 0xf4, 0x4d, 0x7b, 0xe8, 0xce, 0x75, 0xdc, 0xf1, 0xd7,
+    0xa6, 0x19, 0xce, 0xb0, 0x9d, 0x77, 0xdf, 0xa7, 0x57, 0xe6, 0xa7, 0xe8,
+    0x7d, 0xdb, 0x6c, 0x42, 0x69, 0xd9, 0x08, 0xee, 0x91, 0x38, 0xf6, 0x85,
+    0xbe, 0xa3, 0x54, 0x37, 0x47, 0xf3, 0x9f, 0xca, 0xb1, 0x0b, 0x0c, 0x67,
+    0x89, 0x1f, 0x8c, 0xd1, 0x8a, 0xac, 0xb3, 0xb1, 0xd1, 0x78, 0xec, 0x10,
+    0xc9, 0xfb, 0x1b, 0xad, 0x44, 0xbf, 0xc3, 0xb9, 0xe5, 0x23, 0x4a, 0x75,
+    0xdc, 0x33, 0xa9, 0x59, 0x88, 0xe4, 0x25, 0x27, 0x1b, 0x9b, 0x7a, 0x9b,
+    0xbb, 0xd6, 0x5c, 0x69, 0x49, 0x7d, 0x57, 0x94, 0x47, 0x35, 0xb0, 0xc7,
+    0xe5, 0xa1, 0x32, 0x5e, 0x6d, 0x84, 0x5d, 0xa5, 0x46, 0x3d, 0xb2, 0xb7,
+    0xfe, 0x7c, 0xd5, 0x53, 0x1f, 0x18, 0xd6, 0x56, 0xda, 0xad, 0xc4, 0x7d,
+    0x7a, 0x87, 0x00, 0xb5, 0xfd, 0x7b, 0x29, 0x59, 0x0c, 0xce, 0x4b, 0xed,
+    0xcb, 0x87, 0xfb, 0x48, 0x28, 0xda, 0xae, 0xba, 0xa8,
 };
 
-static const unsigned kPreloadedHSTSBits = 265744;
+static const unsigned kPreloadedHSTSBits = 265797;
 
-static const unsigned kHSTSRootPosition = 265131;
+static const unsigned kHSTSRootPosition = 265184;
 
 #endif // NET_HTTP_TRANSPORT_SECURITY_STATE_STATIC_H_
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json
index d7d949c..62f251c 100644
--- a/net/http/transport_security_state_static.json
+++ b/net/http/transport_security_state_static.json
@@ -248,6 +248,7 @@
     { "name": "gvt3.com", "include_subdomains": true, "mode": "force-https", "pins": "google" },
     { "name": "withyoutube.com", "include_subdomains": true, "mode": "force-https", "pins": "google" },
     { "name": "withgoogle.com", "include_subdomains": true, "mode": "force-https", "pins": "google" },
+    { "name": "g4w.co", "include_subdomains": true, "mode": "force-https", "pins": "google" },
 
     { "name": "webfilings.appspot.com", "include_subdomains": true, "mode": "force-https", "pins": "google" },
     { "name": "webfilings-mirror-hrd.appspot.com", "include_subdomains": true, "mode": "force-https", "pins": "google" },
@@ -4126,6 +4127,7 @@
     "DROPBOXSTATIC_COM",
     "DROPBOXUSERCONTENT_COM",
     "WITHYOUTUBE_COM",
-    "WITHGOOGLE_COM"
+    "WITHGOOGLE_COM",
+    "G4W_CO"
   ]
 }
diff --git a/net/quic/quic_end_to_end_unittest.cc b/net/quic/quic_end_to_end_unittest.cc
index 7b4bb5a..6b6149d 100644
--- a/net/quic/quic_end_to_end_unittest.cc
+++ b/net/quic/quic_end_to_end_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "net/base/elements_upload_data_stream.h"
 #include "net/base/test_completion_callback.h"
+#include "net/base/test_data_directory.h"
 #include "net/base/upload_bytes_element_reader.h"
 #include "net/base/upload_data_stream.h"
 #include "net/cert/mock_cert_verifier.h"
@@ -21,8 +22,10 @@
 #include "net/http/http_transaction_test_util.h"
 #include "net/http/transport_security_state.h"
 #include "net/proxy/proxy_service.h"
+#include "net/quic/test_tools/crypto_test_utils.h"
 #include "net/quic/test_tools/quic_test_utils.h"
 #include "net/ssl/ssl_config_service_defaults.h"
+#include "net/test/cert_test_util.h"
 #include "net/tools/quic/quic_in_memory_cache.h"
 #include "net/tools/quic/quic_server.h"
 #include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h"
@@ -81,7 +84,7 @@
             HttpAuthHandlerFactory::CreateDefault(&host_resolver_)),
         strike_register_no_startup_period_(false) {
     request_.method = "GET";
-    request_.url = GURL("http://www.google.com/");
+    request_.url = GURL("https://test.example.com/");
     request_.load_flags = 0;
 
     params_.enable_quic = true;
@@ -94,13 +97,25 @@
     params_.ssl_config_service = ssl_config_service_.get();
     params_.http_auth_handler_factory = auth_handler_factory_.get();
     params_.http_server_properties = http_server_properties.GetWeakPtr();
+
+    net::CertVerifyResult verify_result;
+    verify_result.verified_cert = ImportCertFromFile(
+        GetTestCertsDirectory(), "quic_test.example.com.crt");
+    cert_verifier_.AddResultForCertAndHost(verify_result.verified_cert.get(),
+                                           "test.example.com", verify_result,
+                                           OK);
+    verify_result.verified_cert = ImportCertFromFile(
+        GetTestCertsDirectory(), "quic_test_ecc.example.com.crt");
+    cert_verifier_.AddResultForCertAndHost(verify_result.verified_cert.get(),
+                                           "test.example.com", verify_result,
+                                           OK);
   }
 
-  // Creates a mock host resolver in which www.google.com
+  // Creates a mock host resolver in which test.example.com
   // resolves to localhost.
   static MockHostResolver* CreateResolverImpl() {
     MockHostResolver* resolver = new MockHostResolver();
-    resolver->rules()->AddRule("www.google.com", "127.0.0.1");
+    resolver->rules()->AddRule("test.example.com", "127.0.0.1");
     return resolver;
   }
 
@@ -108,16 +123,16 @@
     QuicInMemoryCachePeer::ResetForTests();
     StartServer();
 
-    // Use a mapped host resolver so that request for www.google.com (port 80)
+    // Use a mapped host resolver so that request for test.example.com (port 80)
     // reach the server running on localhost.
-    std::string map_rule = "MAP www.google.com www.google.com:" +
-        base::IntToString(server_thread_->GetPort());
+    std::string map_rule = "MAP test.example.com test.example.com:" +
+                           base::IntToString(server_thread_->GetPort());
     EXPECT_TRUE(host_resolver_.AddRuleFromString(map_rule));
 
     // To simplify the test, and avoid the race with the HTTP request, we force
     // QUIC for these requests.
     params_.origin_to_force_quic_on =
-        HostPortPair::FromString("www.google.com:80");
+        HostPortPair::FromString("test.example.com:443");
 
     transaction_factory_.reset(new TestTransactionFactory(params_));
   }
@@ -136,10 +151,14 @@
         kInitialStreamFlowControlWindowForTest);
     server_config_.SetInitialSessionFlowControlWindowToSend(
         kInitialSessionFlowControlWindowForTest);
-    server_thread_.reset(new ServerThread(
-        new QuicServer(server_config_, QuicSupportedVersions()),
-        /*is_secure=*/true, server_address_,
-        strike_register_no_startup_period_));
+
+    QuicServer* server =
+        new QuicServer(server_config_, QuicSupportedVersions());
+    server_thread_.reset(new ServerThread(server, /*is_secure=*/true,
+                                          server_address_,
+                                          strike_register_no_startup_period_));
+    server->SetProofSource(CryptoTestUtils::ProofSourceForTesting());
+
     server_thread_->Initialize();
     server_address_ = IPEndPoint(server_address_.address(),
                                  server_thread_->GetPort());
@@ -165,7 +184,7 @@
                   StringPiece response_detail,
                   StringPiece body) {
     QuicInMemoryCache::GetInstance()->AddSimpleResponse(
-        "www.google.com", path, response_code, response_detail, body);
+        "test.example.com", path, response_code, response_detail, body);
   }
 
   // Populates |request_body_| with |length_| ASCII bytes.
@@ -187,7 +206,7 @@
     upload_data_stream_.reset(
         new ElementsUploadDataStream(element_readers.Pass(), 0));
     request_.method = "POST";
-    request_.url = GURL("http://www.google.com/");
+    request_.url = GURL("https://test.example.com/");
     request_.upload_data_stream = upload_data_stream_.get();
     ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback()));
   }
@@ -197,7 +216,7 @@
                      const std::string& status_line,
                      const std::string& body) {
     ASSERT_TRUE(consumer.is_done());
-    EXPECT_EQ(OK, consumer.error());
+    ASSERT_EQ(OK, consumer.error());
     EXPECT_EQ(status_line,
               consumer.response_info()->headers->GetStatusLine());
     EXPECT_EQ(body, consumer.content());
diff --git a/remoting/host/pairing_registry_delegate_linux.cc b/remoting/host/pairing_registry_delegate_linux.cc
index 7b22721..cf51255 100644
--- a/remoting/host/pairing_registry_delegate_linux.cc
+++ b/remoting/host/pairing_registry_delegate_linux.cc
@@ -49,8 +49,8 @@
     JSONFileValueDeserializer deserializer(pairing_file);
     int error_code;
     std::string error_message;
-    scoped_ptr<base::Value> pairing_json(
-        deserializer.Deserialize(&error_code, &error_message));
+    scoped_ptr<base::Value> pairing_json =
+        deserializer.Deserialize(&error_code, &error_message);
     if (!pairing_json) {
       LOG(WARNING) << "Failed to load '" << pairing_file.value() << "' ("
                    << error_code << ").";
@@ -88,8 +88,8 @@
   JSONFileValueDeserializer deserializer(pairing_file);
   int error_code;
   std::string error_message;
-  scoped_ptr<base::Value> pairing(
-      deserializer.Deserialize(&error_code, &error_message));
+  scoped_ptr<base::Value> pairing =
+      deserializer.Deserialize(&error_code, &error_message);
   if (!pairing) {
     LOG(WARNING) << "Failed to load pairing information: " << error_message
                  << " (" << error_code << ").";
diff --git a/remoting/host/pairing_registry_delegate_win.cc b/remoting/host/pairing_registry_delegate_win.cc
index a714e31..90b04ba 100644
--- a/remoting/host/pairing_registry_delegate_win.cc
+++ b/remoting/host/pairing_registry_delegate_win.cc
@@ -52,8 +52,8 @@
   JSONStringValueDeserializer deserializer(value_json_utf8);
   int error_code;
   std::string error_message;
-  scoped_ptr<base::Value> value(deserializer.Deserialize(&error_code,
-                                                       &error_message));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_message);
   if (!value) {
     LOG(ERROR) << "Failed to parse '" << value_name << "': " << error_message
                << " (" << error_code << ").";
diff --git a/rlz/chromeos/lib/rlz_value_store_chromeos.cc b/rlz/chromeos/lib/rlz_value_store_chromeos.cc
index 80d269e..6714de449 100644
--- a/rlz/chromeos/lib/rlz_value_store_chromeos.cc
+++ b/rlz/chromeos/lib/rlz_value_store_chromeos.cc
@@ -212,8 +212,8 @@
   int error_code = 0;
   std::string error_msg;
   JSONFileValueDeserializer deserializer(store_path_);
-  scoped_ptr<base::Value> value(
-      deserializer.Deserialize(&error_code, &error_msg));
+  scoped_ptr<base::Value> value =
+      deserializer.Deserialize(&error_code, &error_msg);
   switch (error_code) {
     case JSONFileValueDeserializer::JSON_NO_SUCH_FILE:
       read_only_ = false;
diff --git a/third_party/WebKit/LayoutTests/ASANExpectations b/third_party/WebKit/LayoutTests/ASANExpectations
index 9930704..909a712e 100644
--- a/third_party/WebKit/LayoutTests/ASANExpectations
+++ b/third_party/WebKit/LayoutTests/ASANExpectations
@@ -54,14 +54,14 @@
 crbug.com/250520 [ Linux ] fast/speechsynthesis/speech-synthesis-cancel.html [ Timeout ]
 
 # These tests consistently fail on slow bots.
-crbug.com/231357 [ Linux ] compositing/video-page-visibility.html [ ImageOnlyFailure ]
+crbug.com/231357 [ Linux ] compositing/video-page-visibility.html [ Failure ]
 
 # These have been failing since at least chrome r203901, blink r151723 (no memory errors, just text failure):
 crbug.com/231357 [ Linux ] editing/execCommand/switch-list-type-with-orphaned-li.html [ Failure ]
 crbug.com/231357 [ Linux ] perf/mouse-event.html [ Crash ]
 
-crbug.com/333791 [ Linux ] svg/animations/repeatn-event-1b.svg [ Pass ImageOnlyFailure ]
-crbug.com/333791 [ Linux ] svg/animations/repeatn-event-1d.svg [ Pass ImageOnlyFailure ]
+crbug.com/333791 [ Linux ] svg/animations/repeatn-event-1b.svg [ Pass Failure ]
+crbug.com/333791 [ Linux ] svg/animations/repeatn-event-1d.svg [ Pass Failure ]
 crbug.com/192172 [ Linux ] compositing/rtl/rtl-iframe-absolute-overflow.html [ Failure Pass ]
 crbug.com/192172 [ Linux ] compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html [ Failure Pass ]
 crbug.com/192172 [ Linux ] compositing/rtl/rtl-iframe-fixed-overflow.html [ Failure Pass ]
@@ -70,7 +70,7 @@
 crbug.com/290411 [ Linux ] fast/text/sub-pixel/text-scaling-pixel.html [ Failure Pass ]
 crbug.com/333901 [ Linux ] virtual/legacy-animations-engine/animations/timing-model.html [ Failure Pass ]
 crbug.com/339778 [ Linux ] fast/dom/timer-throttling-hidden-page.html [ Failure Pass ]
-crbug.com/353746 [ Linux ] virtual/android/fullscreen/video-specified-size.html [ ImageOnlyFailure Pass ]
+crbug.com/353746 [ Linux ] virtual/android/fullscreen/video-specified-size.html [ Failure Pass ]
 crbug.com/248938 [ Linux ] virtual/threaded/animations/opacity-transform-animation.html [ Timeout Pass ]
 crbug.com/248938 [ Linux ] virtual/threaded/animations/missing-values-first-keyframe.html [ Pass Timeout ]
 
diff --git a/third_party/WebKit/LayoutTests/OilpanExpectations b/third_party/WebKit/LayoutTests/OilpanExpectations
index 0c19b08d..0a8f440e 100644
--- a/third_party/WebKit/LayoutTests/OilpanExpectations
+++ b/third_party/WebKit/LayoutTests/OilpanExpectations
@@ -16,13 +16,13 @@
 crbug.com/356658 fast/dom/gc-12.html [ Failure ]
 crbug.com/356658 fast/dom/gc-dom-tree-lifetime.html [ Failure ]
 
-crbug.com/410145 [ Win ] fast/text/decorations-with-text-combine.html [ ImageOnlyFailure ]
-crbug.com/410145 [ Win ] fast/text/international/text-combine-image-test.html [ ImageOnlyFailure ]
-crbug.com/410145 [ Win ] fast/text/international/vertical-text-glyph-test.html [ ImageOnlyFailure ]
-crbug.com/410145 [ Win ] fast/text/justify-ideograph-vertical.html [ ImageOnlyFailure ]
-crbug.com/410145 [ Win ] fast/text/orientation-sideways.html [ ImageOnlyFailure ]
-crbug.com/410145 [ Win ] fast/css/font-weight-1.html [ ImageOnlyFailure ]
-crbug.com/410145 [ Win ] fast/writing-mode/english-lr-text.html [ ImageOnlyFailure ]
+crbug.com/410145 [ Win ] fast/text/decorations-with-text-combine.html [ Failure ]
+crbug.com/410145 [ Win ] fast/text/international/text-combine-image-test.html [ Failure ]
+crbug.com/410145 [ Win ] fast/text/international/vertical-text-glyph-test.html [ Failure ]
+crbug.com/410145 [ Win ] fast/text/justify-ideograph-vertical.html [ Failure ]
+crbug.com/410145 [ Win ] fast/text/orientation-sideways.html [ Failure ]
+crbug.com/410145 [ Win ] fast/css/font-weight-1.html [ Failure ]
+crbug.com/410145 [ Win ] fast/writing-mode/english-lr-text.html [ Failure ]
 
 crbug.com/377567 [ Debug ] editing/selection/extend-selection-character.html [ Timeout Pass ]
 crbug.com/377567 [ Debug ] editing/selection/programmatic-selection-on-mac-is-directionless.html [ Timeout Pass ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 55f0f7ae..ebe46b10 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -3,9 +3,9 @@
 
 # TODO(wangxianzhu): Triage the failures
 crbug.com/524134 virtual/spv2/paint/invalidation/invalidate-after-composited-scroll.html [ Failure ]
-crbug.com/524134 crbug.com/539546 virtual/spv2/paint/selection/text-selection-drag.html [ ImageOnlyFailure Pass Failure ]
-crbug.com/524134 virtual/spv2/paint/paintlayer/non-self-painting-layer-overrides-visibility.html [ Crash ImageOnlyFailure Timeout ]
-crbug.com/524134 virtual/spv2/paint/invalidation/spv2/focus-ring-on-continuation-move.html [ ImageOnlyFailure ]
+crbug.com/524134 crbug.com/539546 virtual/spv2/paint/selection/text-selection-drag.html [ Pass Failure ]
+crbug.com/524134 virtual/spv2/paint/paintlayer/non-self-painting-layer-overrides-visibility.html [ Crash Failure Timeout ]
+crbug.com/524134 virtual/spv2/paint/invalidation/spv2/focus-ring-on-continuation-move.html [ Failure ]
 
 crbug.com/524236 virtual/spv2/paint/invalidation/spv2/clipping-should-not-repaint-composited-descendants-as-text.html [ Failure ]
 crbug.com/524236 virtual/spv2/paint/invalidation/spv2/scroll-fixed-layer-no-content-as-text.html [ Failure ]
@@ -24,53 +24,41 @@
 crbug.com/524236 virtual/spv2/paint/invalidation/spv2/updating-scrolling-content-as-text.html [ Failure ]
 crbug.com/524236 virtual/spv2/paint/invalidation/spv2/scrolling-without-painting-as-text.html [ Failure ]
 
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-cell-append.html [ ImageOnlyFailure ]
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-cell-remove.html [ ImageOnlyFailure ]
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-cell-border-width.html [ ImageOnlyFailure ]
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-col-border-width.html [ ImageOnlyFailure ]
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-colgroup-border-width.html [ ImageOnlyFailure ]
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-row-border-width.html [ ImageOnlyFailure ]
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-table-border-width.html [ ImageOnlyFailure ]
-crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-tbody-border-width.html [ ImageOnlyFailure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-cell-append.html [ Failure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-cell-remove.html [ Failure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-cell-border-width.html [ Failure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-col-border-width.html [ Failure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-colgroup-border-width.html [ Failure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-row-border-width.html [ Failure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-table-border-width.html [ Failure ]
+crbug.com/527242 virtual/spv2/paint/invalidation/spv2/cached-change-tbody-border-width.html [ Failure ]
 
-crbug.com/536138 virtual/spv2/paint/invalidation/repaint-subsequence-on-ancestor-clip-change.html [ ImageOnlyFailure ]
+crbug.com/536138 virtual/spv2/paint/invalidation/repaint-subsequence-on-ancestor-clip-change.html [ Failure ]
 
-crbug.com/537172 [ SnowLeopard XP Win10 ] virtual/spv2/paint/invalidation/spv2/background-image-paint-invalidation.html [ ImageOnlyFailure ]
+crbug.com/537172 [ SnowLeopard XP Win10 ] virtual/spv2/paint/invalidation/spv2/background-image-paint-invalidation.html [ Failure ]
 
 crbug.com/504613 crbug.com/524248 paint/images/image-backgrounds-not-antialiased.html [ Skip ]
 crbug.com/504613 crbug.com/524248 virtual/spv2/paint/images/image-backgrounds-not-antialiased.html [ Skip ]
-crbug.com/502531 fast/borders/border-antialiasing.html [ ImageOnlyFailure ]
+crbug.com/502531 fast/borders/border-antialiasing.html [ Failure ]
 
 crbug.com/538697 [ Win7 Debug ] virtual/threaded/printing/webgl-oversized-printing.html [ Crash ]
 crbug.com/538697 [ Win7 Debug ] printing/webgl-oversized-printing.html [ Crash ]
 
-crbug.com/404597 fast/text/basic/015.html [ NeedsRebaseline ]
-crbug.com/404597 fast/text/font-variant-ligatures.html [ NeedsRebaseline ]
-crbug.com/404597 fast/text/font-weight-600.html [ NeedsRebaseline ]
-crbug.com/404597 [ Win Linux Android Lion Mavericks MountainLion Retina SnowLeopard ] fast/text/justify-ideograph-simple.html [ NeedsRebaseline ]
-crbug.com/404597 fast/text/whitespace/002.html [ NeedsRebaseline ]
-crbug.com/404597 fast/text-autosizing/tables/css-table-lots-of-text-many-cells.html [ NeedsRebaseline ]
-crbug.com/404597 fast/text-autosizing/tables/fixed-table-lots-of-text-many-cells.html [ NeedsRebaseline ]
-crbug.com/404597 fast/text-autosizing/tables/lots-of-text-many-cells.html [ NeedsRebaseline ]
-crbug.com/404597 fast/text-autosizing/tables/narrow-percentage-width.html [ NeedsRebaseline ]
 crbug.com/404597 fast/text-autosizing/tables/narrow-specified-width.html [ NeedsRebaseline ]
+crbug.com/404597 fast/text-autosizing/tables/narrow-percentage-width.html [ NeedsRebaseline ]
+crbug.com/404597 fast/text-autosizing/tables/lots-of-text-many-cells.html [ NeedsRebaseline ]
+crbug.com/404597 fast/text-autosizing/tables/fixed-table-lots-of-text-many-cells.html [ NeedsRebaseline ]
+crbug.com/404597 fast/text-autosizing/tables/css-table-lots-of-text-many-cells.html [ NeedsRebaseline ]
+crbug.com/404597 fast/text/whitespace/002.html [ NeedsRebaseline ]
+crbug.com/404597 fast/text/font-weight-600.html [ NeedsRebaseline ]
+crbug.com/404597 fast/text/font-variant-ligatures.html [ NeedsRebaseline ]
 
 # Ref-tests that fail due to character based shaping/fallback.
-crbug.com/404597 fast/text/international/inline-plaintext-is-isolated.html [ ImageOnlyFailure ]
-crbug.com/404597 fast/text/international/bdi-dir-default-to-auto.html [ ImageOnlyFailure ]
+crbug.com/404597 fast/text/international/inline-plaintext-is-isolated.html [ Failure ]
+crbug.com/404597 fast/text/international/bdi-dir-default-to-auto.html [ Failure ]
 
 crbug.com/542643 fast/text/zero-font-size-2.html [ Pass Crash ]
 
-crbug.com/541598 fast/repaint/selected-replaced.html [ NeedsRebaseline ]
-crbug.com/541598 svg/custom/mouse-move-on-svg-container.xhtml [ NeedsRebaseline ]
-crbug.com/541598 svg/custom/mouse-move-on-svg-root.xhtml [ NeedsRebaseline ]
-crbug.com/541598 svg/custom/pattern-userSpaceOnUse-userToBaseTransform.xhtml [ NeedsRebaseline ]
-crbug.com/541598 svg/hixie/mixed/010.xml [ NeedsRebaseline ]
-crbug.com/541598 svg/repaint/add-background-property-on-root.html [ NeedsRebaseline ]
-crbug.com/541598 svg/repaint/change-background-color.html [ NeedsRebaseline ]
-crbug.com/541598 svg/repaint/remove-background-property-on-root.html [ NeedsRebaseline ]
-crbug.com/541598 svg/text/small-fonts-in-html5.html [ NeedsRebaseline ]
-
 crbug.com/539226 [ Win7 ] http/tests/xmlhttprequest/open-in-body-onload-sync-to-invalid-cross-origin-response-handling.html [ Timeout ]
 crbug.com/539226 [ Win7 ] http/tests/xmlhttprequest/open-in-body-onload-sync-to-invalid-redirect-response-handling.html [ Timeout ]
 crbug.com/539226 [ Win7 ] http/tests/xmlhttprequest/open-in-body-onload-sync-to-invalid-preflight-handling.html [ Timeout ]
@@ -79,36 +67,35 @@
 crbug.com/539247 [ Win10 ] http/tests/xmlhttprequest/open-in-body-onload-sync-to-invalid-redirect-response-handling.html [ Timeout Failure ]
 crbug.com/539247 [ Win10 ] http/tests/xmlhttprequest/open-in-body-onload-sync-to-invalid-preflight-handling.html [ Timeout Failure ]
 
-crbug.com/465705 fast/text/international/menulist-width-rtl.html [ NeedsRebaseline ]
-crbug.com/417782 [ Linux Win ] virtual/rootlayerscrolls/fast/scrolling/fractional-scroll-offset-fixed-position-non-composited.html [ ImageOnlyFailure ]
-crbug.com/492664 [ Linux XP ] imported/csswg-test/css-writing-modes-3/box-offsets-rel-pos-vlr-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Linux XP ] imported/csswg-test/css-writing-modes-3/box-offsets-rel-pos-vrl-004.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/bidi-embed-002.html [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/bidi-isolate-002.html [ ImageOnlyFailure ]
-crbug.com/492664 [ Win ] imported/csswg-test/css-writing-modes-3/bidi-override-005.html [ ImageOnlyFailure ]
-crbug.com/492664 [ Win ] imported/csswg-test/css-writing-modes-3/bidi-plaintext-001.html [ ImageOnlyFailure ]
+crbug.com/417782 [ Linux Win ] virtual/rootlayerscrolls/fast/scrolling/fractional-scroll-offset-fixed-position-non-composited.html [ Failure ]
+crbug.com/492664 [ Linux XP ] imported/csswg-test/css-writing-modes-3/box-offsets-rel-pos-vlr-005.xht [ Failure ]
+crbug.com/492664 [ Linux XP ] imported/csswg-test/css-writing-modes-3/box-offsets-rel-pos-vrl-004.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/bidi-embed-002.html [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/bidi-isolate-002.html [ Failure ]
+crbug.com/492664 [ Win ] imported/csswg-test/css-writing-modes-3/bidi-override-005.html [ Failure ]
+crbug.com/492664 [ Win ] imported/csswg-test/css-writing-modes-3/bidi-plaintext-001.html [ Failure ]
 crbug.com/492664 imported/csswg-test/css-transitions-2/transitioncancel-001.html [ Failure ]
 crbug.com/418091 [ SnowLeopard ] fast/text/aat-morx.html [ Failure ]
-crbug.com/463358 [ Mac Linux Debug ] svg/hixie/perf/005.xml [ ImageOnlyFailure ]
-crbug.com/463358 [ Mac Linux Debug ] svg/hixie/perf/006.xml [ ImageOnlyFailure ]
-crbug.com/463358 [ Linux Lion Mavericks MountainLion Retina SnowLeopard Debug ] svg/transforms/text-with-pattern-inside-transformed-html.xhtml [ ImageOnlyFailure ]
-crbug.com/463358 [ Mac Linux Debug ] fast/backgrounds/transformed-body-html-background.html [ ImageOnlyFailure ]
-crbug.com/463358 [ Mac Linux Debug ] css3/masking/clip-path-polygon-nonzero.html [ ImageOnlyFailure ]
-crbug.com/463358 [ Mac Linux Debug ] fast/transforms/transformed-caret.html [ ImageOnlyFailure ]
-crbug.com/463358 [ Mac Linux Debug ] fast/backgrounds/transformed-body-background.html [ ImageOnlyFailure ]
-crbug.com/463358 [ Mac Linux Debug ] svg/W3C-SVG-1.1/paths-data-02-t.svg [ ImageOnlyFailure ]
-crbug.com/463358 [ Mac Linux Debug ] css3/masking/clip-path-polygon.html [ ImageOnlyFailure ]
+crbug.com/463358 [ Mac Linux Debug ] svg/hixie/perf/005.xml [ Failure ]
+crbug.com/463358 [ Mac Linux Debug ] svg/hixie/perf/006.xml [ Failure ]
+crbug.com/463358 [ Linux Lion Mavericks MountainLion Retina SnowLeopard Debug ] svg/transforms/text-with-pattern-inside-transformed-html.xhtml [ Failure ]
+crbug.com/463358 [ Mac Linux Debug ] fast/backgrounds/transformed-body-html-background.html [ Failure ]
+crbug.com/463358 [ Mac Linux Debug ] css3/masking/clip-path-polygon-nonzero.html [ Failure ]
+crbug.com/463358 [ Mac Linux Debug ] fast/transforms/transformed-caret.html [ Failure ]
+crbug.com/463358 [ Mac Linux Debug ] fast/backgrounds/transformed-body-background.html [ Failure ]
+crbug.com/463358 [ Mac Linux Debug ] svg/W3C-SVG-1.1/paths-data-02-t.svg [ Failure ]
+crbug.com/463358 [ Mac Linux Debug ] css3/masking/clip-path-polygon.html [ Failure ]
 
 crbug.com/267206 [ Mac ] virtual/rootlayerscrolls/fast/scrolling/scrollbar-tickmarks-hittest.html [ Timeout ]
 
 crbug.com/280342 [ Linux Win ] http/tests/media/progress-events-generated-correctly.html [ Failure ]
 
 crbug.com/520739 [ Mac ] http/tests/websocket/close-code-and-reason.html [ Failure Pass Timeout ]
-crbug.com/520737 [ Mac ] imported/csswg-test/css-writing-modes-3/writing-mode-vertical-rl-001.xht [ ImageOnlyFailure Pass Timeout ]
+crbug.com/520737 [ Mac ] imported/csswg-test/css-writing-modes-3/writing-mode-vertical-rl-001.xht [ Failure Pass Timeout ]
 crbug.com/520736 [ Win7 ] media/W3C/video/networkState/networkState_during_progress.html [ Failure Pass ]
 
 crbug.com/522641 inspector/elements/styles-4/styles-update-links.html [ Pass Timeout ]
-crbug.com/522645 [ Linux ] virtual/android/fullscreen/video-fixed-background.html [ ImageOnlyFailure Pass ]
+crbug.com/522645 [ Linux ] virtual/android/fullscreen/video-fixed-background.html [ Failure Pass ]
 crbug.com/522646 http/tests/media/encrypted-media/encrypted-media-encrypted-event-different-origin.html [ Pass Slow ]
 crbug.com/522647 http/tests/notifications/close-dispatch-asynchronous.html [ Failure Pass ]
 crbug.com/522648 fast/events/touch/compositor-touch-hit-rects-iframes.html [ Crash Failure Pass ]
@@ -167,8 +154,6 @@
 crbug.com/410974 fast/scroll-behavior/scroll-customization/scrollstate-distribute-to-scroll-chain-descendant.html [ Pass Failure ]
 crbug.com/410974 fast/scroll-behavior/scroll-customization/touch-scroll-customization.html [ Pass Failure ]
 
-crbug.com/537277 fast/inline/vertical-align-with-fallback-fonts.html [ NeedsRebaseline ]
-
 crbug.com/410974 virtual/threaded/fast/scroll-behavior/scroll-customization/scrollstate-basic.html [ Pass Failure ]
 crbug.com/410974 virtual/threaded/fast/scroll-behavior/scroll-customization/scrollstate-consume-deltas.html [ Pass Failure ]
 crbug.com/410974 virtual/threaded/fast/scroll-behavior/scroll-customization/scrollstate-consume-deltas-throw.html [ Pass Failure ]
@@ -187,14 +172,14 @@
 crbug.com/518883 crbug.com/390452 http/tests/security/isolatedWorld/media-query-wrapper-leaks.html [ Failure Pass Timeout ]
 crbug.com/518987 http/tests/xmlhttprequest/navigation-abort-detaches-frame.html [ Pass Timeout ]
 crbug.com/518988 [ Win7 ] http/tests/xmlhttprequest/xmlhttprequest-50ms-download-dispatch.html [ Failure Pass ]
-crbug.com/518989 [ Mac ] imported/csswg-test/css-writing-modes-3/writing-mode-vertical-rl-002.xht [ ImageOnlyFailure Pass Timeout ]
+crbug.com/518989 [ Mac ] imported/csswg-test/css-writing-modes-3/writing-mode-vertical-rl-002.xht [ Failure Pass Timeout ]
 crbug.com/518992 [ Win ] imported/web-platform-tests/user-timing/test_user_timing_measure.html [ Skip ]
 crbug.com/518993 [ Win ] imported/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html [ Skip ]
 crbug.com/518995 media/track/media-element-move-to-new-document-assert.html [ Failure Pass ]
-crbug.com/518998 media/video-poster-after-loadedmetadata.html [ ImageOnlyFailure Pass ]
+crbug.com/518998 media/video-poster-after-loadedmetadata.html [ Failure Pass ]
 
-crbug.com/526594 [ Win10 ] plugins/webview-plugin-lifecycle.html [ ImageOnlyFailure ]
-crbug.com/518999 [ Win7 Debug ] plugins/webview-plugin-lifecycle.html [ ImageOnlyFailure Pass ]
+crbug.com/526594 [ Win10 ] plugins/webview-plugin-lifecycle.html [ Failure ]
+crbug.com/518999 [ Win7 Debug ] plugins/webview-plugin-lifecycle.html [ Failure Pass ]
 
 crbug.com/519001 storage/indexeddb/pending-version-change-stuck-works-with-terminate.html [ Pass Timeout ]
 crbug.com/519002 storage/indexeddb/pending-version-change-stuck.html [ Pass Timeout ]
@@ -215,20 +200,20 @@
 crbug.com/248938 virtual/threaded/transitions/cancel-and-start-new.html [ Pass Failure ]
 crbug.com/248938 virtual/threaded/animations/change-keyframes-name.html [ Failure Pass Timeout ]
 crbug.com/248938 virtual/threaded/animations/change-one-anim.html [ Failure Pass ]
-crbug.com/326139 crbug.com/390125 media/video-frame-accurate-seek.html [ ImageOnlyFailure Pass ]
+crbug.com/326139 crbug.com/390125 media/video-frame-accurate-seek.html [ Failure Pass ]
 crbug.com/352856 [ Mac ] svg/batik/text/textPosition.svg [ Failure Pass ]
 crbug.com/352856 [ Mac ] svg/batik/text/textPosition2.svg [ Failure Pass ]
 crbug.com/392640 [ Release ] svg/as-object/sizing/svg-in-object-placeholder-height-auto.html [ Timeout Pass ]
 crbug.com/392640 [ Debug ] svg/as-object/sizing/svg-in-object-placeholder-height-auto.html [ Failure Timeout Pass ]
 crbug.com/413604 http/tests/loading/script-priorities.html [ Failure Pass ]
 crbug.com/479181 inspector-protocol/animation/animation-multiple-frames.html [ Failure Pass ]
-crbug.com/495523 svg/wicd/test-rightsizing-b.xhtml [ Failure ImageOnlyFailure Pass ]
+crbug.com/495523 svg/wicd/test-rightsizing-b.xhtml [ Failure Pass ]
 crbug.com/516364 svg/animations/smil-leak-element-instances.svg [ Failure Pass ]
 crbug.com/248938 virtual/threaded/animations/3d/transform-origin-vs-functions.html [ Pass Failure ]
 crbug.com/248938 virtual/threaded/transitions/cancel-transition.html [ Pass Failure ]
 crbug.com/248938 virtual/threaded/transitions/extra-transition.html [ Pass Failure ]
 crbug.com/248938 virtual/threaded/transitions/start-transform-transition.html [ Pass Failure ]
-crbug.com/248938 virtual/threaded/animations/animation-direction-normal.html [ Pass ImageOnlyFailure Timeout ]
+crbug.com/248938 virtual/threaded/animations/animation-direction-normal.html [ Pass Failure Timeout ]
 crbug.com/248938 virtual/threaded/animations/animation-iteration-event-destroy-renderer.html [ Pass Timeout ]
 crbug.com/248938 virtual/threaded/animations/transition-and-animation-3.html [ Pass Timeout ]
 crbug.com/501543 fast/images/size-failure.html [ Crash Timeout Pass ]
@@ -259,7 +244,7 @@
 crbug.com/248938 [ Win Debug ] virtual/threaded/transitions/transition-end-event-multiple-04.html [ Pass Failure ]
 crbug.com/352405 virtual/threaded/animations/transition-and-animation-1.html [ Pass Timeout ]
 
-crbug.com/461179 virtual/spv2/paint/invalidation/invalidate-when-receiving-paint-layer.html [ ImageOnlyFailure ]
+crbug.com/461179 virtual/spv2/paint/invalidation/invalidate-when-receiving-paint-layer.html [ Failure ]
 
 crbug.com/542541 [ Debug ] fast/events/click-count.html [ Pass Failure ]
 
@@ -276,9 +261,9 @@
 crbug.com/423739 fast/js/string-replace-2.html [ NeedsManualRebaseline ]
 crbug.com/423739 fast/dom/Window/Location/location-override-valueOf.html [ NeedsManualRebaseline ]
 crbug.com/524859 fast/text/complex-text-opacity.html [ NeedsManualRebaseline ]
-# crbug.com/498021 [ Linux ] fast/text/complex-text-opacity.html [ ImageOnlyFailure ]
+# crbug.com/498021 [ Linux ] fast/text/complex-text-opacity.html [ Failure ]
 # crbug.com/509025 [ Yosemite ] fast/text/complex-text-opacity.html [ Failure ]
-# crbug.com/521730 [ Win10 ] fast/text/complex-text-opacity.html [ Failure Timeout Failure Failure ]
+# crbug.com/521730 [ Win10 ] fast/text/complex-text-opacity.html [ Failure Timeout ]
 crbug.com/524859 transforms/2d/hindi-rotated.html [ NeedsManualRebaseline ]
 
 crbug.com/535408 fast/js/function-bind.html [ NeedsManualRebaseline ]
@@ -360,7 +345,7 @@
 crbug.com/542763 fast/forms/radio/radio-appearance-basic.html [ NeedsRebaseline ]
 crbug.com/542763 fast/forms/select/menulist-appearance-basic.html [ NeedsRebaseline ]
 
-crbug.com/487281 [ SnowLeopard Lion MountainLion Retina Mavericks ] fast/forms/menulist-narrow-width.html [ ImageOnlyFailure ]
+crbug.com/487281 [ SnowLeopard Lion MountainLion Retina Mavericks ] fast/forms/menulist-narrow-width.html [ Failure ]
 
 crbug.com/441840 [ Mac XP ] cssom/ahem-ex-units.html [ Failure ]
 
@@ -375,17 +360,17 @@
 # Text::inDocument() returns false but should not.
 crbug.com/264138 dom/xhtml/level3/core/nodecomparedocumentposition38.xhtml [ Failure ]
 
-crbug.com/503626 virtual/gpu/fast/canvas/canvas-filter-shadow.html [ ImageOnlyFailure ]
+crbug.com/503626 virtual/gpu/fast/canvas/canvas-filter-shadow.html [ Failure ]
 
-crbug.com/240374 compositing/overlap-blending/reflection-opacity-huge.html [ ImageOnlyFailure ]
-crbug.com/240374 compositing/overlap-blending/children-opacity-huge.html [ ImageOnlyFailure ]
-crbug.com/240374 compositing/overlap-blending/children-opacity-no-overlap.html [ ImageOnlyFailure ]
+crbug.com/240374 compositing/overlap-blending/reflection-opacity-huge.html [ Failure ]
+crbug.com/240374 compositing/overlap-blending/children-opacity-huge.html [ Failure ]
+crbug.com/240374 compositing/overlap-blending/children-opacity-no-overlap.html [ Failure ]
 
 crbug.com/411164 [ Win ] http/tests/security/powerfulFeatureRestrictions/serviceworker-on-insecure-origin.html [ Pass Slow ]
 
 # This batch is flaky:
-crbug.com/310679 [ Mac ] virtual/pointerevent/fast/events/scale-and-scroll-iframe-body.html [ ImageOnlyFailure ]
-crbug.com/310679 [ Mac ] virtual/pointerevent/fast/events/scale-and-scroll-iframe-window.html [ ImageOnlyFailure ]
+crbug.com/310679 [ Mac ] virtual/pointerevent/fast/events/scale-and-scroll-iframe-body.html [ Failure ]
+crbug.com/310679 [ Mac ] virtual/pointerevent/fast/events/scale-and-scroll-iframe-window.html [ Failure ]
 
 crbug.com/475984 [ Mac Debug ] css2.1/t100801-c544-valgn-03-d-agi.html [ Failure ]
 
@@ -404,11 +389,11 @@
 # expectation files because they contain local path names.
 # Use crbug.com/490511 for untriaged failures.
 crbug.com/490511 imported/web-platform-tests/html/browsers/history/the-location-interface/location_assign.html [ Timeout ]
-crbug.com/526898 imported/web-platform-tests/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/001-x.xhtml [ ImageOnlyFailure ]
-crbug.com/108417 imported/web-platform-tests/html/rendering/non-replaced-elements/tables/table-border-1.html [ ImageOnlyFailure ]
-crbug.com/525872 imported/web-platform-tests/html/rendering/non-replaced-elements/tables/table-border-2.html [ ImageOnlyFailure ]
+crbug.com/526898 imported/web-platform-tests/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/001-x.xhtml [ Failure ]
+crbug.com/108417 imported/web-platform-tests/html/rendering/non-replaced-elements/tables/table-border-1.html [ Failure ]
+crbug.com/525872 imported/web-platform-tests/html/rendering/non-replaced-elements/tables/table-border-2.html [ Failure ]
 crbug.com/490511 imported/web-platform-tests/html/semantics/document-metadata/styling/LinkStyle.html [ Failure Pass ]
-crbug.com/525896 imported/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-represent-nothing-01.html [ ImageOnlyFailure ]
+crbug.com/525896 imported/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-represent-nothing-01.html [ Failure ]
 crbug.com/508725 imported/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html [ Failure Timeout ]
 crbug.com/490511 imported/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src.html [ Failure ]
 crbug.com/526920 imported/web-platform-tests/html/semantics/embedded-content/media-elements/location-of-the-media-resource/currentSrc.html [ Failure ]
@@ -436,7 +421,7 @@
 crbug.com/505364 imported/web-platform-tests/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/ownerdocument-002.html [ Failure ]
 crbug.com/505364 crbug.com/520616 imported/web-platform-tests/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/test-009.html [ Failure ]
 
-crbug.com/539623 [ SnowLeopard ] fast/repaint/selection-change-in-iframe-with-relative-parent.html [ Pass Failure ImageOnlyFailure ]
+crbug.com/539623 [ SnowLeopard ] fast/repaint/selection-change-in-iframe-with-relative-parent.html [ Pass Failure ]
 
 crbug.com/387740 imported/web-platform-tests/mediacapture-streams/stream-api/introduction/disabled-audio-silence.html [ Skip ]
 crbug.com/387740 imported/web-platform-tests/mediacapture-streams/stream-api/introduction/disabled-video-black.html [ Skip ]
@@ -498,9 +483,9 @@
 crbug.com/380217 [ Linux Win ] fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-large-radius.html [ Skip ]
 crbug.com/380217 [ Win ] fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-bottom-left.html [ Skip ]
 
-crbug.com/405389 imported/csswg-test/css-shapes-1/shape-outside/supported-shapes/polygon/shape-outside-polygon-017.html [ ImageOnlyFailure ]
-crbug.com/424365 imported/csswg-test/css-shapes-1/shape-outside/shape-image/shape-image-010.html [ ImageOnlyFailure ]
-crbug.com/424365 imported/csswg-test/css-shapes-1/shape-outside/shape-image/shape-image-024.html [ ImageOnlyFailure ]
+crbug.com/405389 imported/csswg-test/css-shapes-1/shape-outside/supported-shapes/polygon/shape-outside-polygon-017.html [ Failure ]
+crbug.com/424365 imported/csswg-test/css-shapes-1/shape-outside/shape-image/shape-image-010.html [ Failure ]
+crbug.com/424365 imported/csswg-test/css-shapes-1/shape-outside/shape-image/shape-image-024.html [ Failure ]
 crbug.com/441840 imported/csswg-test/css-shapes-1/shape-outside/values/shape-margin-001.html [ Failure ]
 crbug.com/441840 imported/csswg-test/css-shapes-1/shape-outside/values/shape-outside-circle-004.html [ Failure ]
 crbug.com/441840 imported/csswg-test/css-shapes-1/shape-outside/values/shape-outside-circle-005.html [ Failure ]
@@ -510,94 +495,94 @@
 crbug.com/441840 imported/csswg-test/css-shapes-1/shape-outside/values/shape-outside-polygon-004.html [ Failure ]
 crbug.com/441840 imported/csswg-test/css-shapes-1/shape-outside/values/shape-outside-shape-arguments-000.html [ Failure ]
 
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-003.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-005.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-011.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-013.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-033.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-002.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-004.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-006.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-008.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-010.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-012.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-014.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-016.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-018.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-020.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-030.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-005.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-017.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-029.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-041.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-053.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-065.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-077.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-089.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-095.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-105.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-109.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-121.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-125.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-137.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-141.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-153.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-157.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-004.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-010.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-016.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-028.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-034.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-040.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-052.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-064.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-076.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-088.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-104.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-108.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-112.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-116.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-124.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-128.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-136.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-140.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-144.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-148.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-156.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-160.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-169.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-173.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-185.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-189.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-201.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-205.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-217.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-221.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-225.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-229.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-172.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-176.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-188.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-192.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-204.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-208.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-220.xht [ ImageOnlyFailure ]
-crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-224.xht [ ImageOnlyFailure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-003.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-005.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-011.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-013.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vlr-033.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-002.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-004.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-006.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-008.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-010.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-012.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-014.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-016.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-018.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-020.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-icb-vrl-030.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-005.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-017.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-029.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-041.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-053.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-065.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-077.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-089.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-095.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-105.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-109.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-121.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-125.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-137.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-141.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-153.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-157.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-004.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-010.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-016.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-028.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-034.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-040.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-052.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-064.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-076.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-088.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-104.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-108.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-112.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-116.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-124.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-128.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-136.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-140.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-144.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-148.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-156.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-160.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-169.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-173.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-185.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-189.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-201.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-205.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-217.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-221.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-225.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vlr-229.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-172.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-176.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-188.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-192.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-204.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-208.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-220.xht [ Failure ]
+crbug.com/505151 imported/csswg-test/css-writing-modes-3/abs-pos-non-replaced-vrl-224.xht [ Failure ]
 
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-block-alignment-003.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-block-alignment-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-block-alignment-007.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-table-alignment-003.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-table-alignment-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-002.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-003.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-004.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vlr-001.html [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vlr-004.html [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vrl-001.html [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vrl-004.html [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/writing-mode-stretch-001.html [ ImageOnlyFailure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-block-alignment-003.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-block-alignment-005.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-block-alignment-007.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-table-alignment-003.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/inline-table-alignment-005.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-002.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-003.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-004.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-column-order-005.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vlr-001.html [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vlr-004.html [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vrl-001.html [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/table-progression-vrl-004.html [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/writing-mode-stretch-001.html [ Failure ]
 
 # Either "combo" or split should run: http://testthewebforward.org/docs/css-naming.html
 crbug.com/410320 imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001.html [ Skip ]
@@ -613,119 +598,119 @@
 crbug.com/492664 imported/csswg-test/css-writing-modes-3/text-orientation-script-001e.html [ Failure ]
 
 # These tests pass but images do not match because of wrong half-leading in vertical-lr
-crbug.com/537080 imported/csswg-test/css-writing-modes-3/vertical-alignment-003.xht [ ImageOnlyFailure ]
-crbug.com/537080 imported/csswg-test/css-writing-modes-3/vertical-alignment-009.xht [ ImageOnlyFailure ]
+crbug.com/537080 imported/csswg-test/css-writing-modes-3/vertical-alignment-003.xht [ Failure ]
+crbug.com/537080 imported/csswg-test/css-writing-modes-3/vertical-alignment-009.xht [ Failure ]
 
 # These tests pass but images do not match because of position: absolute in vertical flow bug
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/block-flow-direction-009.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-003.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-007.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-009.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-002.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-004.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-006.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-008.xht [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/line-box-direction-009.xht [ ImageOnlyFailure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/block-flow-direction-009.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-003.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-005.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-007.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vlr-009.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-002.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-004.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-006.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/clip-rect-vrl-008.xht [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/line-box-direction-009.xht [ Failure ]
 
 # These tests pass but images do not match because tests are stricter than the spec.
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/text-combine-upright-value-all-001.html [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/text-combine-upright-value-all-002.html [ ImageOnlyFailure ]
-crbug.com/492664 imported/csswg-test/css-writing-modes-3/text-combine-upright-value-all-003.html [ ImageOnlyFailure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/text-combine-upright-value-all-001.html [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/text-combine-upright-value-all-002.html [ Failure ]
+crbug.com/492664 imported/csswg-test/css-writing-modes-3/text-combine-upright-value-all-003.html [ Failure ]
 
 # These CSS Writing Modes Level 3 tests pass but causes 1px diff on images, notified to the submitter.
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-001.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-002.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-003.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-004.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-006.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-007.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-008.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-010.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-011.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-012.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-013.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-014.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-015.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-016.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-019.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-020.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-021.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-022.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-023.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-024.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/inline-block-alignment-006.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-001.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-002.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-003.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-006.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-007.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-008.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-010.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-011.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-012.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-013.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-014.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-017.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-018.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-019.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-020.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-002.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-003.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-004.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-005.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-006.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-007.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-008.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-009.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/text-baseline-006.xht [ ImageOnlyFailure ]
-crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/text-baseline-007.xht [ ImageOnlyFailure ]
-crbug.com/539425 [ XP ] imported/csswg-test/css-writing-modes-3/vertical-alignment-vrl-022.xht [ ImageOnlyFailure ]
-crbug.com/539425 [ XP ] imported/csswg-test/css-writing-modes-3/vertical-alignment-vrl-024.xht [ ImageOnlyFailure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-001.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-002.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-003.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-004.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-005.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-006.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-007.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-008.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-010.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-011.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-012.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-013.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-014.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-015.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-016.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-019.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-020.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-021.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-022.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-023.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/block-flow-direction-024.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/inline-block-alignment-006.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-001.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-002.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-003.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-005.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-006.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-007.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-008.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-010.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-011.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-012.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-013.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-014.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-017.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-018.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-019.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/line-box-direction-020.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-002.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-003.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-004.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-005.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-006.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-007.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-008.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/row-progression-009.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/text-baseline-006.xht [ Failure ]
+crbug.com/492664 [ Mac ] imported/csswg-test/css-writing-modes-3/text-baseline-007.xht [ Failure ]
+crbug.com/539425 [ XP ] imported/csswg-test/css-writing-modes-3/vertical-alignment-vrl-022.xht [ Failure ]
+crbug.com/539425 [ XP ] imported/csswg-test/css-writing-modes-3/vertical-alignment-vrl-024.xht [ Failure ]
 
-crbug.com/498845 [ Win ] fast/multicol/vertical-rl/float-content-break.html [ ImageOnlyFailure ]
+crbug.com/498845 [ Win ] fast/multicol/vertical-rl/float-content-break.html [ Failure ]
 
-crbug.com/443615 [ Linux Win ] imported/csswg-test/css-shapes-1/shape-outside/supported-shapes/circle/shape-outside-circle-027.html [ ImageOnlyFailure ]
+crbug.com/443615 [ Linux Win ] imported/csswg-test/css-shapes-1/shape-outside/supported-shapes/circle/shape-outside-circle-027.html [ Failure ]
 
 crbug.com/443379 imported/web-platform-tests/gamepad/idlharness.html [ Failure Timeout ]
 
-crbug.com/396775 compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html [ ImageOnlyFailure ]
-crbug.com/396775 virtual/prefer_compositing_to_lcd_text/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html [ ImageOnlyFailure ]
+crbug.com/396775 compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html [ Failure ]
+crbug.com/396775 virtual/prefer_compositing_to_lcd_text/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html [ Failure ]
 
 crbug.com/381684 [ Win Android Mac ] fonts/family-fallback-gardiner.html [ Skip ]
 
 crbug.com/467635 fast/dom/HTMLImageElement/image-sizes-meta-viewport.html [ Skip ]
 
-# crbug.com/396823 [ Mac ] fast/multicol/multicol-with-child-renderLayer-for-input.html [ ImageOnlyFailure ]
+# crbug.com/396823 [ Mac ] fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure ]
 
-crbug.com/484370 [ Win Debug ] svg/custom/gradient-userSpaceOnUse-with-percentage.svg [ ImageOnlyFailure ]
+crbug.com/484370 [ Win Debug ] svg/custom/gradient-userSpaceOnUse-with-percentage.svg [ Failure ]
 
-crbug.com/116710 [ Win Debug ] transforms/3d/point-mapping/3d-point-mapping-preserve-3d.html [ ImageOnlyFailure ]
+crbug.com/116710 [ Win Debug ] transforms/3d/point-mapping/3d-point-mapping-preserve-3d.html [ Failure ]
 
 # Printing Layout broken in these tests.
 crbug.com/377696 printing/setPrinting.html [ Skip ]
 crbug.com/377696 printing/width-overflow.html [ Skip ]
 
 # Reftests that needs investigation.
-crbug.com/397232 [ XP ] css2.1/20110323/c541-word-sp-000.htm [ ImageOnlyFailure ]
-crbug.com/397232 [ XP ] css2.1/20110323/vertical-align-boxes-001.htm [ ImageOnlyFailure ]
-crbug.com/397255 [ Linux XP ] css3/masking/clip-path-reference-userSpaceOnUse.html [ ImageOnlyFailure ]
-crbug.com/475882 [ Mac Win7 ] fast/writing-mode/table-vertical-child-width.html [ ImageOnlyFailure ]
-crbug.com/396940 ietestcenter/css3/multicolumn/column-containing-block-001.htm [ ImageOnlyFailure ]
-crbug.com/396940 ietestcenter/css3/multicolumn/column-containing-block-002.htm [ ImageOnlyFailure ]
-crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-007.htm [ ImageOnlyFailure ]
-crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-009.htm [ ImageOnlyFailure ]
-crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-010.htm [ ImageOnlyFailure ]
-crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-012.htm [ ImageOnlyFailure ]
-crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-015.htm [ ImageOnlyFailure ]
-crbug.com/378610 [ Win7 ] svg/custom/focus-ring-text.svg [ ImageOnlyFailure ]
+crbug.com/397232 [ XP ] css2.1/20110323/c541-word-sp-000.htm [ Failure ]
+crbug.com/397232 [ XP ] css2.1/20110323/vertical-align-boxes-001.htm [ Failure ]
+crbug.com/397255 [ Linux XP ] css3/masking/clip-path-reference-userSpaceOnUse.html [ Failure ]
+crbug.com/475882 [ Mac Win7 ] fast/writing-mode/table-vertical-child-width.html [ Failure ]
+crbug.com/396940 ietestcenter/css3/multicolumn/column-containing-block-001.htm [ Failure ]
+crbug.com/396940 ietestcenter/css3/multicolumn/column-containing-block-002.htm [ Failure ]
+crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-007.htm [ Failure ]
+crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-009.htm [ Failure ]
+crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-010.htm [ Failure ]
+crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-012.htm [ Failure ]
+crbug.com/396941 ietestcenter/css3/multicolumn/column-width-applies-to-015.htm [ Failure ]
+crbug.com/378610 [ Win7 ] svg/custom/focus-ring-text.svg [ Failure ]
 
 crbug.com/515454 [ Mac Win7 Win10 Android Linux ] css3/fonts/font-style-matching.html [ Slow ]
 crbug.com/523021 [ XP ] css3/fonts/font-style-matching.html [ Failure Slow ]
 
-crbug.com/474987 [ Win7 Mac ] css3/flexbox/auto-margins.html [ ImageOnlyFailure ]
+crbug.com/474987 [ Win7 Mac ] css3/flexbox/auto-margins.html [ Failure ]
 
 crbug.com/267206 [ Mac ] fast/scrolling/scrollbar-tickmarks-hittest.html [ Timeout ]
 crbug.com/267206 [ Mac ] virtual/scroll_customization/fast/scrolling/scrollbar-tickmarks-hittest.html [ Timeout ]
@@ -738,13 +723,13 @@
 
 crbug.com/527152 http/tests/media/media-source/mediasource-duration.html [ Pass Crash ]
 
-crbug.com/517449 [ Android ] css3/images/optimize-contrast-image.html [ ImageOnlyFailure ]
+crbug.com/517449 [ Android ] css3/images/optimize-contrast-image.html [ Failure ]
 
-crbug.com/309675 compositing/gestures/gesture-tapHighlight-simple-longPress.html [ ImageOnlyFailure ]
+crbug.com/309675 compositing/gestures/gesture-tapHighlight-simple-longPress.html [ Failure ]
 
-crbug.com/245556 compositing/transitions/transform-on-large-layer.html [ ImageOnlyFailure ]
+crbug.com/245556 compositing/transitions/transform-on-large-layer.html [ Failure ]
 
-crbug.com/253763 fast/text-autosizing/first-line-scale-factor.html [ ImageOnlyFailure ]
+crbug.com/253763 fast/text-autosizing/first-line-scale-factor.html [ Failure ]
 
 crbug.com/374643 [ Mac ] fast/text-autosizing/supercluster-multiple-layout.html [ Failure ]
 crbug.com/374643 [ Mac ] fast/text-autosizing/tables/table-with-inline-block.html [ Failure ]
@@ -758,7 +743,6 @@
 crbug.com/357427 http/tests/workers/terminate-during-sync-operation-filesystem.html [ Crash Pass Slow Timeout ]
 
 crbug.com/356957 [ Win Mac Debug ] editing/spelling/spellcheck-editable-on-focus.html [ Timeout ]
-crbug.com/539693 [ XP Win10 ] editing/selection/doubleclick-crash.html [ Failure ]
 
 crbug.com/365400 [ Mac ] compositing/images/direct-pdf-image.html [ Failure ]
 
@@ -768,14 +752,14 @@
 crbug.com/364250 [ Debug ] virtual/threaded/animations/interpolation/transform-interpolation.html [ Pass Crash Slow ]
 crbug.com/364250 [ Debug ] virtual/threaded/animations/interpolation/webkit-transform-interpolation.html [ Pass Crash Slow ]
 
-crbug.com/467477 fast/multicol/vertical-rl/nested-columns.html [ ImageOnlyFailure ]
+crbug.com/467477 fast/multicol/vertical-rl/nested-columns.html [ Failure ]
 
-crbug.com/506525 [ XP ] paint/masks/fieldset-mask.html [ ImageOnlyFailure ]
+crbug.com/506525 [ XP ] paint/masks/fieldset-mask.html [ Failure ]
 crbug.com/506525 [ XP ] virtual/spv2/paint/masks/fieldset-mask.html [ Skip ]
 
-crbug.com/400841 media/video-canvas-draw.html [ ImageOnlyFailure ]
-crbug.com/400829 media/video-object-fit.html [ ImageOnlyFailure ]
-crbug.com/400829 virtual/stable/media/stable/video-object-fit-stable.html [ ImageOnlyFailure ]
+crbug.com/400841 media/video-canvas-draw.html [ Failure ]
+crbug.com/400829 media/video-object-fit.html [ Failure ]
+crbug.com/400829 virtual/stable/media/stable/video-object-fit-stable.html [ Failure ]
 
 # We only want to run one of the web-animations-api tests in stable mode.
 crbug.com/441553 virtual/stable/web-animations-api [ Skip ]
@@ -785,7 +769,7 @@
 crbug.com/437696 virtual/stable/web-animations-api/additive-animations-unsupported.html [ Pass ]
 
 # switching to apache-win32: needs triaging.
-crbug.com/528062 [ Win ] http/tests/css/missing-repaint-after-slow-style-sheet.pl [ ImageOnlyFailure ]
+crbug.com/528062 [ Win ] http/tests/css/missing-repaint-after-slow-style-sheet.pl [ Failure ]
 crbug.com/528062 [ Win ] http/tests/local/blob/send-data-blob.html [ Failure ]
 crbug.com/528062 [ Win ] http/tests/local/blob/send-hybrid-blob.html [ Failure Timeout ]
 crbug.com/528062 [ Win ] http/tests/security/XFrameOptions/x-frame-options-cached.html [ Failure ]
@@ -1504,6 +1488,33 @@
 crbug.com/404597 css3/selectors3/xml/css3-modsel-14e.xml [ NeedsRebaseline ]
 crbug.com/404597 css2.1/t0402-c71-fwd-parsing-02-f.html [ NeedsRebaseline ]
 
+crbug.com/543309 editing/execCommand/4916541.html [ NeedsRebaseline ]
+crbug.com/543309 editing/execCommand/remove-list-from-range-selection.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/3690703-2.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/3690703.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/3690719.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/extend-by-character-002.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/image-before-linebreak.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/paragraph-granularity.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/replaced-boundaries-3.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/select-all-002.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/selection-actions.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/selection-button-text.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/vertical-lr-ltr-extend-line-backward-br.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/vertical-lr-ltr-extend-line-forward-br.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/vertical-rl-ltr-extend-line-backward-br.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/vertical-rl-ltr-extend-line-forward-br.html [ NeedsRebaseline ]
+crbug.com/543309 editing/selection/word-granularity.html [ NeedsRebaseline ]
+crbug.com/543309 fast/text/selection-hard-linebreak.html [ NeedsRebaseline ]
+crbug.com/543309 fast/text/whitespace/pre-wrap-overflow-selection.html [ NeedsRebaseline ]
+crbug.com/543309 fast/writing-mode/vertical-lr-replaced-selection.html [ NeedsRebaseline ]
+crbug.com/543309 virtual/spv2/paint/invalidation/spv2/selection-change-in-iframe-with-relative-parent.html [ NeedsRebaseline ]
+crbug.com/543309 paint/selection/text-selection-newline-br.html [ NeedsRebaseline ]
+crbug.com/543309 virtual/spv2/paint/selection/text-selection-newline-br.html [ NeedsRebaseline ]
+crbug.com/543309 fast/writing-mode/horizontal-bt-replaced-selection.html [ NeedsRebaseline ]
+# The below is failing on XP and Win10 only. See crbug.com/539693
+crbug.com/543309 editing/selection/doubleclick-crash.html [ NeedsManualRebaseline ]
+
 crbug.com/419993 [ Debug ] fast/css/giant-stylesheet-crash.html [ Pass Slow ]
 
 # Part of a larger issue referenced in the bug. This specific issue will be fixed shortly.
@@ -1521,9 +1532,9 @@
 # fast/text/international/bidi-neutral-run.html is missing here, since it has a NeedsRebaseline expectation up above.
 crbug.com/421854 [ Debug SnowLeopard ] fast/text/zero-width-characters-complex-script.html [ Crash ]
 
-crbug.com/418091 [ SnowLeopard ] fast/text/international/zerowidthjoiner.html [ ImageOnlyFailure ]
+crbug.com/418091 [ SnowLeopard ] fast/text/international/zerowidthjoiner.html [ Failure ]
 
-crbug.com/507351 [ Mac ] fast/text/international/kana-voiced-sound-marks.html [ ImageOnlyFailure ]
+crbug.com/507351 [ Mac ] fast/text/international/kana-voiced-sound-marks.html [ Failure ]
 
 crbug.com/425345 [ Mac ] fast/text/line-break-after-question-mark.html [ Failure ]
 
@@ -1531,7 +1542,7 @@
 # In this configuration, the pixel smoothed glyphs will be created from subpixel smoothed glyphs.
 # This means that CoreGraphics may draw outside the reported glyph bounds, and in this case does.
 # By about a quarter or less of a pixel.
-crbug.com/421412 [ MountainLion Mavericks Retina ] fast/text/international/bdo-bidi-width.html [ ImageOnlyFailure ]
+crbug.com/421412 [ MountainLion Mavericks Retina ] fast/text/international/bdo-bidi-width.html [ Failure ]
 
 crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollable-area-frame-overflow-hidden.html [ Failure ]
 crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollable-area-frame-overried-inherited-visibility-hidden.html [ Failure ]
@@ -1542,7 +1553,7 @@
 crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollable-area-frame-visibility-hidden-child.html [ Failure ]
 crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollable-area-frame-zero-size-and-border.html [ Failure ]
 crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollable-area-frame.html [ Failure ]
-crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollbar-tickmarks-styled.html [ ImageOnlyFailure ]
+crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollbar-tickmarks-styled.html [ Failure ]
 
 crbug.com/385014 accessibility/canvas-fallback-content-2.html [ Failure ]
 
@@ -1561,20 +1572,20 @@
 crbug.com/364614 [ Mac ] virtual/scroll_customization/fast/scroll-behavior/overflow-scroll-root-frame-animates.html [ Skip ]
 crbug.com/364614 [ Mac ] virtual/threaded_animation_timelines/fast/scroll-behavior/overflow-scroll-root-frame-animates.html [ Skip ]
 
-crbug.com/524596 paint/invalidation/composited-non-stacking-context-descendant-change-color.html [ ImageOnlyFailure ]
-crbug.com/524596 paint/invalidation/composited-non-stacking-context-descendant-move.html [ ImageOnlyFailure ]
-crbug.com/524596 paint/invalidation/fixed-position-descendant-paint-offset-indirect.html [ ImageOnlyFailure ]
+crbug.com/524596 paint/invalidation/composited-non-stacking-context-descendant-change-color.html [ Failure ]
+crbug.com/524596 paint/invalidation/composited-non-stacking-context-descendant-move.html [ Failure ]
+crbug.com/524596 paint/invalidation/fixed-position-descendant-paint-offset-indirect.html [ Failure ]
 crbug.com/524596 virtual/spv2/paint/invalidation/composited-non-stacking-context-descendant-move.html [ Skip ]
 crbug.com/524596 virtual/spv2/paint/invalidation/fixed-position-descendant-paint-offset-indirect.html [ Skip ]
 
-crbug.com/425113 svg/clip-path/clip-path-multiple-children.svg [ ImageOnlyFailure ]
+crbug.com/425113 svg/clip-path/clip-path-multiple-children.svg [ Failure ]
 
 crbug.com/480769 http/tests/inspector/service-workers/service-workers-redundant.html [ Crash Pass Slow Failure ]
 crbug.com/528198 http/tests/inspector/service-workers/service-worker-agents.html [ Crash Pass ]
 
-crbug.com/472330 fast/borders/border-image-outset-split-inline-vertical-lr.html [ ImageOnlyFailure ]
-crbug.com/472330 fast/writing-mode/box-shadow-vertical-lr.html [ ImageOnlyFailure ]
-crbug.com/472330 fast/writing-mode/box-shadow-vertical-rl.html [ ImageOnlyFailure ]
+crbug.com/472330 fast/borders/border-image-outset-split-inline-vertical-lr.html [ Failure ]
+crbug.com/472330 fast/writing-mode/box-shadow-vertical-lr.html [ Failure ]
+crbug.com/472330 fast/writing-mode/box-shadow-vertical-rl.html [ Failure ]
 
 crbug.com/466200 svg/custom/repaint-on-constant-size-change.svg [ Failure ]
 
@@ -1582,31 +1593,31 @@
 crbug.com/498021 [ Linux ] fast/text/unicode-fallback-font.html [ Failure ]
 crbug.com/498021 [ Linux ] http/tests/security/contentTypeOptions/nosniff-script-without-content-type-blocked.html [ Failure ]
 crbug.com/498021 [ Linux ] svg/custom/use-on-symbol-inside-pattern.svg [ Failure ]
-crbug.com/498021 [ Linux ] fast/forms/month/month-appearance-l10n.html [ ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] fast/text/ellipsis-stroked.html [ ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] fast/text/emphasis-complex.html [ ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] fast/text/international/danda-space.html [ Failure ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] fast/text/international/hindi-whitespace.html [ ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] fast/text/international/thai-line-breaks.html [ Failure ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] fast/text/selection-multiple-runs.html [ ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] svg/W3C-SVG-1.1/paths-data-03-f.svg [ ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] svg/W3C-SVG-1.1/text-align-08-b.svg [ ImageOnlyFailure ]
-crbug.com/498021 [ Linux ] svg/custom/control-points-for-S-and-T.svg [ ImageOnlyFailure ]
+crbug.com/498021 [ Linux ] fast/forms/month/month-appearance-l10n.html [ Failure ]
+crbug.com/498021 [ Linux ] fast/text/ellipsis-stroked.html [ Failure ]
+crbug.com/498021 [ Linux ] fast/text/emphasis-complex.html [ Failure ]
+crbug.com/498021 [ Linux ] fast/text/international/danda-space.html [ Failure ]
+crbug.com/498021 [ Linux ] fast/text/international/hindi-whitespace.html [ Failure ]
+crbug.com/498021 [ Linux ] fast/text/international/thai-line-breaks.html [ Failure ]
+crbug.com/498021 [ Linux ] fast/text/selection-multiple-runs.html [ Failure ]
+crbug.com/498021 [ Linux ] svg/W3C-SVG-1.1/paths-data-03-f.svg [ Failure ]
+crbug.com/498021 [ Linux ] svg/W3C-SVG-1.1/text-align-08-b.svg [ Failure ]
+crbug.com/498021 [ Linux ] svg/custom/control-points-for-S-and-T.svg [ Failure ]
 crbug.com/498021 [ Linux ] editing/pasteboard/4944770-2.html [ Failure ]
 crbug.com/498021 [ Linux ] fast/encoding/invalid-UTF-8.html [ Failure ]
 crbug.com/498021 [ Linux ] fast/text/emoticons.html [ Failure ]
 crbug.com/498021 [ Linux ] fast/text/international/complex-character-based-fallback.html [ Failure ]
 crbug.com/498021 [ Linux ] fast/text/international/hindi-spacing.html [ Failure ]
 
-crbug.com/528122 [ Mac ] fast/text/justify-ideograph-vertical.html [ Failure ImageOnlyFailure Pass ]
+crbug.com/528122 [ Mac ] fast/text/justify-ideograph-vertical.html [ Failure Pass ]
 
 # Significant Slimming Paint failure.
-crbug.com/459305 [ Mac ] svg/custom/foreign-object-skew.svg [ ImageOnlyFailure ]
+crbug.com/459305 [ Mac ] svg/custom/foreign-object-skew.svg [ Failure ]
 
 crbug.com/463798 [ Mac ] svg/as-image/svg-invalid-image-1.html [ Failure ]
 
-crbug.com/463358 [ Mac Linux Debug ] css3/masking/clip-path-polygon-evenodd.html [ ImageOnlyFailure ]
-crbug.com/463358 [ Lion Mavericks MountainLion Retina SnowLeopard Debug ] svg/transforms/animated-path-inside-transformed-html.xhtml [ ImageOnlyFailure ]
+crbug.com/463358 [ Mac Linux Debug ] css3/masking/clip-path-polygon-evenodd.html [ Failure ]
+crbug.com/463358 [ Lion Mavericks MountainLion Retina SnowLeopard Debug ] svg/transforms/animated-path-inside-transformed-html.xhtml [ Failure ]
 
 crbug.com/482229 compositing/layer-creation/fixed-position-under-transform.html [ Failure ]
 
@@ -1620,16 +1631,16 @@
 crbug.com/471066 [ SnowLeopard ] fast/text/apply-start-width-after-skipped-text.html [ Failure ]
 crbug.com/471066 [ SnowLeopard ] fast/text/bidi-explicit-embedding-past-end.html [ Failure ]
 crbug.com/471066 [ SnowLeopard ] fast/text/emphasis-overlap.html [ Failure ]
-crbug.com/471066 [ SnowLeopard ] fast/text/fake-italic.html [ Failure ImageOnlyFailure ]
+crbug.com/471066 [ SnowLeopard ] fast/text/fake-italic.html [ Failure ]
 
 crbug.com/478109 [ SnowLeopard ] fast/text/bidi-embedding-pop-and-push-same-2.html [ Failure ]
 
-crbug.com/521124 [ Win7 ] fast/text/international/vertical-text-glyph-test.html [ Pass ImageOnlyFailure ]
-crbug.com/521124 [ Win7 ] fast/text/international/text-combine-image-test.html [ Pass ImageOnlyFailure ]
-crbug.com/521124 [ Win7 Release ] fast/css/font-weight-1.html [ Pass ImageOnlyFailure ]
-crbug.com/521124 [ Win7 Release ] fast/text/justify-ideograph-vertical.html [ Pass ImageOnlyFailure ]
-crbug.com/521124 [ Win7 Release ] fast/writing-mode/english-lr-text.html [ Pass ImageOnlyFailure ]
-crbug.com/521124 [ Win7 ] fast/text/orientation-sideways.html [ Pass ImageOnlyFailure ]
+crbug.com/521124 [ Win7 ] fast/text/international/vertical-text-glyph-test.html [ Pass Failure ]
+crbug.com/521124 [ Win7 ] fast/text/international/text-combine-image-test.html [ Pass Failure ]
+crbug.com/521124 [ Win7 Release ] fast/css/font-weight-1.html [ Pass Failure ]
+crbug.com/521124 [ Win7 Release ] fast/text/justify-ideograph-vertical.html [ Pass Failure ]
+crbug.com/521124 [ Win7 Release ] fast/writing-mode/english-lr-text.html [ Pass Failure ]
+crbug.com/521124 [ Win7 ] fast/text/orientation-sideways.html [ Pass Failure ]
 
 crbug.com/419769 [ Debug SnowLeopard ] fast/forms/time-multiple-fields/time-multiple-fields-localization.html [ Crash ]
 crbug.com/419769 [ SnowLeopard ] fast/text/unicode-fallback-font.html [ Crash ]
@@ -1639,13 +1650,13 @@
 #crbug.com/485332 [ XP ] virtual/gpu/fast/canvas/canvas-as-image.html [ Failure ]
 
 # Temporary, until we stop use_system_harfbuzz on Linux including non-official builds
-crbug.com/462689 [ Linux ] fast/text/unicode-variation-selector.html [ ImageOnlyFailure ]
+crbug.com/462689 [ Linux ] fast/text/unicode-variation-selector.html [ Failure ]
 
 # Temporary, until WebAXObjectProxy support lands.
 crbug.com/421771 accessibility/inline-text-box-next-on-line.html [ Skip ]
 
-crbug.com/486962 [ Linux Win Debug ] svg/W3C-SVG-1.1/animate-elem-41-t.svg [ ImageOnlyFailure ]
-crbug.com/486962 [ Linux Win Debug ] svg/W3C-SVG-1.1/animate-elem-46-t.svg [ ImageOnlyFailure ]
+crbug.com/486962 [ Linux Win Debug ] svg/W3C-SVG-1.1/animate-elem-41-t.svg [ Failure ]
+crbug.com/486962 [ Linux Win Debug ] svg/W3C-SVG-1.1/animate-elem-46-t.svg [ Failure ]
 
 # Disabled briefly until test runner support lands.
 crbug.com/479533 accessibility/show-context-menu.html [ Skip ]
@@ -1659,9 +1670,9 @@
 crbug.com/474798 virtual/spv2/paint/invalidation/spv2/justify-self-change-keeping-geometry-as-text.html [ Failure ]
 
 # Temporarily disabled after chromium change
-crbug.com/492511 [ Mac ] fast/text/atsui-negative-spacing-features.html [ Failure ImageOnlyFailure ]
-crbug.com/492511 [ Mac ] fast/text/atsui-spacing-features.html [ Failure ImageOnlyFailure ]
-crbug.com/492511 [ Mac ] fast/text/international/arabic-justify.html [ Failure ImageOnlyFailure ]
+crbug.com/492511 [ Mac ] fast/text/atsui-negative-spacing-features.html [ Failure ]
+crbug.com/492511 [ Mac ] fast/text/atsui-spacing-features.html [ Failure ]
+crbug.com/492511 [ Mac ] fast/text/international/arabic-justify.html [ Failure ]
 
 crbug.com/541544 fast/layers/scroll-descendant-with-cached-cliprects.html [ NeedsRebaseline ]
 crbug.com/541544 fast/repaint/create-layer-repaint.html [ NeedsRebaseline ]
@@ -1669,22 +1680,22 @@
 
 # Ref tests that fail due to differences in inline box structure, even though they contain the same text.
 # This happens because inline box layout uses fixed-point measurements, which can cause rounding differences.
-crbug.com/321237 [ Mac ] fast/dom/shadow/shadow-insertion-point-rendering-multiple-shadow-roots.html [ ImageOnlyFailure ]
-crbug.com/321237 [ Mac ] fast/selectors/007a.html [ ImageOnlyFailure ]
-crbug.com/321237 [ Mac Win ] fast/text-autosizing/inherited-multiplier.html [ ImageOnlyFailure ]
-crbug.com/321237 [ Mac ] virtual/stable/fast/css3-text/css3-text-decoration/stable/first-letter-text-decoration.html [ ImageOnlyFailure ]
-crbug.com/321237 [ Win ] fast/multicol/span/pseudo-before-after-in-content.html [ ImageOnlyFailure ]
-crbug.com/321237 [ Win ] fast/selectors/004.html [ ImageOnlyFailure ]
+crbug.com/321237 [ Mac ] fast/dom/shadow/shadow-insertion-point-rendering-multiple-shadow-roots.html [ Failure ]
+crbug.com/321237 [ Mac ] fast/selectors/007a.html [ Failure ]
+crbug.com/321237 [ Mac Win ] fast/text-autosizing/inherited-multiplier.html [ Failure ]
+crbug.com/321237 [ Mac ] virtual/stable/fast/css3-text/css3-text-decoration/stable/first-letter-text-decoration.html [ Failure ]
+crbug.com/321237 [ Win ] fast/multicol/span/pseudo-before-after-in-content.html [ Failure ]
+crbug.com/321237 [ Win ] fast/selectors/004.html [ Failure ]
 
 # Rebaselines that got missed in the first pass
-crbug.com/321237 [ Mac ] fast/text/international/complex-text-leading-space-wrapping.html [ ImageOnlyFailure ]
-crbug.com/321237 [ Win ] fast/text/international/complex-text-leading-space-wrapping.html [ ImageOnlyFailure ]
+crbug.com/321237 [ Mac ] fast/text/international/complex-text-leading-space-wrapping.html [ Failure ]
+crbug.com/321237 [ Win ] fast/text/international/complex-text-leading-space-wrapping.html [ Failure ]
 
 crbug.com/495523 [ XP ] svg/W3C-SVG-1.1/animate-elem-52-t.svg [ Failure ]
 crbug.com/495523 [ XP ] svg/W3C-SVG-1.1/extend-namespace-01-f.svg [ Failure ]
 
 # This new test will need a Chrome-side change before it passes.
-crbug.com/240827 css3/filters/filterRegions.html [ ImageOnlyFailure ]
+crbug.com/240827 css3/filters/filterRegions.html [ Failure ]
 
 crbug.com/501659 fast/xsl/xslt-missing-namespace-in-xslt.xml [ Failure ]
 crbug.com/501659 http/tests/xmlviewer/dumpAsText/svg.xml [ Failure ]
@@ -1695,11 +1706,11 @@
 
 # Slow expected on debug builds
 crbug.com/445194 [ Debug ] fast/dom/shadow/focus-controller-recursion-crash.html [ Skip ]
-crbug.com/505387 [ Win ] virtual/prefer_compositing_to_lcd_text/scrollbars/rtl/overflow-scroll-rtl.html [ ImageOnlyFailure ]
+crbug.com/505387 [ Win ] virtual/prefer_compositing_to_lcd_text/scrollbars/rtl/overflow-scroll-rtl.html [ Failure ]
 
 crbug.com/505415 [ XP ] accessibility/canvas-fallback-content-labels.html [ Failure ]
 
-crbug.com/506312 imported/csswg-test/css-pseudo-4/first-letter-001.html [ ImageOnlyFailure ]
+crbug.com/506312 imported/csswg-test/css-pseudo-4/first-letter-001.html [ Failure ]
 
 crbug.com/510002 [ Win ] http/tests/cachestorage/window/cache-match.html [ Pass Failure ]
 crbug.com/510002 [ Win ] http/tests/cachestorage/window/cache-put.html [ Pass Failure Timeout ]
@@ -1759,48 +1770,48 @@
 crbug.com/509025 [ Yosemite ] svg/custom/absolute-sized-content-with-resources.xhtml [ Failure ]
 crbug.com/509025 [ Yosemite ] svg/custom/bug78807.svg [ Failure ]
 crbug.com/509025 [ Yosemite ] svg/text/text-rescale.html [ Failure ]
-crbug.com/509025 [ Yosemite ] compositing/iframes/iframe-copy-on-scroll.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ ImageOnlyFailure Failure Timeout ]
-crbug.com/509025 [ Yosemite ] compositing/plugins/composited-plugin.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] compositing/visibility/visibility-image-layers.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fonts/cursive.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fonts/default.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fonts/fantasy.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fonts/monospace.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fonts/sans-serif.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fonts/serif.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] http/tests/local/file-url-sent-as-referer.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] http/tests/mime/png-image-with-x-png-mime-type.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] http/tests/misc/iframe404.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] http/tests/misc/location-replace-crossdomain.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] http/tests/misc/object-embedding-svg-delayed-size-negotiation.xhtml [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] ietestcenter/css3/bordersbackgrounds/background-size-aspect-ratio.htm [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] ietestcenter/css3/bordersbackgrounds/background_position_three_four_values.htm [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] media/video-layer-crash.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] media/video-transformed.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] plugins/embed-attributes-style.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] printing/return-from-printing-mode.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] scrollbars/rtl/overflow-scroll-rtl.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] scrollbars/scrollbars-on-positioned-content.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] scrollbars/short-scrollbar.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] tables/layering/paint-test-layering-1.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] tables/layering/paint-test-layering-2.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] transforms/2d/transform-fixed-container.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] transforms/3d/point-mapping/3d-point-mapping-origins.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] transforms/3d/point-mapping/3d-point-mapping.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fast/text/atsui-rtl-override-selection.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fast/text/international/bdo-bidi-width.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/display_list_2d_canvas/fast/canvas/canvas-composite-video.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/pointerevent/fast/events/reveal-link-when-focused.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/trustedeventsdefaultaction/fast/events/reveal-link-when-focused.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/prefer_compositing_to_lcd_text/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbars-on-positioned-content.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/prefer_compositing_to_lcd_text/scrollbars/short-scrollbar.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/threaded/compositing/visibility/visibility-image-layers.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/threaded/printing/return-from-printing-mode.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] fast/encoding/denormalised-voiced-japanese-chars.html [ ImageOnlyFailure ]
+crbug.com/509025 [ Yosemite ] compositing/iframes/iframe-copy-on-scroll.html [ Failure ]
+crbug.com/509025 [ Yosemite ] compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html [ Failure ]
+crbug.com/509025 [ Yosemite ] compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Failure Timeout ]
+crbug.com/509025 [ Yosemite ] compositing/plugins/composited-plugin.html [ Failure ]
+crbug.com/509025 [ Yosemite ] compositing/visibility/visibility-image-layers.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fonts/cursive.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fonts/default.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fonts/fantasy.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fonts/monospace.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fonts/sans-serif.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fonts/serif.html [ Failure ]
+crbug.com/509025 [ Yosemite ] http/tests/local/file-url-sent-as-referer.html [ Failure ]
+crbug.com/509025 [ Yosemite ] http/tests/mime/png-image-with-x-png-mime-type.html [ Failure ]
+crbug.com/509025 [ Yosemite ] http/tests/misc/iframe404.html [ Failure ]
+crbug.com/509025 [ Yosemite ] http/tests/misc/location-replace-crossdomain.html [ Failure ]
+crbug.com/509025 [ Yosemite ] http/tests/misc/object-embedding-svg-delayed-size-negotiation.xhtml [ Failure ]
+crbug.com/509025 [ Yosemite ] ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm [ Failure ]
+crbug.com/509025 [ Yosemite ] ietestcenter/css3/bordersbackgrounds/background-size-aspect-ratio.htm [ Failure ]
+crbug.com/509025 [ Yosemite ] ietestcenter/css3/bordersbackgrounds/background_position_three_four_values.htm [ Failure ]
+crbug.com/509025 [ Yosemite ] media/video-layer-crash.html [ Failure ]
+crbug.com/509025 [ Yosemite ] media/video-transformed.html [ Failure ]
+crbug.com/509025 [ Yosemite ] plugins/embed-attributes-style.html [ Failure ]
+crbug.com/509025 [ Yosemite ] printing/return-from-printing-mode.html [ Failure ]
+crbug.com/509025 [ Yosemite ] scrollbars/rtl/overflow-scroll-rtl.html [ Failure ]
+crbug.com/509025 [ Yosemite ] scrollbars/scrollbars-on-positioned-content.html [ Failure ]
+crbug.com/509025 [ Yosemite ] scrollbars/short-scrollbar.html [ Failure ]
+crbug.com/509025 [ Yosemite ] tables/layering/paint-test-layering-1.html [ Failure ]
+crbug.com/509025 [ Yosemite ] tables/layering/paint-test-layering-2.html [ Failure ]
+crbug.com/509025 [ Yosemite ] transforms/2d/transform-fixed-container.html [ Failure ]
+crbug.com/509025 [ Yosemite ] transforms/3d/point-mapping/3d-point-mapping-origins.html [ Failure ]
+crbug.com/509025 [ Yosemite ] transforms/3d/point-mapping/3d-point-mapping.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fast/text/atsui-rtl-override-selection.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fast/text/international/bdo-bidi-width.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/display_list_2d_canvas/fast/canvas/canvas-composite-video.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/pointerevent/fast/events/reveal-link-when-focused.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/trustedeventsdefaultaction/fast/events/reveal-link-when-focused.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/prefer_compositing_to_lcd_text/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbars-on-positioned-content.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/prefer_compositing_to_lcd_text/scrollbars/short-scrollbar.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/threaded/compositing/visibility/visibility-image-layers.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/threaded/printing/return-from-printing-mode.html [ Failure ]
+crbug.com/509025 [ Yosemite ] fast/encoding/denormalised-voiced-japanese-chars.html [ Failure ]
 crbug.com/509025 [ Yosemite ] fast/overflow/scrollRevealButton.html [ Failure ]
 crbug.com/509025 [ Yosemite ] fast/ruby/nested-ruby.html [ Failure ]
 crbug.com/509025 [ Yosemite ] fast/text/drawBidiText.html [ Failure ]
@@ -1842,9 +1853,9 @@
 crbug.com/509025 [ Yosemite ] virtual/pointerevent/fast/events/context-no-deselect.html [ Failure ]
 crbug.com/509025 [ Yosemite ] virtual/trustedeventsdefaultaction/fast/events/context-no-deselect.html [ Failure ]
 crbug.com/509025 [ Yosemite ] virtual/prefer_compositing_to_lcd_text/compositing/overflow/theme-affects-visual-overflow.html [ Failure ]
-crbug.com/509025 [ Yosemite ] virtual/rootlayerscrolls/scrollbars/rtl/overflow-scroll-rtl.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/rootlayerscrolls/scrollbars/scrollbars-on-positioned-content.html [ ImageOnlyFailure ]
-crbug.com/509025 [ Yosemite ] virtual/rootlayerscrolls/scrollbars/short-scrollbar.html [ ImageOnlyFailure ]
+crbug.com/509025 [ Yosemite ] virtual/rootlayerscrolls/scrollbars/rtl/overflow-scroll-rtl.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/rootlayerscrolls/scrollbars/scrollbars-on-positioned-content.html [ Failure ]
+crbug.com/509025 [ Yosemite ] virtual/rootlayerscrolls/scrollbars/short-scrollbar.html [ Failure ]
 
 crbug.com/472084 editing/execCommand/5136770.html [ NeedsRebaseline ]
 crbug.com/472084 editing/execCommand/5190926.html [ NeedsRebaseline ]
@@ -1860,7 +1871,7 @@
 crbug.com/532469 http/tests/security/cross-frame-access-custom.html [ NeedsManualRebaseline ]
 
 # Win10 specific failures that still need triaging.
-crbug.com/521730 [ Win10 ] fast/text/shaping/same-script-different-lang.html [ ImageOnlyFailure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/shaping/same-script-different-lang.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] fast/dom/Window/property-access-on-cached-properties-after-frame-navigated.html [ Failure ]
 crbug.com/521730 [ Win10 ] fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced.html [ Failure ]
 crbug.com/521730 [ Win10 ] fast/dom/Window/property-access-on-cached-properties-after-frame-removed.html [ Failure ]
@@ -1887,63 +1898,63 @@
 crbug.com/521730 [ Win10 ] virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html [ Failure ]
 crbug.com/521730 [ Win10 ] virtual/stable/webexposed/global-interface-listing.html [ Failure ]
 #crbug.com/521730 [ Win10 ] webexposed/global-interface-listing.html [ Failure ]
-crbug.com/521730 [ Win10 ] css3/flexbox/auto-margins.html [ ImageOnlyFailure ImageOnlyFailure ImageOnlyFailure Timeout ]
-crbug.com/521730 [ Win10 ] fast/forms/datetimelocal/datetimelocal-appearance-l10n.html [ ImageOnlyFailure Timeout ImageOnlyFailure Timeout ]
-crbug.com/521730 [ Win10 ] fast/forms/month/month-appearance-basic.html [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/forms/select/popup-menu-appearance-styled.html [ ImageOnlyFailure Timeout ImageOnlyFailure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/hackernews-comments.html [ Failure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/list-item-above-dbcat.html [ Failure Timeout Timeout Timeout ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/supercluster-multiple-layout.html [ ImageOnlyFailure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/fixed-table-single-cell-lots-of-text.html [ Failure Timeout ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] css3/flexbox/auto-margins.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/forms/datetimelocal/datetimelocal-appearance-l10n.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/forms/month/month-appearance-basic.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/forms/select/popup-menu-appearance-styled.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/hackernews-comments.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/list-item-above-dbcat.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/supercluster-multiple-layout.html [ Timeout Failure ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/fixed-table-single-cell-lots-of-text.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/nested-tables.html [ Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/single-percent-width-cell-lots-of-text.html [ Failure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/table-cell-inflation.html [ Failure Timeout ImageOnlyFailure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/table-for-layout.html [ Failure Timeout ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/single-percent-width-cell-lots-of-text.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/table-cell-inflation.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/table-for-layout.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/table-with-inline-block.html [ Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/wide-percentage-width.html [ Failure ImageOnlyFailure ImageOnlyFailure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/wide-percentage-width.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] fast/text-autosizing/tables/wide-specified-width.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] virtual/threaded/inspector/tracing/timeline-event-dispatch.html [ Failure ]
-crbug.com/521730 [ Win10 ] fast/text/atsui-kerning-and-ligatures.html [ Failure Timeout Timeout ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] fast/text/atsui-kerning-and-ligatures.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] fast/text/atsui-multiple-renderers.html [ Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/atsui-spacing-features.html [ Failure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/basic/009.html [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/basic/generic-family-changes.html [ Failure Timeout ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] fast/text/atsui-spacing-features.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/basic/009.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/basic/generic-family-changes.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] fast/text/capitalize-boundaries.html [ Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/drawBidiText.html [ Failure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/emoji-web-font.html [ Failure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/firstline/001.html [ ImageOnlyFailure ImageOnlyFailure Timeout Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/firstline/002.html [ Failure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/firstline/003.html [ ImageOnlyFailure ImageOnlyFailure Timeout Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/drawBidiText.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/emoji-web-font.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/firstline/001.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/firstline/002.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/firstline/003.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] fast/text/font-stretch.html [ Timeout Failure ]
 crbug.com/521730 [ Win10 ] fast/text/format-control.html [ Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/international/alef-connected.html [ ImageOnlyFailure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/international/bidi-linebreak-001.html [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/international/bidi-linebreak-003.html [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/international/bidi-word-spacing-rtl.html [ ImageOnlyFailure Timeout Timeout Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/international/inline-block-with-mixed-direction-words.html [ ImageOnlyFailure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/international/kana-voiced-sound-marks.html [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/international/mixed-directionality-selection.html [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/international/plane2.html [ Failure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/letter-spacing-negative-opacity.html [ Failure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/line-breaks-after-white-space.html [ ImageOnlyFailure ImageOnlyFailure ImageOnlyFailure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/line-breaks.html [ ImageOnlyFailure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/shadow-no-blur.html [ Failure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/text/stroking-decorations.html [ Failure ImageOnlyFailure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/trailing-white-space-2.html [ ImageOnlyFailure ImageOnlyFailure ImageOnlyFailure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/whitespace/nbsp-mode-and-linewraps.html [ Failure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/writing-mode/table-vertical-child-width.html [ ImageOnlyFailure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] fast/writing-mode/vertical-font-fallback.html [ ImageOnlyFailure ImageOnlyFailure Timeout Timeout ]
-crbug.com/521730 [ Win10 ] svg/W3C-I18N/text-dirLTR-ubNone.svg [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] svg/W3C-I18N/text-dirLTR-ubOverride.svg [ ImageOnlyFailure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubOverride-in-ltr-context.svg [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubEmbed-in-default-context.svg [ ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubNone-in-ltr-context.svg [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] svg/W3C-SVG-1.1/text-intro-03-b.svg [ ImageOnlyFailure ImageOnlyFailure Timeout ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] fast/text/international/alef-connected.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/bidi-linebreak-001.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/bidi-linebreak-003.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/bidi-word-spacing-rtl.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/inline-block-with-mixed-direction-words.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/kana-voiced-sound-marks.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/mixed-directionality-selection.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/plane2.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/letter-spacing-negative-opacity.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/line-breaks-after-white-space.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/line-breaks.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/shadow-no-blur.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/stroking-decorations.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/trailing-white-space-2.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/whitespace/nbsp-mode-and-linewraps.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/writing-mode/table-vertical-child-width.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/writing-mode/vertical-font-fallback.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] svg/W3C-I18N/text-dirLTR-ubNone.svg [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] svg/W3C-I18N/text-dirLTR-ubOverride.svg [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubOverride-in-ltr-context.svg [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubEmbed-in-default-context.svg [ Failure ]
+crbug.com/521730 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubNone-in-ltr-context.svg [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] svg/W3C-SVG-1.1/text-intro-03-b.svg [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] svg/batik/text/verticalText.svg [ Failure ]
-crbug.com/521730 [ Win10 ] svg/carto.net/combobox.svg [ ImageOnlyFailure Timeout ImageOnlyFailure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] svg/css/text-gradient-shadow.svg [ ImageOnlyFailure ImageOnlyFailure ImageOnlyFailure Timeout ]
+crbug.com/521730 [ Win10 ] svg/carto.net/combobox.svg [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] svg/css/text-gradient-shadow.svg [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] compositing/plugins/invalidate_rect.html [ Crash ]
-crbug.com/521730 [ Win10 ] compositing/squashing/squashing-print.html [ Crash ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] compositing/squashing/squashing-print.html [ Crash Failure ]
 crbug.com/521730 [ Win10 ] fast/replaced/no-focus-ring-embed.html [ Crash ]
 crbug.com/521730 [ Win10 ] fast/replaced/no-focus-ring-object.html [ Crash ]
 crbug.com/521730 [ Win10 ] fast/text-autosizing/print-autosizing.html [ Crash ]
@@ -1956,21 +1967,21 @@
 crbug.com/521730 [ Win10 ] plugins/tabindex.html [ Crash ]
 crbug.com/521730 [ Win10 ] plugins/windowless_plugin_paint_test.html [ Crash ]
 crbug.com/521730 [ Win10 ] printing/ellipsis-printing-style.html [ Crash ]
-crbug.com/521730 [ Win10 ] printing/iframe-print.html [ Crash Failure ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] printing/iframe-print.html [ Failure Crash ]
 crbug.com/521730 [ Win10 ] printing/print-no-background.html [ Crash ]
-crbug.com/521730 [ Win10 ] printing/quirks-percentage-height-body.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] printing/quirks-percentage-height.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] printing/simultaneous-position-float-change.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] printing/standards-percentage-heights.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] printing/subframes-percentage-height.html [ Crash Failure ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] printing/quirks-percentage-height-body.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] printing/quirks-percentage-height.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] printing/simultaneous-position-float-change.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] printing/standards-percentage-heights.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] printing/subframes-percentage-height.html [ Failure Crash ]
 crbug.com/521730 [ Win10 ] virtual/threaded/printing/ellipsis-printing-style.html [ Crash ]
-crbug.com/521730 [ Win10 ] virtual/threaded/printing/iframe-print.html [ Crash Failure ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] virtual/threaded/printing/iframe-print.html [ Failure Crash ]
 crbug.com/521730 [ Win10 ] virtual/threaded/printing/print-no-background.html [ Crash ]
-crbug.com/521730 [ Win10 ] virtual/threaded/printing/quirks-percentage-height-body.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] virtual/threaded/printing/quirks-percentage-height.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] virtual/threaded/printing/simultaneous-position-float-change.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] virtual/threaded/printing/standards-percentage-heights.html [ Crash Failure ImageOnlyFailure ]
-crbug.com/521730 [ Win10 ] virtual/threaded/printing/subframes-percentage-height.html [ Crash Failure ImageOnlyFailure ]
+crbug.com/521730 [ Win10 ] virtual/threaded/printing/quirks-percentage-height-body.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] virtual/threaded/printing/quirks-percentage-height.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] virtual/threaded/printing/simultaneous-position-float-change.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] virtual/threaded/printing/standards-percentage-heights.html [ Failure Crash ]
+crbug.com/521730 [ Win10 ] virtual/threaded/printing/subframes-percentage-height.html [ Failure Crash ]
 crbug.com/521730 [ Win10 ] virtual/threaded/printing/webgl-repeated-printing-preservedrawingbuffer.html [ Crash Failure ]
 crbug.com/521730 [ Win10 ] virtual/threaded/printing/webgl-repeated-printing.html [ Crash Failure ]
 #crbug.com/521730 [ Win10 ] imported/web-platform-tests/screen-orientation/lock-bad-argument.html [ Timeout ]
@@ -1980,23 +1991,23 @@
 crbug.com/521730 [ Win10 ] screen_orientation/orientationchange-event-subframe.html [ Timeout ]
 crbug.com/521730 [ Win10 ] screen_orientation/orientationchange-event.html [ Timeout ]
 crbug.com/521730 [ Win10 ] screen_orientation/page-visibility.html [ Timeout ]
-crbug.com/521730 [ Win10 ] fast/dynamic/text-combine.html [ Failure Failure Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/ruby/base-shorter-than-text.html [ Failure Failure Timeout Failure ]
-crbug.com/521730 [ Win10 ] fast/text/emphasis-combined-text.html [ Failure Timeout Failure Failure ]
-crbug.com/521730 [ Win10 ] fast/text/emphasis-complex.html [ Failure Timeout Failure Failure ]
-crbug.com/521730 [ Win10 ] fast/text/font-weight-variant.html [ Failure Timeout Failure Failure ]
-crbug.com/521730 [ Win10 ] fast/text/international/003.html [ Failure Timeout Failure Failure ]
-crbug.com/521730 [ Win10 ] fast/text/international/bold-bengali.html [ Failure Failure Timeout Failure ]
-crbug.com/521730 [ Win10 ] fast/text/international/complex-character-based-fallback.html [ Failure Timeout Timeout Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/international/hindi-spacing.html [ Failure Failure Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/international/hindi-whitespace.html [ Failure Failure Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/text/justify-ideograph-leading-expansion.html [ Failure Timeout Failure Timeout ]
-crbug.com/521730 [ Win10 ] fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure Failure Timeout Failure ]
-crbug.com/521730 [ Win10 ] fast/writing-mode/border-vertical-lr.html [ Failure Timeout Failure Failure ]
-crbug.com/521730 [ Win10 ] fast/writing-mode/japanese-ruby-vertical-lr.html [ Failure Failure Timeout Failure ]
+crbug.com/521730 [ Win10 ] fast/dynamic/text-combine.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/ruby/base-shorter-than-text.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/emphasis-combined-text.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/emphasis-complex.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/font-weight-variant.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/003.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/bold-bengali.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/complex-character-based-fallback.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/hindi-spacing.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/international/hindi-whitespace.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/text/justify-ideograph-leading-expansion.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/writing-mode/border-vertical-lr.html [ Failure Timeout ]
+crbug.com/521730 [ Win10 ] fast/writing-mode/japanese-ruby-vertical-lr.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] media/track/track-cue-rendering-vertical.html [ Failure ]
 crbug.com/521730 [ Win10 ] svg/W3C-SVG-1.1-SE/text-intro-05-t.svg [ Failure ]
-crbug.com/521730 [ Win10 ] svg/W3C-SVG-1.1/text-align-08-b.svg [ Failure Timeout Failure Failure ]
+crbug.com/521730 [ Win10 ] svg/W3C-SVG-1.1/text-align-08-b.svg [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] virtual/display_list_2d_canvas/fast/canvas/canvas-lose-restore-max-int-size.html [ Failure ]
 crbug.com/521730 [ Win10 ] virtual/trustedeventsdefaultaction/fast/events/drag-svg-image-crash.html [ Timeout ]
 crbug.com/521730 [ Win10 ] webexposed/global-interface-listing.html [ Failure ]
@@ -2037,12 +2048,12 @@
 crbug.com/521730 [ Win10 ] inspector/file-reader-with-network-panel.html [ Failure Pass ]
 crbug.com/521730 [ Win10 ] inspector/sources/debugger-step/debugger-step-out-document-write.html [ Pass Timeout ]
 crbug.com/521730 [ Win10 ] media/W3C/audio/error/error_onerror_called_on_bogus_source.html [ Pass Timeout ]
-crbug.com/521730 [ Win10 ] paint/inline/outline-offset.html [ ImageOnlyFailure Timeout ]
+crbug.com/521730 [ Win10 ] paint/inline/outline-offset.html [ Failure Timeout ]
 crbug.com/521730 [ Win10 ] svg/as-image/svg-object-intrinsic-size.html [ Missing Timeout ]
 crbug.com/521730 [ Win10 ] svg/as-object/nested-embedded-svg-size-changes.html [ Pass Timeout ]
 crbug.com/521730 [ Win10 ] svg/custom/rounded-rect-update-to-empty.html [ Pass Timeout ]
 # TODO(wangxianzhu): Restore this after manual rebaseline.
-# crbug.com/521730 [ Win10 ] transforms/2d/transform-borderbox.html [ ImageOnlyFailure Timeout ]
+# crbug.com/521730 [ Win10 ] transforms/2d/transform-borderbox.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] virtual/gpu/fast/canvas/canvas-composite-transformclip.html [ Timeout ]
 crbug.com/521764 [ Win10 ] imported/web-platform-tests/screen-orientation/lock-bad-argument.html [ Timeout Failure ]
 crbug.com/521764 [ Win10 ] accessibility/is-richly-editable.html [ Failure Pass ]
@@ -2057,7 +2068,7 @@
 crbug.com/521764 [ Win10 ] fast/canvas/canvas-lose-restore-googol-size.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/canvas/canvas-lose-restore-max-int-size.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/canvas/webgl/texture-color-profile.html [ Failure Pass ]
-crbug.com/521764 [ Win10 ] fast/css/line-height-determined-by-primary-font.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/css/line-height-determined-by-primary-font.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/dom/HTMLImageElement/image-srcset-in-iframe-external.html [ Pass Timeout ]
 crbug.com/521764 [ Win10 ] fast/dom/HTMLLinkElement/subresource.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/dom/shadow/event-path-load.html [ Pass Timeout ]
@@ -2065,11 +2076,11 @@
 crbug.com/521764 [ Win10 ] fast/dom/shadow/iframe-shadow.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/dom/wrapper-classes.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/events/touch/gesture/pad-gesture-cancel.html [ Failure Pass ]
-crbug.com/521764 [ Win10 ] fast/forms/month/month-appearance-l10n.html [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] fast/forms/month/month-appearance-pseudo-elements.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/forms/month/month-appearance-l10n.html [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] fast/forms/month/month-appearance-pseudo-elements.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/forms/search/search-appearance-basic.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/html/imports/rel-style-to-import.html [ Pass Timeout ]
-crbug.com/521764 [ Win10 ] fast/inline/justify-emphasis-inline-box.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/inline/justify-emphasis-inline-box.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/loader/scroll-restore-overrides-fragment.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/loader/scroll-restore-target-pseudo.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/preloader/input.html [ Failure Pass ]
@@ -2090,15 +2101,15 @@
 crbug.com/521764 [ Win10 ] fast/text/basic/013.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/basic/generic-family-reset.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/cg-fallback-bolding.html [ Failure Timeout ]
-crbug.com/521764 [ Win10 ] fast/text/cg-vs-atsui.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/text/cg-vs-atsui.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/decorations-with-text-combine.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/emoticons.html [ Failure Timeout ]
-crbug.com/521764 [ Win10 ] fast/text/emphasis-ellipsis-complextext.html [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] fast/text/font-ascent-mac.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/text/emphasis-ellipsis-complextext.html [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] fast/text/font-ascent-mac.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/font-stretch-variant.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/font-weight.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/international/002.html [ Failure Timeout ]
-crbug.com/521764 [ Win10 ] fast/text/international/bidi-linebreak-002.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/text/international/bidi-linebreak-002.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/international/danda-space.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/international/hebrew-vowels.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/international/khmer-selection.html [ Failure Timeout ]
@@ -2111,17 +2122,17 @@
 crbug.com/521764 [ Win10 ] fast/text/selection-multiple-runs.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/stroking.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/sub-pixel/text-scaling-pixel.html [ Failure Timeout ]
-crbug.com/521764 [ Win10 ] fast/text/trailing-white-space.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/text/trailing-white-space.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/text/wide-zero-width-space.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/tokenizer/001.html [ Pass Timeout ]
-crbug.com/521764 [ Win10 ] fast/writing-mode/fallback-orientation.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/writing-mode/fallback-orientation.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/writing-mode/japanese-lr-text.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/writing-mode/japanese-rl-text.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/writing-mode/japanese-ruby-horizontal-bt.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] fast/writing-mode/japanese-ruby-vertical-rl.html [ Failure Timeout ]
-crbug.com/521764 [ Win10 ] fast/writing-mode/vertical-align-table-baseline.html [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] fast/writing-mode/vertical-baseline-alignment.html [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] fonts/fantasy.html [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] fast/writing-mode/vertical-align-table-baseline.html [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] fast/writing-mode/vertical-baseline-alignment.html [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] fonts/fantasy.html [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] http/tests/inspector/network/network-xhr-redirect-method.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] http/tests/inspector/resource-tree/resource-tree-document-url.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny.html [ Failure Pass ]
@@ -2129,8 +2140,8 @@
 crbug.com/521764 [ Win10 ] http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] http/tests/security/suborigins/suborigin-valid-names.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] http/tests/xmlhttprequest/xmlhttprequest-post-crash.html [ Pass Timeout ]
-crbug.com/521764 [ Win10 ] ietestcenter/css3/text/textshadow-002.htm [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] ietestcenter/css3/text/textshadow-010.htm [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] ietestcenter/css3/text/textshadow-002.htm [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] ietestcenter/css3/text/textshadow-010.htm [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] inspector/console/console-format-table.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] inspector/editor/text-editor-search-switch-editor.html [ Pass Timeout ]
 crbug.com/521764 [ Win10 ] inspector/elements/styles-4/styles-should-not-force-sync-style-recalc.html [ Failure Pass ]
@@ -2143,53 +2154,53 @@
 crbug.com/521764 [ Win10 ] media/video-source-error.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] printing/return-from-printing-mode.html [ Pass Timeout ]
 crbug.com/521764 [ Win10 ] printing/webgl-repeated-printing-preservedrawingbuffer.html [ Crash Failure ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirLTR-ubNone.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirLTR-ubOverride.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirRTL-ubNone.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirRTL-ubOverride.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirLTR-anchorEnd.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirLTR-anchorMiddle.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirLTR-anchorStart.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirNone-anchorEnd.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirNone-anchorMiddle.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirNone-anchorStart.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirRTL-anchorEnd.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirRTL-anchorMiddle.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirRTL-anchorStart.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorEnd.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorMiddle.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorStart.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorEnd.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorMiddle.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorStart.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-no-markup.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-dirRTL-ubNone.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-dirRTL-ubOverride.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubEmbed-in-rtl-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubNone-in-rtl-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubOverride-in-default-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubOverride-in-rtl-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirNone-ubOverride-in-default-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirNone-ubOverride-in-ltr-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirNone-ubOverride-in-rtl-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubEmbed-in-ltr-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubNone-in-default-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubOverride-in-default-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubOverride-in-ltr-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubOverride-in-rtl-context.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-direction-ltr.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-direction-rtl.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/W3C-SVG-1.1/text-fonts-01-t.svg [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirLTR-ubNone.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirLTR-ubOverride.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirRTL-ubNone.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/g-dirRTL-ubOverride.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirLTR-anchorEnd.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirLTR-anchorMiddle.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirLTR-anchorStart.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirNone-anchorEnd.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirNone-anchorMiddle.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirNone-anchorStart.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirRTL-anchorEnd.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirRTL-anchorMiddle.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-dirRTL-anchorStart.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorEnd.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorMiddle.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorStart.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorEnd.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorMiddle.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorStart.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-anchor-no-markup.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-dirRTL-ubNone.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/text-dirRTL-ubOverride.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubEmbed-in-rtl-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubNone-in-rtl-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubOverride-in-default-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirLTR-ubOverride-in-rtl-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirNone-ubOverride-in-default-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirNone-ubOverride-in-ltr-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirNone-ubOverride-in-rtl-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubEmbed-in-ltr-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubNone-in-default-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubOverride-in-default-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubOverride-in-ltr-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-dirRTL-ubOverride-in-rtl-context.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-direction-ltr.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-I18N/tspan-direction-rtl.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/W3C-SVG-1.1/text-fonts-01-t.svg [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] svg/W3C-SVG-1.1/text-intro-01-t.svg [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] svg/W3C-SVG-1.1/text-intro-04-t.svg [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] svg/as-image/svg-canvas-xhtml-tainted.html [ Failure Pass ]
-crbug.com/521764 [ Win10 ] svg/css/text-shadow-multiple.xhtml [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/custom/focus-ring-text.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/custom/textPath-change-id2-pattern.svg [ ImageOnlyFailure Pass Timeout ]
-crbug.com/521764 [ Win10 ] svg/text/bidi-text-query.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/text/bidi-tspans.svg [ ImageOnlyFailure Timeout ]
-crbug.com/521764 [ Win10 ] svg/text/obb-paintserver.html [ ImageOnlyFailure Pass Timeout ]
-crbug.com/521764 [ Win10 ] svg/text/text-selection-fonts-01-t.svg [ ImageOnlyFailure Timeout ]
+crbug.com/521764 [ Win10 ] svg/css/text-shadow-multiple.xhtml [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/custom/focus-ring-text.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/custom/textPath-change-id2-pattern.svg [ Failure Pass Timeout ]
+crbug.com/521764 [ Win10 ] svg/text/bidi-text-query.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/text/bidi-tspans.svg [ Failure Timeout ]
+crbug.com/521764 [ Win10 ] svg/text/obb-paintserver.html [ Failure Pass Timeout ]
+crbug.com/521764 [ Win10 ] svg/text/text-selection-fonts-01-t.svg [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] svg/text/text-selection-intro-05-t.svg [ Failure Timeout ]
 crbug.com/521764 [ Win10 ] animations/interpolation/background-position-origin-interpolation.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] animations/interpolation/background-size-interpolation.html [ Failure Pass ]
@@ -2227,20 +2238,20 @@
 crbug.com/521764 [ Win10 ] plugins/netscape-plugin-map-data-to-src.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] plugins/update-widgets-crash.html [ Pass Timeout ]
 crbug.com/521764 [ Win10 ] printing/webgl-repeated-printing.html [ Crash Timeout Failure ]
-crbug.com/521764 [ Win10 ] svg/custom/textPath-remove-path-pattern.svg [ ImageOnlyFailure Pass Timeout ]
+crbug.com/521764 [ Win10 ] svg/custom/textPath-remove-path-pattern.svg [ Failure Pass Timeout ]
 crbug.com/521764 [ Win10 ] accessibility/inline-text-changes.html [ Failure Pass ]
 crbug.com/521764 [ Win10 ] fast/loader/javascript-detached-frame-no-crash.html [ Pass Timeout ]
 crbug.com/521764 [ Win10 ] virtual/display_list_2d_canvas/fast/canvas/canvas-resize-reset.html [ Pass Timeout ]
 crbug.com/521764 [ Win10 ] transitions/equivalent-background-image-no-transition.html [ Pass Timeout ]
 
-crbug.com/474759 fast/writing-mode/vertical-rl-replaced-selection.html [ ImageOnlyFailure ]
-crbug.com/474759 fast/block/line-layout/selection-highlight-overlap.html [ ImageOnlyFailure ]
+crbug.com/474759 fast/writing-mode/vertical-rl-replaced-selection.html [ Failure ]
+crbug.com/474759 fast/block/line-layout/selection-highlight-overlap.html [ Failure ]
 crbug.com/502927 [ XP ] paint/frames/frameset-with-stacking-context-and-not-stacking-context-children.html [ Failure ]
 crbug.com/502927 [ XP ] paint/frames/frameset-with-stacking-contexts.html [ Failure ]
 crbug.com/502927 [ XP ] virtual/spv2/paint/frames/frameset-with-stacking-context-and-not-stacking-context-children.html [ Skip ]
 crbug.com/502927 [ XP ] virtual/spv2/paint/frames/frameset-with-stacking-contexts.html [ Skip ]
 
-crbug.com/353746 virtual/android/fullscreen/video-specified-size.html [ ImageOnlyFailure Pass ]
+crbug.com/353746 virtual/android/fullscreen/video-specified-size.html [ Failure Pass ]
 
 crbug.com/524764 [ Win10 ] virtual/trustedeventsdefaultaction/fast/events/selectstart-prevent-selectall.html [ Failure Pass ]
 crbug.com/524764 [ Win10 ] virtual/pointerevent/fast/events/selectstart-prevent-selectall.html [ Failure Pass ]
@@ -2305,11 +2316,11 @@
 crbug.com/532643 [ Mac ] virtual/pointerevent/fast/events/hit-test-cache-scrollbar-no-crash.html [ Pass Failure ]
 
 # The Win10 result for fast/text/emoji-font-fallback-win.html does not match the description
-crbug.com/527044 [ Win10 ] fast/text/emoji-font-fallback-win.html [ ImageOnlyFailure Timeout ]
+crbug.com/527044 [ Win10 ] fast/text/emoji-font-fallback-win.html [ Failure Timeout ]
 
 crbug.com/525065 webaudio/audionode-disconnect-audioparam.html [ Failure Pass ]
 
-crbug.com/525296 fast/css/font-load-while-styleresolver-missing.html [ Crash ImageOnlyFailure Pass ]
+crbug.com/525296 fast/css/font-load-while-styleresolver-missing.html [ Crash Failure Pass ]
 
 crbug.com/525299 [ MountainLion Mavericks XP Win10 ] http/tests/security/redirect-BLOCKED-to-localURL.html [ Failure Pass ]
 
@@ -2319,15 +2330,15 @@
 
 crbug.com/538525 [ Lion ] virtual/threaded/animations/multiple-same-animations-asan-crash.html [ Crash ]
 
-crbug.com/538526 [ Win7 Win10 ] virtual/spv2/paint/invalidation/spv2/fixed-img-src-change-after-scroll.html [ ImageOnlyFailure ]
+crbug.com/538526 [ Win7 Win10 ] virtual/spv2/paint/invalidation/spv2/fixed-img-src-change-after-scroll.html [ Failure ]
 
 crbug.com/527743 [ Win10 ] paint/masks/table-cell-masks.html [ Pass Timeout ]
 
-crbug.com/531286 virtual/gpu/fast/canvas/yuv-video-on-accelerated-canvas.html [ ImageOnlyFailure ]
+crbug.com/531286 virtual/gpu/fast/canvas/yuv-video-on-accelerated-canvas.html [ Failure ]
 
 crbug.com/535478 [ Win ] virtual/threaded/inspector/tracing/decode-resize.html [ Slow Pass Failure ]
 
-crbug.com/524646 [ Yosemite ] fast/dom/shadow/shadowdom-for-button.html [ ImageOnlyFailure ]
+crbug.com/524646 [ Yosemite ] fast/dom/shadow/shadowdom-for-button.html [ Failure ]
 
 crbug.com/502267 fast/css/image-orientation/image-orientation-from-image-composited-dynamic.html [ NeedsRebaseline ]
 crbug.com/502267 fast/css/image-orientation/image-orientation-default.html [ NeedsRebaseline ]
@@ -2373,6 +2384,6 @@
 crbug.com/522389 [ Linux Mac Win ] fast/overflow/overflow-update-transform.html [ NeedsRebaseline ]
 crbug.com/522389 [ Linux Mac Win ] virtual/prefer_compositing_to_lcd_text/compositing/overflow/nested-render-surfaces-with-rotation.html [ NeedsRebaseline ]
 
-crbug.com/541601 svg/overflow/overflow-on-outermost-svg-element-in-xhtml-defaults.xhtml [ ImageOnlyFailure ]
+crbug.com/541601 svg/overflow/overflow-on-outermost-svg-element-in-xhtml-defaults.xhtml [ Failure ]
 
-crbug.com/543369 [ Linux ] fast/forms/select/popup-menu-appearance-tall.html [ ImageOnlyFailure ]
+crbug.com/543369 [ Linux ] fast/forms/select/popup-menu-appearance-tall.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/animations/delay-timer-cancel-bug.html b/third_party/WebKit/LayoutTests/animations/delay-timer-cancel-bug.html
new file mode 100644
index 0000000..43d6c44
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/delay-timer-cancel-bug.html
@@ -0,0 +1,15 @@
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<div id="target"></div>
+<script>
+var asyncHandle = async_test('Delayed animations are unaffected by on demand timeline updates.');
+target.animate(null, {delay: 100}).onfinish = () => asyncHandle.done();
+requestAnimationFrame(() => {
+  requestAnimationFrame(() => {
+    setTimeout(() => {
+      // Force layout tree update which forces an on demand timing update.
+      target.offsetTop;
+    }, 0);
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/animations/multiple-same-animations-asan-crash.html b/third_party/WebKit/LayoutTests/animations/multiple-same-animations-asan-crash.html
index 42a4fdd..3a223974 100644
--- a/third_party/WebKit/LayoutTests/animations/multiple-same-animations-asan-crash.html
+++ b/third_party/WebKit/LayoutTests/animations/multiple-same-animations-asan-crash.html
@@ -16,8 +16,6 @@
   // Force the next style recalc to be non-animation triggered.
   target.style.color = 'blue';
   requestAnimationFrame(function() {
-    // Clear the running animations to avoid hitting a debug assertion. (crbug.com/487092)
-    target.style.animation = 'none';
     asyncHandle.done();
   });
 });
diff --git a/third_party/WebKit/LayoutTests/animations/multiple-same-name-css-animations.html b/third_party/WebKit/LayoutTests/animations/multiple-same-name-css-animations.html
new file mode 100644
index 0000000..fe1c3f2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/multiple-same-name-css-animations.html
@@ -0,0 +1,139 @@
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<style>
+@keyframes a {}
+@keyframes b {}
+</style>
+<div id="target"></div>
+<script>
+function setAnimationProperty(value) {
+  target.style.animation = value;
+  target.offsetTop;
+}
+
+function getAnimations() {
+  return document.timeline.getAnimations();
+}
+
+function clearAnimations() {
+  setAnimationProperty('none');
+  assert_equals(getAnimations().length, 0);
+}
+
+test(() => {
+  clearAnimations();
+  setAnimationProperty('a 1000ms 1500ms forwards, a 2000ms 2500ms backwards, a 3000ms 3500ms both');
+  var animations = getAnimations();
+  assert_equals(animations.length, 3);
+  assert_equals(animations[0].effect.timing.duration, 1000);
+  assert_equals(animations[0].effect.timing.delay, 1500);
+  assert_equals(animations[0].effect.timing.fill, 'forwards');
+
+  assert_equals(animations[1].effect.timing.duration, 2000);
+  assert_equals(animations[1].effect.timing.delay, 2500);
+  assert_equals(animations[1].effect.timing.fill, 'backwards');
+
+  assert_equals(animations[2].effect.timing.duration, 3000);
+  assert_equals(animations[2].effect.timing.delay, 3500);
+  assert_equals(animations[2].effect.timing.fill, 'both');
+}, 'Multiple same animation names should start multiple animations.');
+
+test(() => {
+  clearAnimations();
+
+  setAnimationProperty('a 1500ms paused, a 2500ms paused, a 3500ms paused');
+  var animations = getAnimations();
+  assert_equals(animations.length, 3);
+  animations[0].currentTime = 1000;
+  animations[1].currentTime = 2000;
+  animations[2].currentTime = 3000;
+
+  setAnimationProperty('a 1750ms paused, a 2750ms paused, a 3750ms paused');
+  animations = getAnimations();
+  assert_equals(animations.length, 3);
+
+  assert_equals(animations[0].currentTime, 1000);
+  assert_equals(animations[0].effect.timing.duration, 1750);
+
+  assert_equals(animations[1].currentTime, 2000);
+  assert_equals(animations[1].effect.timing.duration, 2750);
+
+  assert_equals(animations[2].currentTime, 3000);
+  assert_equals(animations[2].effect.timing.duration, 3750);
+}, 'Multiple same animation names should persist with animation timing updates.');
+
+test(() => {
+  clearAnimations();
+
+  setAnimationProperty('a 1500ms paused, a 2500ms paused, b 3500ms paused, b 4500ms paused');
+  var animations = getAnimations();
+  assert_equals(animations.length, 4);
+  animations[0].currentTime = 1000;
+  animations[1].currentTime = 2000;
+  animations[2].currentTime = 3000;
+  animations[3].currentTime = 4000;
+
+  setAnimationProperty('a 1500ms paused, b 3500ms paused, a 2500ms paused, b 4500ms paused');
+  animations = getAnimations();
+  assert_equals(animations.length, 4);
+
+  assert_equals(animations[0].currentTime, 1000);
+  assert_equals(animations[0].effect.timing.duration, 1500);
+
+  assert_equals(animations[1].currentTime, 2000);
+  assert_equals(animations[1].effect.timing.duration, 2500);
+
+  assert_equals(animations[2].currentTime, 3000);
+  assert_equals(animations[2].effect.timing.duration, 3500);
+
+  assert_equals(animations[3].currentTime, 4000);
+  assert_equals(animations[3].effect.timing.duration, 4500);
+}, 'Mixed multiple same animation names should persist based on their same name relative position');
+
+test(() => {
+  clearAnimations();
+
+  setAnimationProperty('a 1500ms paused, a 2500ms paused, a 3500ms paused');
+  var animations = getAnimations();
+  assert_equals(animations.length, 3);
+  animations[0].currentTime = 1000;
+  animations[1].currentTime = 2000;
+  animations[2].currentTime = 3000;
+
+  setAnimationProperty('a 1500ms paused, b 2500ms paused, a 3500ms paused');
+  animations = getAnimations();
+  assert_equals(animations.length, 3);
+
+  assert_equals(animations[0].currentTime, 1000);
+  assert_equals(animations[0].effect.timing.duration, 1500);
+
+  assert_equals(animations[1].currentTime, 2000);
+  assert_equals(animations[1].effect.timing.duration, 3500);
+
+  assert_equals(animations[2].currentTime, null);
+  assert_equals(animations[2].effect.timing.duration, 2500);
+}, 'Removing same animation names should cancel animations from the end of the name list.');
+
+test(() => {
+  clearAnimations();
+
+  setAnimationProperty('a 1500ms paused, a 2500ms paused');
+  var animations = getAnimations();
+  assert_equals(animations.length, 2);
+  animations[0].currentTime = 1000;
+  animations[1].currentTime = 2000;
+
+  setAnimationProperty('a 3500ms paused, a 2500ms paused, a 1500ms paused');
+  animations = getAnimations();
+  assert_equals(animations.length, 3);
+
+  assert_equals(animations[0].currentTime, 1000);
+  assert_equals(animations[0].effect.timing.duration, 3500);
+
+  assert_equals(animations[1].currentTime, 2000);
+  assert_equals(animations[1].effect.timing.duration, 2500);
+
+  assert_equals(animations[2].currentTime, null);
+  assert_equals(animations[2].effect.timing.duration, 1500);
+}, 'Adding same animation names should start additional animations from the end of the name list.');
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Element/classlist-empty-string-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Element/classlist-empty-string-expected.txt
new file mode 100644
index 0000000..361da39
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/Element/classlist-empty-string-expected.txt
@@ -0,0 +1,7 @@
+Check the classlist length attribute for empty strings
+PASS div.className.length is 3
+PASS div.className.length is 5
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Element/classlist-empty-string.html b/third_party/WebKit/LayoutTests/fast/dom/Element/classlist-empty-string.html
new file mode 100644
index 0000000..5d6da58
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/Element/classlist-empty-string.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<script src="../../../resources/js-test.js"></script>
+<script>
+debug("Check the classlist length attribute for empty strings");
+var div = document.createElement('div');
+div.className = '   ';
+shouldBe("div.className.length", "3");
+
+div.className = '     ';
+shouldBe("div.className.length", "5");
+</script>
+</html>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/access-key-iframe.html b/third_party/WebKit/LayoutTests/fast/dom/access-key-iframe.html
index 01762c9..8895a92 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/access-key-iframe.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/access-key-iframe.html
@@ -10,11 +10,7 @@
 
 function pressAccessKey(key)
 {
-    if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-        modifiers = ["ctrlKey", "altKey"];
-    else
-        modifiers = ["altKey"];
-    eventSender.keyDown(key, modifiers);
+    eventSender.keyDown(key, "accessKey");
 }
 
 var targetsOfFocusEvents = [];
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter-expected.txt
index 34de767..edbe6520 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter-expected.txt
@@ -1,15 +1,15 @@
-Create open shadow root.
+Attach open shadow root.
 PASS [object ShadowRoot] is non-null.
-Create closed shadow root.
+Attach closed shadow root.
 PASS host2.createShadowRoot({mode: 'closed'}) is non-null.
 Create shadow root with empty parameter.
 PASS [object ShadowRoot] is non-null.
-Create shadow root whose mode is neither open nor closed.
-PASS host4.createShadowRoot({mode: 'illegal'}) threw exception TypeError: Failed to execute 'createShadowRoot' on 'Element': The provided value 'illegal' is not a valid enum value of type ShadowRootMode..
-Create open shadow root with shadow-dom.js utility.
+Attach shadow root whose mode is neither open nor closed.
+PASS host4.attachShadow({mode: 'illegal'}) threw exception TypeError: Failed to execute 'attachShadow' on 'Element': The provided value 'illegal' is not a valid enum value of type ShadowRootMode..
+Attach open shadow root with shadow-dom.js utility.
 PASS [object ShadowRoot] is non-null.
-Create shadow root on already shadowed host will raise InvalidStateError exception.
-PASS host1.createShadowRoot({mode: 'open'}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+Attach shadow root on already shadowed host will raise InvalidStateError exception.
+PASS host1.attachShadow({mode: 'open'}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter.html
index 1719162..0dedf12e 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/create-shadow-root-with-parameter.html
@@ -11,12 +11,12 @@
  <div id="host4"></div>
 </body>
 <script>
-debug('Create open shadow root.');
+debug('Attach open shadow root.');
 var host1 = document.querySelector('#host1');
-var root1 = host1.createShadowRoot({mode: 'open'});
+var root1 = host1.attachShadow({mode: 'open'});
 shouldBeNonNull(root1);
 
-debug('Create closed shadow root.');
+debug('Attach closed shadow root.');
 var host2 = document.querySelector('#host2');
 shouldBeNonNull("host2.createShadowRoot({mode: 'closed'})");
 
@@ -25,11 +25,11 @@
 var root3 = host3.createShadowRoot({});
 shouldBeNonNull(root3);
 
-debug('Create shadow root whose mode is neither open nor closed.');
+debug('Attach shadow root whose mode is neither open nor closed.');
 var host4 = document.querySelector('#host4');
-shouldThrow("host4.createShadowRoot({mode: 'illegal'})");
+shouldThrow("host4.attachShadow({mode: 'illegal'})");
 
-debug('Create open shadow root with shadow-dom.js utility.');
+debug('Attach open shadow root with shadow-dom.js utility.');
 document.body.appendChild(
     createDOM('div', {id: 'host5'},
         createShadowRoot({mode: 'open'})));
@@ -37,7 +37,7 @@
 var root5 = host5.shadowRoot;
 shouldBeNonNull(root5);
 
-debug('Create shadow root on already shadowed host will raise InvalidStateError exception.');
-shouldThrow("host1.createShadowRoot({mode: 'open'})");
+debug('Attach shadow root on already shadowed host will raise InvalidStateError exception.');
+shouldThrow("host1.attachShadow({mode: 'open'})");
 </script>
 </html>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/delegatesFocus-highlight-sibling.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/delegatesFocus-highlight-sibling.html
index e313263..704553ea 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/delegatesFocus-highlight-sibling.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/delegatesFocus-highlight-sibling.html
@@ -45,7 +45,7 @@
   var xMenuProto = Object.create(HTMLElement.prototype);
   xMenuProto.createdCallback = function() {
     var delegatesFocus = this.hasAttribute('delegatesFocus');
-    this.createShadowRoot({ 'delegatesFocus': delegatesFocus })
+    this.attachShadow({ 'delegatesFocus': delegatesFocus })
     .appendChild(
       document.importNode(template.content, true)
     );
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-method-with-delegatesFocus.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-method-with-delegatesFocus.html
index a4674ab..8efe716 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-method-with-delegatesFocus.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-method-with-delegatesFocus.html
@@ -29,7 +29,7 @@
     var proto = Object.create(HTMLElement.prototype);
     proto.createdCallback = function() {
         var delegatesFocus = this.hasAttribute('delegatesFocus');
-        this.createShadowRoot({'delegatesFocus': delegatesFocus}).appendChild(
+        this.attachShadow({'delegatesFocus': delegatesFocus}).appendChild(
             document.importNode(template.content, true));
     };
     document.registerElement(tagName, { prototype: proto });
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-shadowhost-display-none.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-shadowhost-display-none.html
index 01c2fe2..6a6f7f9 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-shadowhost-display-none.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-shadowhost-display-none.html
@@ -17,7 +17,7 @@
     host = sandbox.appendChild(document.createElement('div'));
     host.id = 'host';
 
-    root = host.createShadowRoot({ 'delegatesFocus': delegatesFocus });
+    root = host.attachShadow({ 'delegatesFocus': delegatesFocus });
     input = document.createElement('input');
     root.appendChild(input);
 
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params-expected.txt
index 9f8785f..4376993 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params-expected.txt
@@ -5,37 +5,32 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-(1/1) For compatibility, no parameter createShadowRoot() can still create multiple shadow roots.
-PASS internals.shadowRootType(shadow1) is "OpenByDefaultShadowRoot"
-PASS internals.shadowRootType(shadow2) is "OpenByDefaultShadowRoot"
+createShadowRoot() can still create multiple shadow roots.
+PASS internals.shadowRootType(shadow1) is "V0ShadowRoot"
+PASS internals.shadowRootType(shadow2) is "V0ShadowRoot"
 PASS internals.youngestShadowRoot(div) is shadow2
 PASS shadow2.olderShadowRoot is shadow1
-(2/2) createShadowRoot({mode:"open"}) cannot create multiple shadow roots
-PASS internals.shadowRootType(shadow1) is "OpenByDefaultShadowRoot"
-PASS div.createShadowRoot({mode: "open"}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+Other attempts to create multiple shadow roots should fail
+PASS internals.shadowRootType(shadow1) is "V0ShadowRoot"
+PASS div.attachShadow({mode: "open"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+PASS div.attachShadow({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
 PASS internals.youngestShadowRoot(div) is shadow1
-(3/3) createShadowRoot() cannot create multiple shadow roots on shadow root with explicit open parameter.
 PASS internals.shadowRootType(shadow1) is "OpenShadowRoot"
 PASS div.createShadowRoot() threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts this type of shadow tree..
+PASS div.attachShadow({mode: "open"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+PASS div.attachShadow({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
 PASS internals.youngestShadowRoot(div) is shadow1
-(4/4) closed shadow root cannot be created on any open shadow roots
-PASS internals.shadowRootType(shadow1) is "OpenByDefaultShadowRoot"
-PASS div.createShadowRoot({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
-PASS internals.youngestShadowRoot(div) is shadow1
-PASS internals.shadowRootType(shadow1) is "OpenShadowRoot"
-PASS div.createShadowRoot({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
-PASS internals.youngestShadowRoot(div) is shadow1
-(5/5) any shadow root cannot be created on closed shadow root
 PASS internals.shadowRootType(shadow1) is "ClosedShadowRoot"
 PASS div.createShadowRoot() threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts this type of shadow tree..
-PASS div.createShadowRoot({mode: "open"}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
-PASS div.createShadowRoot({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
-(6/6) explicitly open/closed shadow root cannot be created on UA shadow root
+PASS div.attachShadow({mode: "open"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+PASS div.attachShadow({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+PASS internals.youngestShadowRoot(div) is shadow1
+V1 shadow root cannot be created on UA shadow root
 PASS internals.shadowRootType(internals.shadowRoot(input)) is "UserAgentShadowRoot"
 PASS internals.youngestShadowRoot(input) is shadow1
-PASS internals.shadowRootType(shadow1) is "OpenByDefaultShadowRoot"
-PASS input.createShadowRoot({mode: "open"}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
-PASS input.createShadowRoot({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'createShadowRoot' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+PASS internals.shadowRootType(shadow1) is "V0ShadowRoot"
+PASS input.attachShadow({mode: "open"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
+PASS input.attachShadow({mode: "closed"}) threw exception InvalidStateError: Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree..
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params.html
index 4f1e3cc..50f10a6 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/multiple-shadowroot-with-params.html
@@ -3,8 +3,8 @@
 <script>
 description('This tests multiple shadow roots creation with createShadowRoot and mode parameter.');
 
-function shouldBeOpenByDefaultShadowRoot(root) {
-    shouldBeEqualToString('internals.shadowRootType(' + root + ')', 'OpenByDefaultShadowRoot');
+function shouldBeV0ShadowRoot(root) {
+    shouldBeEqualToString('internals.shadowRootType(' + root + ')', 'V0ShadowRoot');
 }
 
 function shouldBeOpenShadowRoot(root) {
@@ -23,72 +23,52 @@
     shouldBe('internals.youngestShadowRoot(' + host + ')', root);
 }
 
-debug('(1/1) For compatibility, no parameter createShadowRoot() can still create multiple shadow roots.');
+debug('createShadowRoot() can still create multiple shadow roots.');
+
 var div = document.createElement('div');
 var shadow1 = div.createShadowRoot();
-shouldBeOpenByDefaultShadowRoot('shadow1');
-
+shouldBeV0ShadowRoot('shadow1');
 var shadow2 = div.createShadowRoot();
-shouldBeOpenByDefaultShadowRoot('shadow2');
-
+shouldBeV0ShadowRoot('shadow2');
 youngestShadowRootShouldBe('div', 'shadow2');
 shouldBe('shadow2.olderShadowRoot', 'shadow1');
 
+debug('Other attempts to create multiple shadow roots should fail');
 
-debug('(2/2) createShadowRoot({mode:"open"}) cannot create multiple shadow roots');
 div = document.createElement('div');
 shadow1 = div.createShadowRoot();
-shouldBeOpenByDefaultShadowRoot('shadow1');
-
-shouldThrow('div.createShadowRoot({mode: "open"})');
+shouldBeV0ShadowRoot('shadow1');
+shouldThrow('div.attachShadow({mode: "open"})');
+shouldThrow('div.attachShadow({mode: "closed"})');
 youngestShadowRootShouldBe('div', 'shadow1');
 
-
-debug('(3/3) createShadowRoot() cannot create multiple shadow roots on shadow root with explicit open parameter.');
 div = document.createElement('div');
-shadow1 = div.createShadowRoot({mode: 'open'});
+shadow1 = div.attachShadow({mode: "open"});
 shouldBeOpenShadowRoot('shadow1');
-
 shouldThrow('div.createShadowRoot()');
-youngestShadowRootShouldBe('div', 'shadow1');
-
-
-debug('(4/4) closed shadow root cannot be created on any open shadow roots');
-div = document.createElement('div');
-shadow1 = div.createShadowRoot();
-shouldBeOpenByDefaultShadowRoot('shadow1');
-
-shouldThrow('div.createShadowRoot({mode: "closed"})');
+shouldThrow('div.attachShadow({mode: "open"})');
+shouldThrow('div.attachShadow({mode: "closed"})');
 youngestShadowRootShouldBe('div', 'shadow1');
 
 div = document.createElement('div');
-shadow1 = div.createShadowRoot({mode: 'open'});
-shouldBeOpenShadowRoot('shadow1');
-
-shouldThrow('div.createShadowRoot({mode: "closed"})');
-youngestShadowRootShouldBe('div', 'shadow1');
-
-
-debug('(5/5) any shadow root cannot be created on closed shadow root');
-div = document.createElement('div');
-shadow1 = div.createShadowRoot({mode: 'closed'});
+shadow1 = div.attachShadow({mode: "closed"});
 shouldBeClosedShadowRoot('shadow1');
-
 shouldThrow('div.createShadowRoot()');
-shouldThrow('div.createShadowRoot({mode: "open"})');
-shouldThrow('div.createShadowRoot({mode: "closed"})');
+shouldThrow('div.attachShadow({mode: "open"})');
+shouldThrow('div.attachShadow({mode: "closed"})');
+youngestShadowRootShouldBe('div', 'shadow1');
 
 
-debug('(6/6) explicitly open/closed shadow root cannot be created on UA shadow root');
+debug('V1 shadow root cannot be created on UA shadow root');
 var input = document.createElement('input');
 shouldBeUserAgentShadowRoot('internals.shadowRoot(input)');
 shadow1 = input.createShadowRoot();
 youngestShadowRootShouldBe('input', 'shadow1');
-shouldBeOpenByDefaultShadowRoot('shadow1');
+shouldBeV0ShadowRoot('shadow1');
 
 input = document.createElement('input');
-shouldThrow('input.createShadowRoot({mode: "open"})');
+shouldThrow('input.attachShadow({mode: "open"})');
 
 input = document.createElement('input');
-shouldThrow('input.createShadowRoot({mode: "closed"})');
+shouldThrow('input.attachShadow({mode: "closed"})');
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js
index 19ba8e4..651084c9 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js
@@ -1,3 +1,4 @@
+// TODO(hayato): Have both createShadowRoot and attachShadow.
 function createShadowRoot()
 {
     var children = Array.prototype.slice.call(arguments);
@@ -41,7 +42,7 @@
                 shadowRoot = window.internals.createUserAgentShadowRoot(element);
             } else {
                 if (child.parameter && Object.keys(child.parameter).length > 0)
-                    shadowRoot = element.createShadowRoot(child.parameter);
+                    shadowRoot = element.attachShadow(child.parameter);
                 else
                     shadowRoot = element.createShadowRoot();
             }
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type-expected.txt
index 2fb98e2..6bf6d8b 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type-expected.txt
@@ -3,7 +3,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS "OpenByDefaultShadowRoot" is internals.shadowRootType(shadowRootForDiv)
+PASS "V0ShadowRoot" is internals.shadowRootType(shadowRootForDiv)
 PASS "UserAgentShadowRoot" is internals.shadowRootType(shadowRootForInput)
 PASS successfullyParsed is true
 
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type.html
index 06652fd..0e402ed 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadowroot-type.html
@@ -15,7 +15,7 @@
 var shadowRootForDiv = host.createShadowRoot();
 var shadowRootForInput = internals.shadowRoot(input);
 
-shouldBe('"OpenByDefaultShadowRoot"', 'internals.shadowRootType(shadowRootForDiv)');
+shouldBe('"V0ShadowRoot"', 'internals.shadowRootType(shadowRootForDiv)');
 shouldBe('"UserAgentShadowRoot"', 'internals.shadowRootType(shadowRootForInput)');
 
 container.innerHTML = "";
diff --git a/third_party/WebKit/LayoutTests/fast/events/access-key-self-destruct.html b/third_party/WebKit/LayoutTests/fast/events/access-key-self-destruct.html
index e19fece..279c3c3 100644
--- a/third_party/WebKit/LayoutTests/fast/events/access-key-self-destruct.html
+++ b/third_party/WebKit/LayoutTests/fast/events/access-key-self-destruct.html
@@ -7,11 +7,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-            modifiers = ["ctrlKey", "altKey"];
-        else
-            modifiers = ["altKey"];
-        eventSender.keyDown("a", modifiers);
+        eventSender.keyDown("a", "accessKey");
     }
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/ValidityState-valueMissing-002.html b/third_party/WebKit/LayoutTests/fast/forms/ValidityState-valueMissing-002.html
index 67de1130..a793c39 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/ValidityState-valueMissing-002.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/ValidityState-valueMissing-002.html
@@ -85,12 +85,7 @@
         select = document.getElementById("select-selecting-by-key-2");
         shouldBeTrue('valueMissingFor("select-selecting-by-key-2")');
         select.focus();
-        var modifiers;
-        if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-            modifiers = ['ctrlKey', 'altKey'];
-        else
-            modifiers = ['altKey'];
-        eventSender.keyDown("1", modifiers);
+        eventSender.keyDown("1", "accessKey");
         shouldBe('select.value', '"a"');
         shouldBeFalse('valueMissingFor("select-selecting-by-key-2")');
     } else {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/access-key.html b/third_party/WebKit/LayoutTests/fast/forms/access-key.html
index b39b90c..c8b208d 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/access-key.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/access-key.html
@@ -9,11 +9,7 @@
 }
 function pressKey(key)
 {
-    if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-        modifiers = ["ctrlKey", "altKey"];
-    else
-        modifiers = ["altKey"];
-    eventSender.keyDown(key, modifiers);
+    eventSender.keyDown(key, "accessKey");
 }
 function test()
 {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/focus-selection-input.html b/third_party/WebKit/LayoutTests/fast/forms/focus-selection-input.html
index 6836d8e..d7c8c2b 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/focus-selection-input.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/focus-selection-input.html
@@ -7,10 +7,6 @@
     if (!window.testRunner)
         return;
 
-    var accessKeyModifiers = ["altKey"];
-    if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-        accessKeyModifiers = ["ctrlKey", "altKey"];
-
     testRunner.dumpEditingCallbacks();
     testRunner.dumpAsText();
 
@@ -22,7 +18,7 @@
 
     shouldBe("second.selectionStart", "11");
     shouldBe("second.selectionEnd", "18");
-    eventSender.keyDown("J", accessKeyModifiers);
+    eventSender.keyDown("J", "accessKey");
     shouldBe("second.selectionStart", "11");
     shouldBe("second.selectionEnd", "18");
 
@@ -51,7 +47,7 @@
 
     shouldBe("sixth.selectionStart", "12");
     shouldBe("sixth.selectionEnd", "19");
-    eventSender.keyDown("U", accessKeyModifiers);
+    eventSender.keyDown("U", "accessKey");
     shouldBe("sixth.selectionStart", "0");
     shouldBe("sixth.selectionEnd", "19");
 
@@ -71,7 +67,7 @@
 
     shouldBe("ninth.selectionStart", "12");
     shouldBe("ninth.selectionEnd", "19");
-    eventSender.keyDown("I", accessKeyModifiers);
+    eventSender.keyDown("I", "accessKey");
     shouldBe("ninth.selectionStart", "0");
     shouldBe("ninth.selectionEnd", "19");
 
diff --git a/third_party/WebKit/LayoutTests/fast/forms/focus-selection-textarea.html b/third_party/WebKit/LayoutTests/fast/forms/focus-selection-textarea.html
index 169826b..f8ddf1f6 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/focus-selection-textarea.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/focus-selection-textarea.html
@@ -7,10 +7,6 @@
     if (!window.testRunner)
         return;
 
-    var accessKeyModifiers = ["altKey"];
-    if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-        accessKeyModifiers = ["ctrlKey", "altKey"];
-
     testRunner.dumpEditingCallbacks();
     testRunner.dumpAsText();
 
@@ -22,7 +18,7 @@
 
     shouldBe("second.selectionStart", "11");
     shouldBe("second.selectionEnd", "18");
-    eventSender.keyDown("J", accessKeyModifiers);
+    eventSender.keyDown("J", "accessKey");
     shouldBe("second.selectionStart", "11");
     shouldBe("second.selectionEnd", "18");
 
@@ -51,7 +47,7 @@
 
     shouldBe("sixth.selectionStart", "11");
     shouldBe("sixth.selectionEnd", "18");
-    eventSender.keyDown("U", accessKeyModifiers);
+    eventSender.keyDown("U", "accessKey");
     shouldBe("sixth.selectionStart", "11");
     shouldBe("sixth.selectionEnd", "18");
 
@@ -71,7 +67,7 @@
 
     shouldBe("ninth.selectionStart", "11");
     shouldBe("ninth.selectionEnd", "18");
-    eventSender.keyDown("I", accessKeyModifiers);
+    eventSender.keyDown("I", "accessKey");
     shouldBe("ninth.selectionStart", "11");
     shouldBe("ninth.selectionEnd", "18");
 
diff --git a/third_party/WebKit/LayoutTests/fast/forms/legend-access-key.html b/third_party/WebKit/LayoutTests/fast/forms/legend-access-key.html
index 8fea663..58407c23 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/legend-access-key.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/legend-access-key.html
@@ -11,12 +11,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-
-        if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-            modifiers = ["ctrlKey", "altKey"];
-        else
-            modifiers = "altKey";
-        eventSender.keyDown("f", modifiers);
+        eventSender.keyDown("f", "accessKey");
     }
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-accesskey.html b/third_party/WebKit/LayoutTests/fast/forms/select-accesskey.html
index 253ba998..af47cea 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/select-accesskey.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/select-accesskey.html
@@ -1,4 +1,6 @@
-<select accesskey='a' onfocus='document.getElementById("res1").innerHTML="PASS 1";' onclick='document.getElementById("res2").innerHTML="PASS 2";'>
+<select accesskey='a'
+    onfocus='document.getElementById("res1").innerHTML="PASS 1";'
+    onclick='document.getElementById("res2").innerHTML="PASS 2";'>
 <option>blaa
 <option>jee
 </select>
@@ -14,14 +16,8 @@
 FAIL
 </div>
 <script>
-    if (window.eventSender) {
-        testRunner.dumpAsText();
-
-        var modifiers;
-        if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-            modifiers = ['ctrlKey', 'altKey'];
-        else
-            modifiers = ['altKey'];
-        eventSender.keyDown('a', modifiers);
-    }
+if (window.eventSender) {
+    testRunner.dumpAsText();
+    eventSender.keyDown('a', 'accessKey');
+}
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-option-accesskey-crash.html b/third_party/WebKit/LayoutTests/fast/forms/select-option-accesskey-crash.html
index d602a6d..f212d57 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/select-option-accesskey-crash.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/select-option-accesskey-crash.html
@@ -17,17 +17,11 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
 
-    var selectElement = document.getElementById("target");
+    var selectElement = document.getElementById('target');
     selectElement.focus();
     if (window.eventSender) {
-        var modifiers;
-        if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
-            modifiers = ['ctrlKey', 'altKey'];
-        else
-            modifiers = ['altKey'];
-
-        eventSender.keyDown('x', modifiers);
-        testPassed("Did not crash");
+        eventSender.keyDown('x', 'accessKey');
+        testPassed('Did not crash');
     }
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-state-comparator-expected.txt b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-state-comparator-expected.txt
new file mode 100644
index 0000000..ca10c2e11
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-state-comparator-expected.txt
@@ -0,0 +1,39 @@
+Tests that SecurityStateComparator correctly compares the severity of security states.
+
+Sign of SecurityStateComparator("unknown","unknown"): 0 (expected: 0)
+Sign of SecurityStateComparator("unknown","info"): -1 (expected: -1)
+Sign of SecurityStateComparator("unknown","insecure"): -1 (expected: -1)
+Sign of SecurityStateComparator("unknown","neutral"): -1 (expected: -1)
+Sign of SecurityStateComparator("unknown","warning"): -1 (expected: -1)
+Sign of SecurityStateComparator("unknown","secure"): -1 (expected: -1)
+Sign of SecurityStateComparator("info","unknown"): 1 (expected: 1)
+Sign of SecurityStateComparator("info","info"): 0 (expected: 0)
+Sign of SecurityStateComparator("info","insecure"): -1 (expected: -1)
+Sign of SecurityStateComparator("info","neutral"): -1 (expected: -1)
+Sign of SecurityStateComparator("info","warning"): -1 (expected: -1)
+Sign of SecurityStateComparator("info","secure"): -1 (expected: -1)
+Sign of SecurityStateComparator("insecure","unknown"): 1 (expected: 1)
+Sign of SecurityStateComparator("insecure","info"): 1 (expected: 1)
+Sign of SecurityStateComparator("insecure","insecure"): 0 (expected: 0)
+Sign of SecurityStateComparator("insecure","neutral"): -1 (expected: -1)
+Sign of SecurityStateComparator("insecure","warning"): -1 (expected: -1)
+Sign of SecurityStateComparator("insecure","secure"): -1 (expected: -1)
+Sign of SecurityStateComparator("neutral","unknown"): 1 (expected: 1)
+Sign of SecurityStateComparator("neutral","info"): 1 (expected: 1)
+Sign of SecurityStateComparator("neutral","insecure"): 1 (expected: 1)
+Sign of SecurityStateComparator("neutral","neutral"): 0 (expected: 0)
+Sign of SecurityStateComparator("neutral","warning"): -1 (expected: -1)
+Sign of SecurityStateComparator("neutral","secure"): -1 (expected: -1)
+Sign of SecurityStateComparator("warning","unknown"): 1 (expected: 1)
+Sign of SecurityStateComparator("warning","info"): 1 (expected: 1)
+Sign of SecurityStateComparator("warning","insecure"): 1 (expected: 1)
+Sign of SecurityStateComparator("warning","neutral"): 1 (expected: 1)
+Sign of SecurityStateComparator("warning","warning"): 0 (expected: 0)
+Sign of SecurityStateComparator("warning","secure"): -1 (expected: -1)
+Sign of SecurityStateComparator("secure","unknown"): 1 (expected: 1)
+Sign of SecurityStateComparator("secure","info"): 1 (expected: 1)
+Sign of SecurityStateComparator("secure","insecure"): 1 (expected: 1)
+Sign of SecurityStateComparator("secure","neutral"): 1 (expected: 1)
+Sign of SecurityStateComparator("secure","warning"): 1 (expected: 1)
+Sign of SecurityStateComparator("secure","secure"): 0 (expected: 0)
+
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-state-comparator.html b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-state-comparator.html
new file mode 100644
index 0000000..f84840aa
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-state-comparator.html
@@ -0,0 +1,48 @@
+<html>
+<head>
+<script src="../inspector-test.js"></script>
+<script>
+var initialize_SecurityTest = function()
+{
+    InspectorTest.preloadPanel("security");
+}
+
+function test()
+{
+    var ordering = [
+        SecurityAgent.SecurityState.Unknown,
+        SecurityAgent.SecurityState.Info,
+        SecurityAgent.SecurityState.Insecure,
+        SecurityAgent.SecurityState.Neutral,
+        SecurityAgent.SecurityState.Warning,
+        SecurityAgent.SecurityState.Secure
+    ];
+
+    InspectorTest.assertEquals(ordering.length, Object.keys(SecurityAgent.SecurityState).length);
+
+    for (var i = 0; i < ordering.length; i++) {
+        InspectorTest.assertEquals(WebInspector.SecurityModel.SecurityStateComparator(ordering[i], ordering[i]), 0, "Security state comparison failed when checking that \"" + ordering[i] + "\" == \"" + ordering[i] + "\"");
+    }
+
+    for (var i = 0; i < ordering.length; i++) {
+        var j;
+
+        for (j = 0; j < i; j++) {
+            InspectorTest.addResult("Sign of SecurityStateComparator(\"" + ordering[i] + "\",\"" + ordering[j] + "\"): " + Math.sign(WebInspector.SecurityModel.SecurityStateComparator(ordering[i], ordering[j])) + " (expected: 1)");
+        }
+
+        InspectorTest.addResult("Sign of SecurityStateComparator(\"" + ordering[i] + "\",\"" + ordering[j] + "\"): " + Math.sign(WebInspector.SecurityModel.SecurityStateComparator(ordering[i], ordering[j])) + " (expected: 0)");
+
+        for (j = i + 1; j < ordering.length; j++) {
+            InspectorTest.addResult("Sign of SecurityStateComparator(\"" + ordering[i] + "\",\"" + ordering[j] + "\"): " + Math.sign(WebInspector.SecurityModel.SecurityStateComparator(ordering[i], ordering[j])) + " (expected: -1)");
+        }
+    }
+
+    InspectorTest.completeTest();
+}
+</script>
+</head>
+<body onload="runTest()">
+<p>Tests that SecurityStateComparator correctly compares the severity of security states.</p>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/iso-latin1-header.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/iso-latin1-header.html
index e56e68c..e93bc05b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/iso-latin1-header.html
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/iso-latin1-header.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<title>Service Worker: respondWith with header value containing a non ascii string</title>
+<title>Service Worker: respondWith with header value containing an ISO Latin 1 (ISO-8859-1 Character Set) string</title>
 <script src="../resources/testharness.js"></script>
 <script src="../resources/testharnessreport.js"></script>
 <script src="../resources/get-host-info.js"></script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/iso-latin1-header-iframe.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/iso-latin1-header-iframe.html
index 56f26c4..f076f180 100644
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/iso-latin1-header-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/iso-latin1-header-iframe.html
@@ -9,7 +9,7 @@
         resolve();
       };
       xhr.onerror = function() {
-        reject('XHR must fail.');
+        reject('XHR must succeed.');
       };
       xhr.responseType = 'text';
       xhr.open(method, './dummy?test', true);
@@ -17,11 +17,11 @@
     });
 }
 
-
 window.addEventListener('message', function(evt) {
     var port = evt.ports[0];
     xhr_send('POST', 'test string')
       .then(function() { port.postMessage({results: 'finish'}); })
       .catch(function(e) { port.postMessage({results: 'failure:' + e}); });
   });
+
 </script>
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/shadow/breadcrumb-shadow-roots.html b/third_party/WebKit/LayoutTests/inspector/elements/shadow/breadcrumb-shadow-roots.html
index 0187f4e..d4c90113 100644
--- a/third_party/WebKit/LayoutTests/inspector/elements/shadow/breadcrumb-shadow-roots.html
+++ b/third_party/WebKit/LayoutTests/inspector/elements/shadow/breadcrumb-shadow-roots.html
@@ -10,7 +10,7 @@
     var template = document.querySelector("#tmpl");
     var root = document.querySelector("#host").createShadowRoot();
     root.appendChild(template.content.cloneNode(true));
-    var rootClosed = document.querySelector("#hostClosed").createShadowRoot({mode: 'closed'});
+    var rootClosed = document.querySelector("#hostClosed").attachShadow({mode: 'closed'});
     rootClosed.appendChild(template.content.cloneNode(true));
     runTest();
 }
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/shadow/elements-panel-shadow-selection-on-refresh.html b/third_party/WebKit/LayoutTests/inspector/elements/shadow/elements-panel-shadow-selection-on-refresh.html
index 5687267..1abb3a8 100644
--- a/third_party/WebKit/LayoutTests/inspector/elements/shadow/elements-panel-shadow-selection-on-refresh.html
+++ b/third_party/WebKit/LayoutTests/inspector/elements/shadow/elements-panel-shadow-selection-on-refresh.html
@@ -115,7 +115,7 @@
 <script>
 var root = document.getElementById("hostElement").createShadowRoot();
 root.innerHTML = "<input type='text'>";
-var closedRoot = document.getElementById("closedHostElement").createShadowRoot({mode: 'closed'});
+var closedRoot = document.getElementById("closedHostElement").attachShadow({mode: 'closed'});
 closedRoot.innerHTML = "<button></button>";
 </script>
 </body>
diff --git a/third_party/WebKit/LayoutTests/paint/selection/text-selection-newline-br-expected.txt b/third_party/WebKit/LayoutTests/paint/selection/text-selection-newline-br-expected.txt
deleted file mode 100644
index d2b15c2..0000000
--- a/third_party/WebKit/LayoutTests/paint/selection/text-selection-newline-br-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x48
-  LayoutBlockFlow {HTML} at (0,0) size 800x48
-    LayoutBlockFlow {BODY} at (8,8) size 784x32
-      LayoutBlockFlow {DIV} at (0,0) size 784x32
-        LayoutText {#text} at (0,0) size 16x16
-          text run at (0,0) width 16: "a"
-        LayoutBR {BR} at (16,0) size 0x16
-        LayoutText {#text} at (0,16) size 16x16
-          text run at (0,16) width 16: "b"
-selection start: position 5 of child 0 {#text} of child 3 {DIV} of body
-selection end:   position 1 of child 2 {#text} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/paint/selection/text-selection-newline-br.html b/third_party/WebKit/LayoutTests/paint/selection/text-selection-newline-br.html
index 580cd46..c20ad73 100644
--- a/third_party/WebKit/LayoutTests/paint/selection/text-selection-newline-br.html
+++ b/third_party/WebKit/LayoutTests/paint/selection/text-selection-newline-br.html
@@ -1,19 +1,12 @@
 <!DOCTYPE html>
-<html>
-<head>
 <script src="../../resources/ahem.js"></script>
 <script src="../../resources/run-after-layout-and-paint.js"></script>
 <script src="resources/selection.js"></script>
-<style>
-div {
-    font-family: Ahem;
-}
-</style>
-</head>
-<body onload="selectRangeAfterLayoutAndPaint(container, 0, container, 3);">
 <!-- Two lines in one block explicitly wrapped with a br which should
      include space representing a newline at end of the first line. -->
-<div id="container">
+<div id="container" style="font-family: Ahem;">
     a<br>b
 </div>
-</body>
+<script>
+onload = selectRangeAfterLayoutAndPaint(container, 0, container, 3);
+</script>
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/text/basic/015-expected.txt b/third_party/WebKit/LayoutTests/platform/android/fast/text/basic/015-expected.txt
new file mode 100644
index 0000000..1c09e6f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/android/fast/text/basic/015-expected.txt
@@ -0,0 +1,61 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {P} at (0,0) size 784x40
+        LayoutText {#text} at (0,0) size 202x19
+          text run at (0,0) width 202: "This tests for a regression against "
+        LayoutInline {I} at (0,0) size 752x39
+          LayoutInline {A} at (0,0) size 350x19 [color=#0000EE]
+            LayoutText {#text} at (202,0) size 350x19
+              text run at (202,0) width 350: "http://bugzilla.opendarwin.org/show_bug.cgi?id=6418"
+          LayoutText {#text} at (552,0) size 752x39
+            text run at (552,0) width 4: " "
+            text run at (556,0) width 196: "Incorrect scrollbar when using"
+            text run at (0,20) width 283: "overflow:auto and word-wrap:break-word; "
+            text run at (283,20) width 87: "in some cases"
+        LayoutText {#text} at (370,20) size 4x19
+          text run at (370,20) width 4: "."
+      LayoutBlockFlow {HR} at (0,56) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,74) size 784x20
+        LayoutText {#text} at (0,0) size 246x19
+          text run at (0,0) width 246: "The first line should break after \x{201C}Lorem\x{201D}."
+      LayoutBlockFlow {DIV} at (0,110) size 85x42 [border: (1px solid #00FFFF)]
+        LayoutText {#text} at (1,1) size 79x19
+          text run at (1,1) width 79: "Lorem ipsum"
+        LayoutInline {SPAN} at (0,0) size 32x19
+          LayoutText {#text} at (1,21) size 32x19
+            text run at (1,21) width 32: "dolor"
+        LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,160) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,178) size 784x20
+        LayoutText {#text} at (0,0) size 632x19
+          text run at (0,0) width 458: "The first line should break after the letter u, so that the gray border does not "
+          text run at (458,0) width 174: "extend beyond the cyan box."
+      LayoutBlockFlow {DIV} at (0,214) size 87x42 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 64x39 [border: none (30px solid #C0C0C0) none]
+          LayoutText {#text} at (1,1) size 64x39
+            text run at (1,1) width 64: "Loremipsu"
+            text run at (1,21) width 11: "m"
+        LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,264) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,282) size 784x20
+        LayoutText {#text} at (0,0) size 584x19
+          text run at (0,0) width 410: "The first line should break after the letter p, so that the text does not "
+          text run at (410,0) width 174: "extend beyond the cyan box."
+      LayoutBlockFlow {DIV} at (0,318) size 87x42 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 81x39 [border: none (30px solid #C0C0C0)]
+          LayoutText {#text} at (31,1) size 81x39
+            text run at (31,1) width 51: "Loremip"
+            text run at (1,21) width 24: "sum"
+        LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,368) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,386) size 784x20
+        LayoutText {#text} at (0,0) size 239x19
+          text run at (0,0) width 239: "\x{201C}Dolor\x{201D} should not break into two lines."
+layer at (8,430) size 37x22
+  LayoutBlockFlow (positioned) {DIV} at (8,430) size 37x22
+    LayoutBlockFlow {DIV} at (0,0) size 37x22 [border: (1px solid #00FFFF)]
+      LayoutText {#text} at (1,1) size 35x19
+        text run at (1,1) width 35: "Dolor"
diff --git a/third_party/WebKit/LayoutTests/platform/android/paint/selection/text-selection-newline-br-expected.png b/third_party/WebKit/LayoutTests/platform/android/paint/selection/text-selection-newline-br-expected.png
deleted file mode 100644
index ae94bee..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/paint/selection/text-selection-newline-br-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/svg/custom/mouse-move-on-svg-container-expected.txt b/third_party/WebKit/LayoutTests/platform/android/svg/custom/mouse-move-on-svg-container-expected.txt
new file mode 100644
index 0000000..f1d08bb2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/android/svg/custom/mouse-move-on-svg-container-expected.txt
@@ -0,0 +1,14 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x411
+  LayoutBlockFlow {html} at (0,0) size 800x411
+    LayoutBlockFlow {body} at (0,0) size 800x411
+      LayoutSVGRoot {svg} at (0,0) size 406x410
+        LayoutSVGContainer {g} at (303,303) size 100x100
+          LayoutSVGEllipse {circle} at (303,303) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=350.00] [cy=350.00] [r=50.00]
+        LayoutSVGText {text} at (56,35) size 288x19 contains 1 chunk(s)
+          LayoutSVGInlineText {#text} at (0,0) size 288x19
+            chunk 1 (middle anchor) text run 1 at (56.00,50.00) startOffset 0 endOffset 49 width 288.00: "The circle should stay in the bottom-right corner"
+      LayoutText {#text} at (0,0) size 0x0
+      LayoutText {#text} at (0,0) size 0x0
+caret: position 0 of child 0 {#text} of child 3 {text} of child 1 {svg} of body
diff --git a/third_party/WebKit/LayoutTests/platform/android/svg/custom/mouse-move-on-svg-root-expected.txt b/third_party/WebKit/LayoutTests/platform/android/svg/custom/mouse-move-on-svg-root-expected.txt
new file mode 100644
index 0000000..b635233
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/android/svg/custom/mouse-move-on-svg-root-expected.txt
@@ -0,0 +1,13 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x411
+  LayoutBlockFlow {html} at (0,0) size 800x411
+    LayoutBlockFlow {body} at (0,0) size 800x411
+      LayoutSVGRoot {svg} at (0,0) size 406x410
+        LayoutSVGEllipse {circle} at (150,150) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=197.00] [cy=197.00] [r=50.00]
+        LayoutSVGText {text} at (99,35) size 202x19 contains 1 chunk(s)
+          LayoutSVGInlineText {#text} at (0,0) size 201x19
+            chunk 1 (middle anchor) text run 1 at (99.50,50.00) startOffset 0 endOffset 34 width 201.00: "The circle should be in the middle"
+      LayoutText {#text} at (0,0) size 0x0
+      LayoutText {#text} at (0,0) size 0x0
+caret: position 0 of child 0 {#text} of child 3 {text} of child 1 {svg} of body
diff --git a/third_party/WebKit/LayoutTests/platform/android/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt b/third_party/WebKit/LayoutTests/platform/android/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
new file mode 100644
index 0000000..80b9a0db
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/android/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
@@ -0,0 +1,42 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x363
+  LayoutBlockFlow {html} at (0,0) size 800x363
+    LayoutBlockFlow {body} at (8,8) size 784x347
+      LayoutText {#text} at (0,0) size 728x19
+        text run at (0,0) width 728: "There should be no red displayed on the screen, and the patterns should not change when the browser window is resized."
+      LayoutBR {br} at (728,0) size 0x19
+      LayoutBR {br} at (0,20) size 0x19
+      LayoutSVGRoot {svg} at (8,47) size 202x307
+        LayoutSVGContainer {g} at (9,49) size 200x200
+          LayoutSVGRect {rect} at (9,149) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=100.00] [width=100.00] [height=50.00]
+          LayoutSVGRect {rect} at (109,49) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=100.00] [y=0.00] [width=100.00] [height=50.00]
+          LayoutSVGRect {rect} at (9,149) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=0.00] [y=100.00] [width=100.00] [height=100.00]
+          LayoutSVGRect {rect} at (109,49) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=100.00] [y=0.00] [width=100.00] [height=100.00]
+      LayoutText {#text} at (202,327) size 4x19
+        text run at (202,327) width 4: " "
+      LayoutSVGRoot {svg} at (214,47) size 202x307
+        LayoutSVGText {text} at (5,265) size 77x19 contains 1 chunk(s)
+          LayoutSVGInlineText {#text} at (0,0) size 77x19
+            chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 11 width 77.00: "+Transforms"
+        LayoutSVGContainer {g} at (215,149) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,100.00)}]
+          LayoutSVGRect {rect} at (215,149) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=50.00]
+          LayoutSVGRect {rect} at (215,149) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+        LayoutSVGContainer {g} at (315,49) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
+          LayoutSVGRect {rect} at (315,49) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=50.00]
+          LayoutSVGRect {rect} at (315,49) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+        LayoutSVGHiddenContainer {defs} at (0,0) size 0x0
+          LayoutSVGResourcePattern {pattern} [id="pattern"] [patternUnits=userSpaceOnUse] [patternContentUnits=userSpaceOnUse]
+            LayoutSVGRect {rect} at (215,49) size 100x25 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=25.00]
+            LayoutSVGRect {rect} at (215,74) size 100x25 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=25.00] [width=100.00] [height=25.00]
+      LayoutText {#text} at (408,327) size 4x19
+        text run at (408,327) width 4: " "
+      LayoutText {#text} at (0,0) size 0x0
+layer at (420,48) size 202x302
+  LayoutSVGRoot {svg} at (420,47) size 202x307
+    LayoutSVGText {text} at (5,265) size 162x19 contains 1 chunk(s)
+      LayoutSVGInlineText {#text} at (0,0) size 162x19
+        chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 24 width 162.00: "+Accelerated Compositing"
+    LayoutSVGContainer {g} at (421,49) size 200x200
+      LayoutSVGRect {rect} at (421,149) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=0.00] [y=100.00] [width=100.00] [height=100.00]
+      LayoutSVGRect {rect} at (521,49) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=100.00] [y=0.00] [width=100.00] [height=100.00]
diff --git a/third_party/WebKit/LayoutTests/platform/android/svg/hixie/mixed/010-expected.txt b/third_party/WebKit/LayoutTests/platform/android/svg/hixie/mixed/010-expected.txt
new file mode 100644
index 0000000..efc8b5a5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/android/svg/hixie/mixed/010-expected.txt
@@ -0,0 +1,13 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x165
+  LayoutBlockFlow {html} at (0,0) size 800x165
+    LayoutBlockFlow {body} at (8,16) size 784x141 [color=#008000]
+      LayoutBlockFlow {p} at (0,0) size 784x20 [color=#000000]
+        LayoutText {#text} at (0,0) size 228x19
+          text run at (0,0) width 228: "There should be a green block below."
+      LayoutBlockFlow (anonymous) at (0,36) size 784x105
+        LayoutSVGRoot {svg} at (8,52) size 300x104
+          LayoutSVGRect {rect} at (8,52) size 300x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
+          LayoutSVGRect {rect} at (8,52) size 300x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/change-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/android/svg/repaint/add-background-property-on-root-expected.txt
similarity index 75%
copy from third_party/WebKit/LayoutTests/platform/win/svg/repaint/change-background-color-expected.txt
copy to third_party/WebKit/LayoutTests/platform/android/svg/repaint/add-background-property-on-root-expected.txt
index c6762ac..54a5e69 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/change-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/android/svg/repaint/add-background-property-on-root-expected.txt
@@ -6,9 +6,11 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 8, 200, 103]
+        [8, 8, 100, 104],
+        [8, 8, 100, 104]
       ],
       "paintInvalidationClients": [
+        "LayoutBlockFlow DIV",
         "LayoutSVGRoot svg"
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/android/virtual/spv2/paint/selection/text-selection-newline-br-expected.png b/third_party/WebKit/LayoutTests/platform/android/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
deleted file mode 100644
index ae94bee..0000000
--- a/third_party/WebKit/LayoutTests/platform/android/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/inline/vertical-align-with-fallback-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/inline/vertical-align-with-fallback-fonts-expected.png
new file mode 100644
index 0000000..97b1f498
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/inline/vertical-align-with-fallback-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/inline/vertical-align-with-fallback-fonts-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/inline/vertical-align-with-fallback-fonts-expected.txt
new file mode 100644
index 0000000..0aca0e9c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/inline/vertical-align-with-fallback-fonts-expected.txt
@@ -0,0 +1,26 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x210
+  LayoutBlockFlow {HTML} at (0,0) size 800x210
+    LayoutBlockFlow {BODY} at (8,16) size 784x186
+      LayoutBlockFlow {P} at (0,0) size 784x20
+        LayoutText {#text} at (0,0) size 336x19
+          text run at (0,0) width 336: "Test pass if all lines have superscripts enclosed in a box."
+      LayoutBlockFlow {DIV} at (0,36) size 784x50
+        LayoutText {#text} at (0,-4) size 35x57
+          text run at (0,-4) width 35: "A"
+        LayoutInline {SPAN} at (0,0) size 20x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (36,-2) size 18x28
+            text run at (36,-2) width 18: "A"
+      LayoutBlockFlow {DIV} at (0,86) size 784x50
+        LayoutText {#text} at (0,-4) size 35x57
+          text run at (0,-4) width 35: "A"
+        LayoutInline {SPAN} at (0,0) size 19x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (36,-2) size 17x28
+            text run at (36,-2) width 17: "B"
+      LayoutBlockFlow {DIV} at (0,136) size 784x50
+        LayoutText {#text} at (0,-4) size 35x57
+          text run at (0,-4) width 35: "A"
+        LayoutInline {SPAN} at (0,0) size 27x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (36,-2) size 25x28
+            text run at (36,-2) width 25: "\x{3042}"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selected-replaced-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selected-replaced-expected.txt
index 67bdad3..38eafa6 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selected-replaced-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selected-replaced-expected.txt
@@ -6,9 +6,9 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 132, 214, 236],
+        [8, 132, 214, 232],
         [8, 52, 784, 236],
-        [8, 52, 214, 236]
+        [8, 52, 214, 232]
       ],
       "paintInvalidationClients": [
         "InlineBox",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.png
index 177b849..19b59bd 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.txt
index 1c09e6f..08f18b88 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/basic/015-expected.txt
@@ -6,17 +6,17 @@
       LayoutBlockFlow {P} at (0,0) size 784x40
         LayoutText {#text} at (0,0) size 202x19
           text run at (0,0) width 202: "This tests for a regression against "
-        LayoutInline {I} at (0,0) size 752x39
+        LayoutInline {I} at (0,0) size 751x39
           LayoutInline {A} at (0,0) size 350x19 [color=#0000EE]
             LayoutText {#text} at (202,0) size 350x19
               text run at (202,0) width 350: "http://bugzilla.opendarwin.org/show_bug.cgi?id=6418"
-          LayoutText {#text} at (552,0) size 752x39
-            text run at (552,0) width 4: " "
-            text run at (556,0) width 196: "Incorrect scrollbar when using"
-            text run at (0,20) width 283: "overflow:auto and word-wrap:break-word; "
-            text run at (283,20) width 87: "in some cases"
-        LayoutText {#text} at (370,20) size 4x19
-          text run at (370,20) width 4: "."
+          LayoutText {#text} at (551,0) size 751x39
+            text run at (551,0) width 5: " "
+            text run at (555,0) width 196: "Incorrect scrollbar when using"
+            text run at (0,20) width 282: "overflow:auto and word-wrap:break-word; "
+            text run at (281,20) width 88: "in some cases"
+        LayoutText {#text} at (368,20) size 5x19
+          text run at (368,20) width 5: "."
       LayoutBlockFlow {HR} at (0,56) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,74) size 784x20
         LayoutText {#text} at (0,0) size 246x19
@@ -33,29 +33,27 @@
         LayoutText {#text} at (0,0) size 632x19
           text run at (0,0) width 458: "The first line should break after the letter u, so that the gray border does not "
           text run at (458,0) width 174: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,214) size 87x42 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 64x39 [border: none (30px solid #C0C0C0) none]
-          LayoutText {#text} at (1,1) size 64x39
-            text run at (1,1) width 64: "Loremipsu"
-            text run at (1,21) width 11: "m"
+      LayoutBlockFlow {DIV} at (0,214) size 87x22 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 105x19 [border: none (30px solid #C0C0C0) none]
+          LayoutText {#text} at (1,1) size 75x19
+            text run at (1,1) width 75: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,264) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,282) size 784x20
+      LayoutBlockFlow {HR} at (0,244) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,262) size 784x20
         LayoutText {#text} at (0,0) size 584x19
           text run at (0,0) width 410: "The first line should break after the letter p, so that the text does not "
           text run at (410,0) width 174: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,318) size 87x42 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 81x39 [border: none (30px solid #C0C0C0)]
-          LayoutText {#text} at (31,1) size 81x39
-            text run at (31,1) width 51: "Loremip"
-            text run at (1,21) width 24: "sum"
+      LayoutBlockFlow {DIV} at (0,298) size 87x22 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 105x19 [border: none (30px solid #C0C0C0)]
+          LayoutText {#text} at (31,1) size 75x19
+            text run at (31,1) width 75: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,368) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,386) size 784x20
+      LayoutBlockFlow {HR} at (0,328) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,346) size 784x20
         LayoutText {#text} at (0,0) size 239x19
           text run at (0,0) width 239: "\x{201C}Dolor\x{201D} should not break into two lines."
-layer at (8,430) size 37x22
-  LayoutBlockFlow (positioned) {DIV} at (8,430) size 37x22
+layer at (8,390) size 37x22
+  LayoutBlockFlow (positioned) {DIV} at (8,390) size 37x22
     LayoutBlockFlow {DIV} at (0,0) size 37x22 [border: (1px solid #00FFFF)]
       LayoutText {#text} at (1,1) size 35x19
         text run at (1,1) width 35: "Dolor"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/international/menulist-width-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/text/international/menulist-width-rtl-expected.png
new file mode 100644
index 0000000..f8508520
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/international/menulist-width-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/international/menulist-width-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/text/international/menulist-width-rtl-expected.txt
new file mode 100644
index 0000000..74581524
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/international/menulist-width-rtl-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x75
+  LayoutBlockFlow {HTML} at (0,0) size 800x75
+    LayoutBlockFlow {BODY} at (8,8) size 784x59
+      LayoutBlockFlow {DIV} at (0,0) size 784x20
+        LayoutText {#text} at (0,0) size 587x19
+          text run at (0,0) width 587: "The following line and the SELECT element should have same text, and no characters are lacking."
+      LayoutBlockFlow {DIV} at (0,20) size 784x19
+        LayoutText {#text} at (676,0) size 108x18
+          text run at (676,0) width 108 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+      LayoutBlockFlow (anonymous) at (0,39) size 784x20
+        LayoutMenuList {SELECT} at (668,0) size 116x20 [bgcolor=#C0C0C0] [border: (1px solid #A9A9A9)]
+          LayoutBlockFlow (anonymous) at (1,1) size 114x18
+            LayoutText (anonymous) at (19,1) size 91x16
+              text run at (19,1) width 91 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/justify-ideograph-simple-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/text/justify-ideograph-simple-expected.png
index 5888fd6..62c3f79 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/text/justify-ideograph-simple-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/justify-ideograph-simple-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-container-expected.txt
index f1d08bb2..c633b9ab 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-container-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x411
   LayoutBlockFlow {html} at (0,0) size 800x411
     LayoutBlockFlow {body} at (0,0) size 800x411
-      LayoutSVGRoot {svg} at (0,0) size 406x410
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGContainer {g} at (303,303) size 100x100
           LayoutSVGEllipse {circle} at (303,303) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=350.00] [cy=350.00] [r=50.00]
         LayoutSVGText {text} at (56,35) size 288x19 contains 1 chunk(s)
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-root-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-root-expected.txt
index b635233..b2701ba 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/mouse-move-on-svg-root-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x411
   LayoutBlockFlow {html} at (0,0) size 800x411
     LayoutBlockFlow {body} at (0,0) size 800x411
-      LayoutSVGRoot {svg} at (0,0) size 406x410
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGEllipse {circle} at (150,150) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=197.00] [cy=197.00] [r=50.00]
         LayoutSVGText {text} at (99,35) size 202x19 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 201x19
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
index 80b9a0db..0f3f1b4 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
@@ -7,7 +7,7 @@
         text run at (0,0) width 728: "There should be no red displayed on the screen, and the patterns should not change when the browser window is resized."
       LayoutBR {br} at (728,0) size 0x19
       LayoutBR {br} at (0,20) size 0x19
-      LayoutSVGRoot {svg} at (8,47) size 202x307
+      LayoutSVGRoot {svg} at (8,48) size 202x302
         LayoutSVGContainer {g} at (9,49) size 200x200
           LayoutSVGRect {rect} at (9,149) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=100.00] [width=100.00] [height=50.00]
           LayoutSVGRect {rect} at (109,49) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=100.00] [y=0.00] [width=100.00] [height=50.00]
@@ -15,7 +15,7 @@
           LayoutSVGRect {rect} at (109,49) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=100.00] [y=0.00] [width=100.00] [height=100.00]
       LayoutText {#text} at (202,327) size 4x19
         text run at (202,327) width 4: " "
-      LayoutSVGRoot {svg} at (214,47) size 202x307
+      LayoutSVGRoot {svg} at (214,48) size 202x302
         LayoutSVGText {text} at (5,265) size 77x19 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 77x19
             chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 11 width 77.00: "+Transforms"
@@ -33,7 +33,7 @@
         text run at (408,327) width 4: " "
       LayoutText {#text} at (0,0) size 0x0
 layer at (420,48) size 202x302
-  LayoutSVGRoot {svg} at (420,47) size 202x307
+  LayoutSVGRoot {svg} at (420,48) size 202x302
     LayoutSVGText {text} at (5,265) size 162x19 contains 1 chunk(s)
       LayoutSVGInlineText {#text} at (0,0) size 162x19
         chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 24 width 162.00: "+Accelerated Compositing"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/mixed/010-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/mixed/010-expected.txt
index efc8b5a5..bf92423 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/mixed/010-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/mixed/010-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 228x19
           text run at (0,0) width 228: "There should be a green block below."
       LayoutBlockFlow (anonymous) at (0,36) size 784x105
-        LayoutSVGRoot {svg} at (8,52) size 300x104
+        LayoutSVGRoot {svg} at (8,52) size 300x100
           LayoutSVGRect {rect} at (8,52) size 300x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
           LayoutSVGRect {rect} at (8,52) size 300x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/add-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/add-background-property-on-root-expected.txt
index 54a5e69..df1ca09 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/add-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/add-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 104],
-        [8, 8, 100, 104]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/change-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/change-background-color-expected.txt
deleted file mode 100644
index 1e7bff9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/change-background-color-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "bounds": [800, 600],
-  "children": [
-    {
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "repaintRects": [
-        [8, 8, 200, 104]
-      ],
-      "paintInvalidationClients": [
-        "LayoutSVGRoot svg"
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/remove-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/remove-background-property-on-root-expected.txt
index 54a5e69..df1ca09 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/remove-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/remove-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 104],
-        [8, 8, 100, 104]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-in-html5-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-in-html5-expected.txt
index 5cb936d8..1b914136 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-in-html5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-in-html5-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 472x36
           text run at (0,0) width 472: "Small fonts in HTML5/inline SVG"
       LayoutBlockFlow (anonymous) at (0,58.44) size 784x507
-        LayoutSVGRoot {svg} at (8,79) size 502x507
+        LayoutSVGRoot {svg} at (8,79) size 502x503
           LayoutSVGContainer {g} at (159,267) size 94x21 [transform={m=((400.00,0.00)(0.00,400.00)) t=(0.00,0.00)}]
             LayoutSVGText {text} at (0,0) size 1x1 contains 1 chunk(s)
               LayoutSVGInlineText {#text} at (0,0) size 1x1
diff --git a/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/basic/015-expected.png b/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/basic/015-expected.png
index 847842f..d4b4f64 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/basic/015-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/basic/015-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/international/menulist-width-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/international/menulist-width-rtl-expected.png
new file mode 100644
index 0000000..8059ce87
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/international/menulist-width-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/justify-ideograph-simple-expected.png b/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/justify-ideograph-simple-expected.png
index 032e254..9ffd03c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/justify-ideograph-simple-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac-lion/fast/text/justify-ideograph-simple-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/inline/vertical-align-with-fallback-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/inline/vertical-align-with-fallback-fonts-expected.png
new file mode 100644
index 0000000..2175d9c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/inline/vertical-align-with-fallback-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/international/menulist-width-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/international/menulist-width-rtl-expected.png
new file mode 100644
index 0000000..f326f35d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/international/menulist-width-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/international/menulist-width-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/international/menulist-width-rtl-expected.txt
new file mode 100644
index 0000000..256d8b0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/international/menulist-width-rtl-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x71
+  LayoutBlockFlow {HTML} at (0,0) size 800x71
+    LayoutBlockFlow {BODY} at (8,8) size 784x55
+      LayoutBlockFlow {DIV} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 632x18
+          text run at (0,0) width 632: "The following line and the SELECT element should have same text, and no characters are lacking."
+      LayoutBlockFlow {DIV} at (0,18) size 784x18
+        LayoutText {#text} at (682,0) size 102x16
+          text run at (682,0) width 102 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+      LayoutBlockFlow (anonymous) at (0,36) size 784x19
+        LayoutMenuList {SELECT} at (666,1) size 118x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 118x21
+            LayoutText (anonymous) at (8,2) size 87x13
+              text run at (8,2) width 87 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/justify-ideograph-simple-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/justify-ideograph-simple-expected.png
index ab22303..1d44d006 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/justify-ideograph-simple-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/text/justify-ideograph-simple-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mountainlion/fast/text/justify-ideograph-simple-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mountainlion/fast/text/justify-ideograph-simple-expected.png
new file mode 100644
index 0000000..4f52bf0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mountainlion/fast/text/justify-ideograph-simple-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/basic/015-expected.png b/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/basic/015-expected.png
index c92904612..b0db61c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/basic/015-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/basic/015-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/international/menulist-width-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/international/menulist-width-rtl-expected.png
new file mode 100644
index 0000000..36eb8986
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/international/menulist-width-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/justify-ideograph-simple-expected.png b/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/justify-ideograph-simple-expected.png
new file mode 100644
index 0000000..93fe2fb0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-snowleopard/fast/text/justify-ideograph-simple-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/vertical-align-with-fallback-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/vertical-align-with-fallback-fonts-expected.png
new file mode 100644
index 0000000..a3419cf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/vertical-align-with-fallback-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/vertical-align-with-fallback-fonts-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/vertical-align-with-fallback-fonts-expected.txt
new file mode 100644
index 0000000..43314b7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/vertical-align-with-fallback-fonts-expected.txt
@@ -0,0 +1,26 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x208
+  LayoutBlockFlow {HTML} at (0,0) size 800x208
+    LayoutBlockFlow {BODY} at (8,16) size 784x184
+      LayoutBlockFlow {P} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 362x18
+          text run at (0,0) width 362: "Test pass if all lines have superscripts enclosed in a box."
+      LayoutBlockFlow {DIV} at (0,34) size 784x50
+        LayoutText {#text} at (0,-4) size 37x58
+          text run at (0,-4) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 21x31 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 19x29
+            text run at (37,-2) width 19: "A"
+      LayoutBlockFlow {DIV} at (0,84) size 784x50
+        LayoutText {#text} at (0,-4) size 37x58
+          text run at (0,-4) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 19x31 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 17x29
+            text run at (37,-2) width 17: "B"
+      LayoutBlockFlow {DIV} at (0,134) size 784x50
+        LayoutText {#text} at (0,-4) size 37x58
+          text run at (0,-4) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 28x31 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 26x29
+            text run at (37,-2) width 26: "\x{3042}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/selected-replaced-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/selected-replaced-expected.txt
index 3b96aca9..e8ac9a4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/selected-replaced-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/selected-replaced-expected.txt
@@ -6,9 +6,9 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 148, 214, 236],
+        [8, 148, 214, 232],
         [8, 68, 784, 236],
-        [8, 68, 214, 236]
+        [8, 68, 214, 232]
       ],
       "paintInvalidationClients": [
         "InlineBox",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.png
index 3a7fc81..78bd0b0d 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.txt
index ee0e15f..8f373f5 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/text/basic/015-expected.txt
@@ -6,17 +6,17 @@
       LayoutBlockFlow {P} at (0,0) size 784x36
         LayoutText {#text} at (0,0) size 218x18
           text run at (0,0) width 218: "This tests for a regression against "
-        LayoutInline {I} at (0,0) size 774x36
-          LayoutInline {A} at (0,0) size 355x18 [color=#0000EE]
-            LayoutText {#text} at (217,0) size 355x18
-              text run at (217,0) width 355: "http://bugzilla.opendarwin.org/show_bug.cgi?id=6418"
-          LayoutText {#text} at (571,0) size 774x36
-            text run at (571,0) width 5: " "
-            text run at (575,0) width 199: "Incorrect scrollbar when using"
-            text run at (0,18) width 283: "overflow:auto and word-wrap:break-word; "
-            text run at (282,18) width 89: "in some cases"
-        LayoutText {#text} at (370,18) size 5x18
-          text run at (370,18) width 5: "."
+        LayoutInline {I} at (0,0) size 773x36
+          LayoutInline {A} at (0,0) size 354x18 [color=#0000EE]
+            LayoutText {#text} at (217,0) size 354x18
+              text run at (217,0) width 354: "http://bugzilla.opendarwin.org/show_bug.cgi?id=6418"
+          LayoutText {#text} at (570,0) size 773x36
+            text run at (570,0) width 5: " "
+            text run at (574,0) width 199: "Incorrect scrollbar when using"
+            text run at (0,18) width 280: "overflow:auto and word-wrap:break-word; "
+            text run at (279,18) width 89: "in some cases"
+        LayoutText {#text} at (367,18) size 5x18
+          text run at (367,18) width 5: "."
       LayoutBlockFlow {HR} at (0,52) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,70) size 784x18
         LayoutText {#text} at (0,0) size 267x18
@@ -31,32 +31,30 @@
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {HR} at (0,150) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,168) size 784x18
-        LayoutText {#text} at (0,0) size 672x18
-          text run at (0,0) width 489: "The first line should break after the letter u, so that the gray border does not "
-          text run at (488,0) width 184: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,202) size 87x38 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 70x36 [border: none (30px solid #C0C0C0) none]
-          LayoutText {#text} at (1,1) size 70x36
-            text run at (1,1) width 70: "Loremipsu"
-            text run at (1,19) width 13: "m"
+        LayoutText {#text} at (0,0) size 671x18
+          text run at (0,0) width 488: "The first line should break after the letter u, so that the gray border does not "
+          text run at (487,0) width 184: "extend beyond the cyan box."
+      LayoutBlockFlow {DIV} at (0,202) size 87x20 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 112x18 [border: none (30px solid #C0C0C0) none]
+          LayoutText {#text} at (1,1) size 82x18
+            text run at (1,1) width 82: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,248) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,266) size 784x18
-        LayoutText {#text} at (0,0) size 622x18
-          text run at (0,0) width 439: "The first line should break after the letter p, so that the text does not "
-          text run at (438,0) width 184: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,300) size 87x38 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 78x36 [border: none (30px solid #C0C0C0)]
-          LayoutText {#text} at (31,1) size 78x36
-            text run at (31,1) width 48: "Loremi"
-            text run at (1,19) width 35: "psum"
+      LayoutBlockFlow {HR} at (0,230) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,248) size 784x18
+        LayoutText {#text} at (0,0) size 621x18
+          text run at (0,0) width 438: "The first line should break after the letter p, so that the text does not "
+          text run at (437,0) width 184: "extend beyond the cyan box."
+      LayoutBlockFlow {DIV} at (0,282) size 87x20 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 112x18 [border: none (30px solid #C0C0C0)]
+          LayoutText {#text} at (31,1) size 82x18
+            text run at (31,1) width 82: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,346) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,364) size 784x18
+      LayoutBlockFlow {HR} at (0,310) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,328) size 784x18
         LayoutText {#text} at (0,0) size 258x18
           text run at (0,0) width 258: "\x{201C}Dolor\x{201D} should not break into two lines."
-layer at (8,406) size 45x20
-  LayoutBlockFlow (positioned) {DIV} at (8,406) size 44.81x20
+layer at (8,370) size 45x20
+  LayoutBlockFlow (positioned) {DIV} at (8,370) size 44.81x20
     LayoutBlockFlow {DIV} at (0,0) size 44.81x20 [border: (1px solid #00FFFF)]
       LayoutText {#text} at (1,1) size 43x18
         text run at (1,1) width 43: "Dolor"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/selection/text-selection-newline-br-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/selection/text-selection-newline-br-expected.png
deleted file mode 100644
index fcfe07d..0000000
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/selection/text-selection-newline-br-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-container-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-container-expected.txt
index febe4b9..1736a9d 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-container-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x410
   LayoutBlockFlow {html} at (0,0) size 800x410
     LayoutBlockFlow {body} at (0,0) size 800x410
-      LayoutSVGRoot {svg} at (0,0) size 406x410
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGContainer {g} at (303,303) size 100x100
           LayoutSVGEllipse {circle} at (303,303) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=350.00] [cy=350.00] [r=50.00]
         LayoutSVGText {text} at (44,36) size 312x18 contains 1 chunk(s)
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-root-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-root-expected.txt
index 235ff52..255dcc4c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/mouse-move-on-svg-root-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x410
   LayoutBlockFlow {html} at (0,0) size 800x410
     LayoutBlockFlow {body} at (0,0) size 800x410
-      LayoutSVGRoot {svg} at (0,0) size 406x410
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGEllipse {circle} at (150,150) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=197.00] [cy=197.00] [r=50.00]
         LayoutSVGText {text} at (90,36) size 220x18 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 219x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
index 358eab36..e74562bf 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
@@ -7,7 +7,7 @@
         text run at (0,0) width 773: "There should be no red displayed on the screen, and the patterns should not change when the browser window is resized."
       LayoutBR {br} at (772,0) size 1x18
       LayoutBR {br} at (0,18) size 0x18
-      LayoutSVGRoot {svg} at (8,44) size 202x306
+      LayoutSVGRoot {svg} at (8,44) size 202x302
         LayoutSVGContainer {g} at (9,45) size 200x200
           LayoutSVGRect {rect} at (9,145) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=100.00] [width=100.00] [height=50.00]
           LayoutSVGRect {rect} at (109,45) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=100.00] [y=0.00] [width=100.00] [height=50.00]
@@ -15,7 +15,7 @@
           LayoutSVGRect {rect} at (109,45) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=100.00] [y=0.00] [width=100.00] [height=100.00]
       LayoutText {#text} at (202,324) size 4x18
         text run at (202,324) width 4: " "
-      LayoutSVGRoot {svg} at (214,44) size 202x306
+      LayoutSVGRoot {svg} at (214,44) size 202x302
         LayoutSVGText {text} at (5,266) size 83x18 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 83x18
             chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 11 width 82.78: "+Transforms"
@@ -33,7 +33,7 @@
         text run at (408,324) width 4: " "
       LayoutText {#text} at (0,0) size 0x0
 layer at (420,44) size 202x302
-  LayoutSVGRoot {svg} at (420,44) size 202x306
+  LayoutSVGRoot {svg} at (420,44) size 202x302
     LayoutSVGText {text} at (5,266) size 173x18 contains 1 chunk(s)
       LayoutSVGInlineText {#text} at (0,0) size 173x18
         chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 24 width 172.09: "+Accelerated Compositing"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/mixed/010-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/mixed/010-expected.txt
index f16274e..eef4f30 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/mixed/010-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/mixed/010-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 241x18
           text run at (0,0) width 241: "There should be a green block below."
       LayoutBlockFlow (anonymous) at (0,34) size 784x104
-        LayoutSVGRoot {svg} at (8,50) size 300x104
+        LayoutSVGRoot {svg} at (8,50) size 300x100
           LayoutSVGRect {rect} at (8,50) size 300x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
           LayoutSVGRect {rect} at (8,50) size 300x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/add-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/add-background-property-on-root-expected.txt
index 54a5e69..df1ca09 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/add-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/add-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 104],
-        [8, 8, 100, 104]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/change-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/change-background-color-expected.txt
deleted file mode 100644
index 1e7bff9..0000000
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/change-background-color-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "bounds": [800, 600],
-  "children": [
-    {
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "repaintRects": [
-        [8, 8, 200, 104]
-      ],
-      "paintInvalidationClients": [
-        "LayoutSVGRoot svg"
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/remove-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/remove-background-property-on-root-expected.txt
index 54a5e69..df1ca09 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/remove-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/repaint/remove-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 104],
-        [8, 8, 100, 104]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-in-html5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-in-html5-expected.txt
index c165e7d..7f78e28 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-in-html5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-in-html5-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 470x37
           text run at (0,0) width 470: "Small fonts in HTML5/inline SVG"
       LayoutBlockFlow (anonymous) at (0,58.44) size 784x506
-        LayoutSVGRoot {svg} at (8,79) size 502x507
+        LayoutSVGRoot {svg} at (8,79) size 502x503
           LayoutSVGContainer {g} at (159,267) size 94x21 [transform={m=((400.00,0.00)(0.00,400.00)) t=(0.00,0.00)}]
             LayoutSVGText {text} at (0,0) size 1x1 contains 1 chunk(s)
               LayoutSVGInlineText {#text} at (0,0) size 1x1
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-br-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
deleted file mode 100644
index fcfe07d..0000000
--- a/third_party/WebKit/LayoutTests/platform/mac/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/inline/vertical-align-with-fallback-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/inline/vertical-align-with-fallback-fonts-expected.png
new file mode 100644
index 0000000..aa01564
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/inline/vertical-align-with-fallback-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/inline/vertical-align-with-fallback-fonts-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/fast/inline/vertical-align-with-fallback-fonts-expected.txt
new file mode 100644
index 0000000..080e5ce5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/inline/vertical-align-with-fallback-fonts-expected.txt
@@ -0,0 +1,26 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x210
+  LayoutBlockFlow {HTML} at (0,0) size 800x210
+    LayoutBlockFlow {BODY} at (8,16) size 784x186
+      LayoutBlockFlow {P} at (0,0) size 784x20
+        LayoutText {#text} at (0,0) size 336x19
+          text run at (0,0) width 336: "Test pass if all lines have superscripts enclosed in a box."
+      LayoutBlockFlow {DIV} at (0,36) size 784x50
+        LayoutText {#text} at (0,-4) size 35x57
+          text run at (0,-4) width 35: "A"
+        LayoutInline {SPAN} at (0,0) size 20x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (36,-2) size 18x28
+            text run at (36,-2) width 18: "A"
+      LayoutBlockFlow {DIV} at (0,86) size 784x50
+        LayoutText {#text} at (0,-4) size 35x57
+          text run at (0,-4) width 35: "A"
+        LayoutInline {SPAN} at (0,0) size 19x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (36,-2) size 17x28
+            text run at (36,-2) width 17: "B"
+      LayoutBlockFlow {DIV} at (0,136) size 784x50
+        LayoutText {#text} at (0,-4) size 35x57
+          text run at (0,-4) width 35: "A"
+        LayoutInline {SPAN} at (0,0) size 26x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (36,-2) size 24x28
+            text run at (36,-2) width 24: "\x{3042}"
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/repaint/selected-replaced-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/fast/repaint/selected-replaced-expected.txt
index 67bdad3..38eafa6 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/repaint/selected-replaced-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/repaint/selected-replaced-expected.txt
@@ -6,9 +6,9 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 132, 214, 236],
+        [8, 132, 214, 232],
         [8, 52, 784, 236],
-        [8, 52, 214, 236]
+        [8, 52, 214, 232]
       ],
       "paintInvalidationClients": [
         "InlineBox",
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.png
index 271e71d4..204bf60 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.txt
index 1c09e6f..8cd0286 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/basic/015-expected.txt
@@ -33,29 +33,27 @@
         LayoutText {#text} at (0,0) size 632x19
           text run at (0,0) width 458: "The first line should break after the letter u, so that the gray border does not "
           text run at (458,0) width 174: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,214) size 87x42 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 64x39 [border: none (30px solid #C0C0C0) none]
-          LayoutText {#text} at (1,1) size 64x39
-            text run at (1,1) width 64: "Loremipsu"
-            text run at (1,21) width 11: "m"
+      LayoutBlockFlow {DIV} at (0,214) size 87x22 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 105x19 [border: none (30px solid #C0C0C0) none]
+          LayoutText {#text} at (1,1) size 75x19
+            text run at (1,1) width 75: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,264) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,282) size 784x20
+      LayoutBlockFlow {HR} at (0,244) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,262) size 784x20
         LayoutText {#text} at (0,0) size 584x19
           text run at (0,0) width 410: "The first line should break after the letter p, so that the text does not "
           text run at (410,0) width 174: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,318) size 87x42 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 81x39 [border: none (30px solid #C0C0C0)]
-          LayoutText {#text} at (31,1) size 81x39
-            text run at (31,1) width 51: "Loremip"
-            text run at (1,21) width 24: "sum"
+      LayoutBlockFlow {DIV} at (0,298) size 87x22 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 105x19 [border: none (30px solid #C0C0C0)]
+          LayoutText {#text} at (31,1) size 75x19
+            text run at (31,1) width 75: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,368) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,386) size 784x20
+      LayoutBlockFlow {HR} at (0,328) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,346) size 784x20
         LayoutText {#text} at (0,0) size 239x19
           text run at (0,0) width 239: "\x{201C}Dolor\x{201D} should not break into two lines."
-layer at (8,430) size 37x22
-  LayoutBlockFlow (positioned) {DIV} at (8,430) size 37x22
+layer at (8,390) size 37x22
+  LayoutBlockFlow (positioned) {DIV} at (8,390) size 37x22
     LayoutBlockFlow {DIV} at (0,0) size 37x22 [border: (1px solid #00FFFF)]
       LayoutText {#text} at (1,1) size 35x19
         text run at (1,1) width 35: "Dolor"
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/international/menulist-width-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/international/menulist-width-rtl-expected.png
new file mode 100644
index 0000000..7632ed8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/international/menulist-width-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/international/menulist-width-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/international/menulist-width-rtl-expected.txt
new file mode 100644
index 0000000..b60dc65
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/text/international/menulist-width-rtl-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x69
+  LayoutBlockFlow {HTML} at (0,0) size 800x69
+    LayoutBlockFlow {BODY} at (8,8) size 784x53
+      LayoutBlockFlow {DIV} at (0,0) size 784x20
+        LayoutText {#text} at (0,0) size 587x19
+          text run at (0,0) width 587: "The following line and the SELECT element should have same text, and no characters are lacking."
+      LayoutBlockFlow {DIV} at (0,20) size 784x13
+        LayoutText {#text} at (686,0) size 98x13
+          text run at (686,0) width 98 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+      LayoutBlockFlow (anonymous) at (0,33) size 784x20
+        LayoutMenuList {SELECT} at (668,0) size 116x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)]
+          LayoutBlockFlow (anonymous) at (1,1) size 114x18
+            LayoutText (anonymous) at (19,1) size 91x16
+              text run at (19,1) width 91 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-container-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-container-expected.txt
index f1d08bb2..c633b9ab 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-container-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x411
   LayoutBlockFlow {html} at (0,0) size 800x411
     LayoutBlockFlow {body} at (0,0) size 800x411
-      LayoutSVGRoot {svg} at (0,0) size 406x410
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGContainer {g} at (303,303) size 100x100
           LayoutSVGEllipse {circle} at (303,303) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=350.00] [cy=350.00] [r=50.00]
         LayoutSVGText {text} at (56,35) size 288x19 contains 1 chunk(s)
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-root-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-root-expected.txt
index b635233..b2701ba 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/mouse-move-on-svg-root-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x411
   LayoutBlockFlow {html} at (0,0) size 800x411
     LayoutBlockFlow {body} at (0,0) size 800x411
-      LayoutSVGRoot {svg} at (0,0) size 406x410
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGEllipse {circle} at (150,150) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=197.00] [cy=197.00] [r=50.00]
         LayoutSVGText {text} at (99,35) size 202x19 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 201x19
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
index 80b9a0db..0f3f1b4 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
@@ -7,7 +7,7 @@
         text run at (0,0) width 728: "There should be no red displayed on the screen, and the patterns should not change when the browser window is resized."
       LayoutBR {br} at (728,0) size 0x19
       LayoutBR {br} at (0,20) size 0x19
-      LayoutSVGRoot {svg} at (8,47) size 202x307
+      LayoutSVGRoot {svg} at (8,48) size 202x302
         LayoutSVGContainer {g} at (9,49) size 200x200
           LayoutSVGRect {rect} at (9,149) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=100.00] [width=100.00] [height=50.00]
           LayoutSVGRect {rect} at (109,49) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=100.00] [y=0.00] [width=100.00] [height=50.00]
@@ -15,7 +15,7 @@
           LayoutSVGRect {rect} at (109,49) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=100.00] [y=0.00] [width=100.00] [height=100.00]
       LayoutText {#text} at (202,327) size 4x19
         text run at (202,327) width 4: " "
-      LayoutSVGRoot {svg} at (214,47) size 202x307
+      LayoutSVGRoot {svg} at (214,48) size 202x302
         LayoutSVGText {text} at (5,265) size 77x19 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 77x19
             chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 11 width 77.00: "+Transforms"
@@ -33,7 +33,7 @@
         text run at (408,327) width 4: " "
       LayoutText {#text} at (0,0) size 0x0
 layer at (420,48) size 202x302
-  LayoutSVGRoot {svg} at (420,47) size 202x307
+  LayoutSVGRoot {svg} at (420,48) size 202x302
     LayoutSVGText {text} at (5,265) size 162x19 contains 1 chunk(s)
       LayoutSVGInlineText {#text} at (0,0) size 162x19
         chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 24 width 162.00: "+Accelerated Compositing"
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/hixie/mixed/010-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/hixie/mixed/010-expected.txt
index efc8b5a5..bf92423 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/hixie/mixed/010-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/hixie/mixed/010-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 228x19
           text run at (0,0) width 228: "There should be a green block below."
       LayoutBlockFlow (anonymous) at (0,36) size 784x105
-        LayoutSVGRoot {svg} at (8,52) size 300x104
+        LayoutSVGRoot {svg} at (8,52) size 300x100
           LayoutSVGRect {rect} at (8,52) size 300x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
           LayoutSVGRect {rect} at (8,52) size 300x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/add-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/add-background-property-on-root-expected.txt
index 54a5e69..df1ca09 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/add-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/add-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 104],
-        [8, 8, 100, 104]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/change-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/change-background-color-expected.txt
deleted file mode 100644
index 1e7bff9..0000000
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/change-background-color-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "bounds": [800, 600],
-  "children": [
-    {
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "repaintRects": [
-        [8, 8, 200, 104]
-      ],
-      "paintInvalidationClients": [
-        "LayoutSVGRoot svg"
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/remove-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/remove-background-property-on-root-expected.txt
index 54a5e69..df1ca09 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/remove-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/repaint/remove-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 104],
-        [8, 8, 100, 104]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/text/small-fonts-in-html5-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/svg/text/small-fonts-in-html5-expected.txt
index 5cb936d8..1b914136 100644
--- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/text/small-fonts-in-html5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/text/small-fonts-in-html5-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 472x36
           text run at (0,0) width 472: "Small fonts in HTML5/inline SVG"
       LayoutBlockFlow (anonymous) at (0,58.44) size 784x507
-        LayoutSVGRoot {svg} at (8,79) size 502x507
+        LayoutSVGRoot {svg} at (8,79) size 502x503
           LayoutSVGContainer {g} at (159,267) size 94x21 [transform={m=((400.00,0.00)(0.00,400.00)) t=(0.00,0.00)}]
             LayoutSVGText {text} at (0,0) size 1x1 contains 1 chunk(s)
               LayoutSVGInlineText {#text} at (0,0) size 1x1
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.png
new file mode 100644
index 0000000..f4f6570
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.txt
new file mode 100644
index 0000000..d001b7b1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/inline/vertical-align-with-fallback-fonts-expected.txt
@@ -0,0 +1,26 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x208
+  LayoutBlockFlow {HTML} at (0,0) size 800x208
+    LayoutBlockFlow {BODY} at (8,16) size 784x184
+      LayoutBlockFlow {P} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 362x17
+          text run at (0,0) width 362: "Test pass if all lines have superscripts enclosed in a box."
+      LayoutBlockFlow {DIV} at (0,34) size 784x50
+        LayoutText {#text} at (0,-3) size 37x56
+          text run at (0,-3) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 21x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 19x28
+            text run at (37,-2) width 19: "A"
+      LayoutBlockFlow {DIV} at (0,84) size 784x50
+        LayoutText {#text} at (0,-3) size 37x56
+          text run at (0,-3) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 19x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 17x28
+            text run at (37,-2) width 17: "B"
+      LayoutBlockFlow {DIV} at (0,134) size 784x50
+        LayoutText {#text} at (0,-3) size 37x56
+          text run at (0,-3) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 28x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 26x28
+            text run at (37,-2) width 26: "\x{3042}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/selected-replaced-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/selected-replaced-expected.txt
index 948c2b7..0e484c0 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/selected-replaced-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/selected-replaced-expected.txt
@@ -6,9 +6,9 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 148, 214, 235],
+        [8, 148, 214, 232],
         [8, 68, 784, 235],
-        [8, 68, 214, 235]
+        [8, 68, 214, 232]
       ],
       "paintInvalidationClients": [
         "InlineBox",
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.png
index 5e512366..79a6fc5 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.txt
index 8f318d4..31dff7e4 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/basic/015-expected.txt
@@ -6,17 +6,17 @@
       LayoutBlockFlow {P} at (0,0) size 784x36
         LayoutText {#text} at (0,0) size 218x17
           text run at (0,0) width 218: "This tests for a regression against "
-        LayoutInline {I} at (0,0) size 774x35
-          LayoutInline {A} at (0,0) size 355x17 [color=#0000EE]
-            LayoutText {#text} at (217,0) size 355x17
-              text run at (217,0) width 355: "http://bugzilla.opendarwin.org/show_bug.cgi?id=6418"
-          LayoutText {#text} at (571,0) size 774x35
-            text run at (571,0) width 5: " "
-            text run at (575,0) width 199: "Incorrect scrollbar when using"
-            text run at (0,18) width 283: "overflow:auto and word-wrap:break-word; "
-            text run at (282,18) width 89: "in some cases"
-        LayoutText {#text} at (370,18) size 5x17
-          text run at (370,18) width 5: "."
+        LayoutInline {I} at (0,0) size 773x35
+          LayoutInline {A} at (0,0) size 354x17 [color=#0000EE]
+            LayoutText {#text} at (217,0) size 354x17
+              text run at (217,0) width 354: "http://bugzilla.opendarwin.org/show_bug.cgi?id=6418"
+          LayoutText {#text} at (570,0) size 773x35
+            text run at (570,0) width 5: " "
+            text run at (574,0) width 199: "Incorrect scrollbar when using"
+            text run at (0,18) width 281: "overflow:auto and word-wrap:break-word; "
+            text run at (280,18) width 89: "in some cases"
+        LayoutText {#text} at (368,18) size 5x17
+          text run at (368,18) width 5: "."
       LayoutBlockFlow {HR} at (0,52) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,70) size 784x18
         LayoutText {#text} at (0,0) size 267x17
@@ -34,29 +34,27 @@
         LayoutText {#text} at (0,0) size 672x17
           text run at (0,0) width 489: "The first line should break after the letter u, so that the gray border does not "
           text run at (488,0) width 184: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,202) size 87x38 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 70x35 [border: none (30px solid #C0C0C0) none]
-          LayoutText {#text} at (1,1) size 70x35
-            text run at (1,1) width 70: "Loremipsu"
-            text run at (1,19) width 13: "m"
+      LayoutBlockFlow {DIV} at (0,202) size 87x20 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 112x17 [border: none (30px solid #C0C0C0) none]
+          LayoutText {#text} at (1,1) size 82x17
+            text run at (1,1) width 82: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,248) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,266) size 784x18
+      LayoutBlockFlow {HR} at (0,230) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,248) size 784x18
         LayoutText {#text} at (0,0) size 622x17
           text run at (0,0) width 439: "The first line should break after the letter p, so that the text does not "
           text run at (438,0) width 184: "extend beyond the cyan box."
-      LayoutBlockFlow {DIV} at (0,300) size 87x38 [border: (1px solid #00FFFF)]
-        LayoutInline {SPAN} at (0,0) size 78x35 [border: none (30px solid #C0C0C0)]
-          LayoutText {#text} at (31,1) size 78x35
-            text run at (31,1) width 48: "Loremi"
-            text run at (1,19) width 35: "psum"
+      LayoutBlockFlow {DIV} at (0,282) size 87x20 [border: (1px solid #00FFFF)]
+        LayoutInline {SPAN} at (0,0) size 112x17 [border: none (30px solid #C0C0C0)]
+          LayoutText {#text} at (31,1) size 82x17
+            text run at (31,1) width 82: "Loremipsum"
         LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,346) size 784x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,364) size 784x18
+      LayoutBlockFlow {HR} at (0,310) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,328) size 784x18
         LayoutText {#text} at (0,0) size 258x17
           text run at (0,0) width 258: "\x{201C}Dolor\x{201D} should not break into two lines."
-layer at (8,406) size 39x20
-  LayoutBlockFlow (positioned) {DIV} at (8,406) size 39.33x20
+layer at (8,370) size 39x20
+  LayoutBlockFlow (positioned) {DIV} at (8,370) size 39.33x20
     LayoutBlockFlow {DIV} at (0,0) size 39.33x20 [border: (1px solid #00FFFF)]
       LayoutText {#text} at (1,1) size 38x17
         text run at (1,1) width 38: "Dolor"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/menulist-width-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/menulist-width-rtl-expected.png
new file mode 100644
index 0000000..e3c745d2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/menulist-width-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/menulist-width-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/menulist-width-rtl-expected.txt
new file mode 100644
index 0000000..625543af8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/menulist-width-rtl-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x69
+  LayoutBlockFlow {HTML} at (0,0) size 800x69
+    LayoutBlockFlow {BODY} at (8,8) size 784x53
+      LayoutBlockFlow {DIV} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 632x17
+          text run at (0,0) width 632: "The following line and the SELECT element should have same text, and no characters are lacking."
+      LayoutBlockFlow {DIV} at (0,18) size 784x16
+        LayoutText {#text} at (683,0) size 101x16
+          text run at (683,0) width 101 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+      LayoutBlockFlow (anonymous) at (0,34) size 784x19
+        LayoutMenuList {SELECT} at (664,0) size 120x19 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)]
+          LayoutBlockFlow (anonymous) at (1,1) size 118x17
+            LayoutText (anonymous) at (19,1) size 95x15
+              text run at (19,1) width 95 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.png
index c2001f213..5f386ea0 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.txt
index 069ba45..1fdc9fd3 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/justify-ideograph-simple-expected.txt
@@ -16,9 +16,9 @@
           text run at (0,30) width 336: "\x{61C9}\x{7528}\x{7A0B}\x{5F0F}\x{5E73}\x{53F0}\x{FF0C}\x{5BA2}\x{6236}\x{4E5F}\x{975E}\x{5E38}\x{559C}\x{611B}\x{958B}\x{767C}\x{4EBA}\x{54E1}\x{6240}\x{5275}\x{4F5C}\x{7684}\x{61C9}\x{7528}\x{7A0B}\x{5F0F}\x{3002}\x{300D}"
       LayoutBlockFlow {P} at (0,129) size 550x45
         LayoutText {#text} at (0,0) size 550x44
-          text run at (0,0) width 550: "EA Mobile \x{7684} Worldwide Studios \x{526F}\x{7E3D}\x{88C1} Travis Boatman \x{6307}\x{51FA}\x{FF1A}\x{300C}App Store \x{4E0D}\x{50C5}\x{5FB9}\x{5E95}\x{6539}\x{8B8A}\x{4E86}\x{884C}\x{52D5}\x{904A}\x{6232}\x{7522}\x{696D}"
-          text run at (0,15) width 550: "\x{7684}\x{751F}\x{614B}\x{FF0C}\x{800C}\x{4E14}\x{9084}\x{5728}\x{6301}\x{7E8C}\x{6F14}\x{9032}\x{3002}\x{6709}\x{4E86}\x{5168}\x{7403} 5 \x{5343}\x{591A}\x{842C}\x{7684} iPhone \x{548C} iPod touch \x{5BA2}\x{6236}\x{70BA}\x{57FA}\x{790E}\x{FF0C}App Store \x{8B93}\x{6211}\x{5011}\x{80FD}"
-          text run at (0,30) width 262: "\x{5920}\x{958B}\x{767C}\x{53D7}\x{5230}\x{5EE3}\x{5927}\x{7684}\x{5BA2}\x{6236}\x{559C}\x{611B}\x{7684}\x{9AD8}\x{54C1}\x{8CEA} EA \x{904A}\x{6232}\x{3002}\x{300D}"
+          text run at (0,0) width 550: "EA Mobile \x{7684} Worldwide Studios \x{526F}\x{7E3D}\x{88C1} Travis Boatman \x{6307}\x{51FA}\x{FF1A}\x{300C}App Store \x{4E0D}\x{50C5}\x{5FB9}\x{5E95}\x{6539}\x{8B8A}\x{4E86}\x{884C}\x{52D5}\x{904A}\x{6232}\x{7522}\x{696D}\x{7684}"
+          text run at (0,15) width 550: "\x{751F}\x{614B}\x{FF0C}\x{800C}\x{4E14}\x{9084}\x{5728}\x{6301}\x{7E8C}\x{6F14}\x{9032}\x{3002}\x{6709}\x{4E86}\x{5168}\x{7403} 5 \x{5343}\x{591A}\x{842C}\x{7684} iPhone \x{548C} iPod touch \x{5BA2}\x{6236}\x{70BA}\x{57FA}\x{790E}\x{FF0C}App Store \x{8B93}\x{6211}\x{5011}\x{80FD}\x{5920}"
+          text run at (0,30) width 250: "\x{958B}\x{767C}\x{53D7}\x{5230}\x{5EE3}\x{5927}\x{7684}\x{5BA2}\x{6236}\x{559C}\x{611B}\x{7684}\x{9AD8}\x{54C1}\x{8CEA} EA \x{904A}\x{6232}\x{3002}\x{300D}"
       LayoutBlockFlow {P} at (0,186) size 550x45
         LayoutText {#text} at (0,0) size 550x44
           text run at (0,0) width 550: "Smule \x{7684}\x{57F7}\x{884C}\x{9577} Jeff Smith \x{8868}\x{793A}\x{FF1A}\x{300C}\x{6211}\x{5011}\x{7684} I Am T-Pain \x{61C9}\x{7528}\x{7A0B}\x{5F0F}\x{53D7}\x{5230}\x{5168}\x{7403}\x{5BA2}\x{6236}\x{7684}\x{71B1}\x{70C8}\x{8FF4}\x{97FF}\x{FF0C}\x{6BCF}\x{65E5}\x{8D85}\x{904E}"
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/selection/text-selection-newline-br-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/selection/text-selection-newline-br-expected.png
deleted file mode 100644
index b397b03..0000000
--- a/third_party/WebKit/LayoutTests/platform/win/paint/selection/text-selection-newline-br-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-container-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-container-expected.txt
index 029cadf..0049ff8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-container-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-container-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x410
   LayoutBlockFlow {html} at (0,0) size 800x410
     LayoutBlockFlow {body} at (0,0) size 800x410
-      LayoutSVGRoot {svg} at (0,0) size 406x409
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGContainer {g} at (303,303) size 100x100
           LayoutSVGEllipse {circle} at (303,303) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=350.00] [cy=350.00] [r=50.00]
         LayoutSVGText {text} at (44,36) size 312x17 contains 1 chunk(s)
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-root-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-root-expected.txt
index cea70fc..03f153a 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/mouse-move-on-svg-root-expected.txt
@@ -3,7 +3,7 @@
 layer at (0,0) size 800x410
   LayoutBlockFlow {html} at (0,0) size 800x410
     LayoutBlockFlow {body} at (0,0) size 800x410
-      LayoutSVGRoot {svg} at (0,0) size 406x409
+      LayoutSVGRoot {svg} at (0,0) size 406x406
         LayoutSVGEllipse {circle} at (150,150) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=197.00] [cy=197.00] [r=50.00]
         LayoutSVGText {text} at (90,36) size 220x17 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 219x17
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
index de807f5..5e4d1df 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/pattern-userSpaceOnUse-userToBaseTransform-expected.txt
@@ -7,7 +7,7 @@
         text run at (0,0) width 773: "There should be no red displayed on the screen, and the patterns should not change when the browser window is resized."
       LayoutBR {br} at (772,0) size 1x17
       LayoutBR {br} at (0,18) size 0x17
-      LayoutSVGRoot {svg} at (8,43) size 202x306
+      LayoutSVGRoot {svg} at (8,44) size 202x302
         LayoutSVGContainer {g} at (9,45) size 200x200
           LayoutSVGRect {rect} at (9,145) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=100.00] [width=100.00] [height=50.00]
           LayoutSVGRect {rect} at (109,45) size 100x50 [fill={[type=SOLID] [color=#FF0000]}] [x=100.00] [y=0.00] [width=100.00] [height=50.00]
@@ -15,7 +15,7 @@
           LayoutSVGRect {rect} at (109,45) size 100x100 [fill={[type=PATTERN] [id="pattern"]}] [x=100.00] [y=0.00] [width=100.00] [height=100.00]
       LayoutText {#text} at (202,324) size 4x17
         text run at (202,324) width 4: " "
-      LayoutSVGRoot {svg} at (214,43) size 202x306
+      LayoutSVGRoot {svg} at (214,44) size 202x302
         LayoutSVGText {text} at (5,266) size 83x17 contains 1 chunk(s)
           LayoutSVGInlineText {#text} at (0,0) size 83x17
             chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 11 width 82.78: "+Transforms"
@@ -33,7 +33,7 @@
         text run at (408,324) width 4: " "
       LayoutText {#text} at (0,0) size 0x0
 layer at (420,44) size 202x302
-  LayoutSVGRoot {svg} at (420,43) size 202x306
+  LayoutSVGRoot {svg} at (420,44) size 202x302
     LayoutSVGText {text} at (5,266) size 173x17 contains 1 chunk(s)
       LayoutSVGInlineText {#text} at (0,0) size 173x17
         chunk 1 text run 1 at (5.00,280.00) startOffset 0 endOffset 24 width 172.09: "+Accelerated Compositing"
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/mixed/010-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/mixed/010-expected.txt
index a61402b..2af3bbb 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/mixed/010-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/mixed/010-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 241x17
           text run at (0,0) width 241: "There should be a green block below."
       LayoutBlockFlow (anonymous) at (0,34) size 784x104
-        LayoutSVGRoot {svg} at (8,50) size 300x103
+        LayoutSVGRoot {svg} at (8,50) size 300x100
           LayoutSVGRect {rect} at (8,50) size 300x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
           LayoutSVGRect {rect} at (8,50) size 300x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=300.00] [height=100.00]
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/add-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/repaint/add-background-property-on-root-expected.txt
index 495656f0..c797995 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/add-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/repaint/add-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 103],
-        [8, 8, 100, 103]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/remove-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/repaint/remove-background-property-on-root-expected.txt
index 495656f0..c797995 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/remove-background-property-on-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/repaint/remove-background-property-on-root-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [8, 8, 100, 103],
-        [8, 8, 100, 103]
+        [8, 8, 100, 100]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-in-html5-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-in-html5-expected.txt
index c08b56a..e932f11d 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-in-html5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-in-html5-expected.txt
@@ -7,7 +7,7 @@
         LayoutText {#text} at (0,0) size 470x36
           text run at (0,0) width 470: "Small fonts in HTML5/inline SVG"
       LayoutBlockFlow (anonymous) at (0,58.44) size 784x506
-        LayoutSVGRoot {svg} at (8,79) size 502x506
+        LayoutSVGRoot {svg} at (8,79) size 502x503
           LayoutSVGContainer {g} at (159,267) size 94x21 [transform={m=((400.00,0.00)(0.00,400.00)) t=(0.00,0.00)}]
             LayoutSVGText {text} at (0,0) size 1x1 contains 1 chunk(s)
               LayoutSVGInlineText {#text} at (0,0) size 1x1
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/spv2/paint/selection/text-selection-newline-br-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
deleted file mode 100644
index b397b03..0000000
--- a/third_party/WebKit/LayoutTests/platform/win/virtual/spv2/paint/selection/text-selection-newline-br-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/inline/vertical-align-with-fallback-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/inline/vertical-align-with-fallback-fonts-expected.png
new file mode 100644
index 0000000..00dfb980
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win7/fast/inline/vertical-align-with-fallback-fonts-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/inline/vertical-align-with-fallback-fonts-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/fast/inline/vertical-align-with-fallback-fonts-expected.txt
new file mode 100644
index 0000000..2dec5e71
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win7/fast/inline/vertical-align-with-fallback-fonts-expected.txt
@@ -0,0 +1,26 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x208
+  LayoutBlockFlow {HTML} at (0,0) size 800x208
+    LayoutBlockFlow {BODY} at (8,16) size 784x184
+      LayoutBlockFlow {P} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 362x17
+          text run at (0,0) width 362: "Test pass if all lines have superscripts enclosed in a box."
+      LayoutBlockFlow {DIV} at (0,34) size 784x50
+        LayoutText {#text} at (0,-3) size 37x56
+          text run at (0,-3) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 21x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 19x28
+            text run at (37,-2) width 19: "A"
+      LayoutBlockFlow {DIV} at (0,84) size 784x50
+        LayoutText {#text} at (0,-3) size 37x56
+          text run at (0,-3) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 19x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 17x28
+            text run at (37,-2) width 17: "B"
+      LayoutBlockFlow {DIV} at (0,134) size 784x50
+        LayoutText {#text} at (0,-3) size 37x56
+          text run at (0,-3) width 37: "A"
+        LayoutInline {SPAN} at (0,0) size 26x30 [border: (1px solid #000000)]
+          LayoutText {#text} at (37,-2) size 24x28
+            text run at (37,-2) width 24: "\x{3042}"
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/menulist-width-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/menulist-width-rtl-expected.png
new file mode 100644
index 0000000..8111f13
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/menulist-width-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/menulist-width-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/menulist-width-rtl-expected.txt
new file mode 100644
index 0000000..fd78fd6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/menulist-width-rtl-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x69
+  LayoutBlockFlow {HTML} at (0,0) size 800x69
+    LayoutBlockFlow {BODY} at (8,8) size 784x53
+      LayoutBlockFlow {DIV} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 632x17
+          text run at (0,0) width 632: "The following line and the SELECT element should have same text, and no characters are lacking."
+      LayoutBlockFlow {DIV} at (0,18) size 784x16
+        LayoutText {#text} at (697,0) size 87x16
+          text run at (697,0) width 87 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+      LayoutBlockFlow (anonymous) at (0,34) size 784x19
+        LayoutMenuList {SELECT} at (664,0) size 120x19 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)]
+          LayoutBlockFlow (anonymous) at (1,1) size 118x17
+            LayoutText (anonymous) at (19,1) size 95x15
+              text run at (19,1) width 95 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/change-background-color-expected.txt b/third_party/WebKit/LayoutTests/svg/repaint/change-background-color-expected.txt
similarity index 90%
rename from third_party/WebKit/LayoutTests/platform/win/svg/repaint/change-background-color-expected.txt
rename to third_party/WebKit/LayoutTests/svg/repaint/change-background-color-expected.txt
index c6762ac..8dedcb9 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/repaint/change-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/svg/repaint/change-background-color-expected.txt
@@ -6,7 +6,7 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 8, 200, 103]
+        [8, 8, 200, 100]
       ],
       "paintInvalidationClients": [
         "LayoutSVGRoot svg"
diff --git a/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
index 08251431..ec715f7 100644
--- a/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
@@ -28,6 +28,7 @@
     property addEventListener
     property animate
     property appendChild
+    property attachShadow
     property attributes
     property baseURI
     property blur
@@ -1115,6 +1116,7 @@
     property addEventListener
     property animate
     property appendChild
+    property attachShadow
     property attributes
     property baseURI
     property blur
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
index 90cc7c7..e91e073a5 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -1247,6 +1247,7 @@
     getter shadowRoot
     getter tagName
     method animate
+    method attachShadow
     method closest
     method constructor
     method createShadowRoot
diff --git a/third_party/WebKit/Source/core/animation/AnimationTimeline.cpp b/third_party/WebKit/Source/core/animation/AnimationTimeline.cpp
index fe82bc2..08004af 100644
--- a/third_party/WebKit/Source/core/animation/AnimationTimeline.cpp
+++ b/third_party/WebKit/Source/core/animation/AnimationTimeline.cpp
@@ -132,8 +132,6 @@
 
     m_lastCurrentTimeInternal = currentTimeInternal();
 
-    m_timing->cancelWake();
-
     HeapVector<Member<Animation>> animations;
     animations.reserveInitialCapacity(m_animationsNeedingUpdate.size());
     for (Animation* animation : m_animationsNeedingUpdate)
diff --git a/third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp b/third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp
index b4546ce..03cb2ee7 100644
--- a/third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp
+++ b/third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp
@@ -64,20 +64,6 @@
         EXPECT_CALL(*this, cancelWake());
     }
 
-    void expectNextFrameAction()
-    {
-        ::testing::Sequence sequence;
-        EXPECT_CALL(*this, cancelWake()).InSequence(sequence);
-        EXPECT_CALL(*this, serviceOnNextFrame()).InSequence(sequence);
-    }
-
-    void expectDelayedAction(double when)
-    {
-        ::testing::Sequence sequence;
-        EXPECT_CALL(*this, cancelWake()).InSequence(sequence);
-        EXPECT_CALL(*this, wakeAfter(when)).InSequence(sequence);
-    }
-
     DEFINE_INLINE_TRACE()
     {
         AnimationTimeline::PlatformTiming::trace(visitor);
@@ -366,16 +352,16 @@
     timeline->play(keyframeEffect);
 
     // TODO: Put the animation startTime in the future when we add the capability to change animation startTime
-    platformTiming->expectDelayedAction(timing.startDelay - minimumDelay());
+    EXPECT_CALL(*platformTiming, wakeAfter(timing.startDelay - minimumDelay()));
     updateClockAndService(0);
 
-    platformTiming->expectDelayedAction(timing.startDelay - minimumDelay() - 1.5);
+    EXPECT_CALL(*platformTiming, wakeAfter(timing.startDelay - minimumDelay() - 1.5));
     updateClockAndService(1.5);
 
     EXPECT_CALL(*platformTiming, serviceOnNextFrame());
     wake();
 
-    platformTiming->expectNextFrameAction();
+    EXPECT_CALL(*platformTiming, serviceOnNextFrame());
     updateClockAndService(4.98);
 }
 
diff --git a/third_party/WebKit/Source/core/animation/css/CSSAnimationUpdate.h b/third_party/WebKit/Source/core/animation/css/CSSAnimationUpdate.h
index a45b0a9..5131ac4f 100644
--- a/third_party/WebKit/Source/core/animation/css/CSSAnimationUpdate.h
+++ b/third_party/WebKit/Source/core/animation/css/CSSAnimationUpdate.h
@@ -36,8 +36,9 @@
         {
         }
 
-        NewAnimation(AtomicString name, InertEffect* effect, Timing timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule)
+        NewAnimation(AtomicString name, size_t nameIndex, InertEffect* effect, Timing timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule)
             : name(name)
+            , nameIndex(nameIndex)
             , effect(effect)
             , timing(timing)
             , styleRule(styleRule)
@@ -52,6 +53,7 @@
         }
 
         AtomicString name;
+        size_t nameIndex;
         Member<InertEffect> effect;
         Timing timing;
         RefPtrWillBeMember<StyleRuleKeyframes> styleRule;
@@ -66,8 +68,8 @@
         {
         }
 
-        UpdatedAnimation(AtomicString name, Animation* animation, InertEffect* effect, Timing specifiedTiming, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule)
-            : name(name)
+        UpdatedAnimation(size_t index, Animation* animation, InertEffect* effect, Timing specifiedTiming, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule)
+            : index(index)
             , animation(animation)
             , effect(effect)
             , specifiedTiming(specifiedTiming)
@@ -83,7 +85,7 @@
             visitor->trace(styleRule);
         }
 
-        AtomicString name;
+        size_t index;
         Member<Animation> animation;
         Member<InertEffect> effect;
         Timing specifiedTiming;
@@ -110,8 +112,8 @@
         m_newTransitions = update.newTransitions();
         m_activeInterpolationsForAnimations = update.activeInterpolationsForAnimations();
         m_activeInterpolationsForTransitions = update.activeInterpolationsForTransitions();
-        m_cancelledAnimationNames = update.cancelledAnimationNames();
-        m_animationsWithPauseToggled = update.animationsWithPauseToggled();
+        m_cancelledAnimationIndices = update.cancelledAnimationIndices();
+        m_animationIndicesWithPauseToggled = update.animationIndicesWithPauseToggled();
         m_cancelledTransitions = update.cancelledTransitions();
         m_finishedTransitions = update.finishedTransitions();
         m_updatedCompositorKeyframes = update.updatedCompositorKeyframes();
@@ -124,33 +126,33 @@
         m_newTransitions.clear();
         m_activeInterpolationsForAnimations.clear();
         m_activeInterpolationsForTransitions.clear();
-        m_cancelledAnimationNames.clear();
-        m_animationsWithPauseToggled.clear();
+        m_cancelledAnimationIndices.clear();
+        m_animationIndicesWithPauseToggled.clear();
         m_cancelledTransitions.clear();
         m_finishedTransitions.clear();
         m_updatedCompositorKeyframes.clear();
     }
 
-    void startAnimation(const AtomicString& animationName, InertEffect* effect, const Timing& timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule)
+    void startAnimation(const AtomicString& animationName, size_t nameIndex, InertEffect* effect, const Timing& timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule)
     {
         effect->setName(animationName);
-        m_newAnimations.append(NewAnimation(animationName, effect, timing, styleRule));
+        m_newAnimations.append(NewAnimation(animationName, nameIndex, effect, timing, styleRule));
     }
     // Returns whether animation has been suppressed and should be filtered during style application.
     bool isSuppressedAnimation(const Animation* animation) const { return m_suppressedAnimations.contains(animation); }
-    void cancelAnimation(const AtomicString& name, Animation& animation)
+    void cancelAnimation(size_t index, const Animation& animation)
     {
-        m_cancelledAnimationNames.append(name);
+        m_cancelledAnimationIndices.append(index);
         m_suppressedAnimations.add(&animation);
     }
-    void toggleAnimationPaused(const AtomicString& name)
+    void toggleAnimationIndexPaused(size_t index)
     {
-        m_animationsWithPauseToggled.append(name);
+        m_animationIndicesWithPauseToggled.append(index);
     }
-    void updateAnimation(const AtomicString& name, Animation* animation, InertEffect* effect, const Timing& specifiedTiming,
+    void updateAnimation(size_t index, Animation* animation, InertEffect* effect, const Timing& specifiedTiming,
         PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule)
     {
-        m_animationsWithUpdates.append(UpdatedAnimation(name, animation, effect, specifiedTiming, styleRule));
+        m_animationsWithUpdates.append(UpdatedAnimation(index, animation, effect, specifiedTiming, styleRule));
         m_suppressedAnimations.add(animation);
     }
     void updateCompositorKeyframes(Animation* animation)
@@ -173,9 +175,9 @@
     void finishTransition(CSSPropertyID id) { m_finishedTransitions.add(id); }
 
     const HeapVector<NewAnimation>& newAnimations() const { return m_newAnimations; }
-    const Vector<AtomicString>& cancelledAnimationNames() const { return m_cancelledAnimationNames; }
+    const Vector<size_t>& cancelledAnimationIndices() const { return m_cancelledAnimationIndices; }
     const HeapHashSet<Member<const Animation>>& suppressedAnimations() const { return m_suppressedAnimations; }
-    const Vector<AtomicString>& animationsWithPauseToggled() const { return m_animationsWithPauseToggled; }
+    const Vector<size_t>& animationIndicesWithPauseToggled() const { return m_animationIndicesWithPauseToggled; }
     const HeapVector<UpdatedAnimation>& animationsWithUpdates() const { return m_animationsWithUpdates; }
     const HeapVector<Member<Animation>>& updatedCompositorKeyframes() const { return m_updatedCompositorKeyframes; }
 
@@ -206,9 +208,9 @@
     bool isEmpty() const
     {
         return m_newAnimations.isEmpty()
-            && m_cancelledAnimationNames.isEmpty()
+            && m_cancelledAnimationIndices.isEmpty()
             && m_suppressedAnimations.isEmpty()
-            && m_animationsWithPauseToggled.isEmpty()
+            && m_animationIndicesWithPauseToggled.isEmpty()
             && m_animationsWithUpdates.isEmpty()
             && m_newTransitions.isEmpty()
             && m_cancelledTransitions.isEmpty()
@@ -233,9 +235,9 @@
     // with the same name, due to the way in which we split up animations with
     // incomplete keyframes.
     HeapVector<NewAnimation> m_newAnimations;
-    Vector<AtomicString> m_cancelledAnimationNames;
+    Vector<size_t> m_cancelledAnimationIndices;
     HeapHashSet<Member<const Animation>> m_suppressedAnimations;
-    Vector<AtomicString> m_animationsWithPauseToggled;
+    Vector<size_t> m_animationIndicesWithPauseToggled;
     HeapVector<UpdatedAnimation> m_animationsWithUpdates;
     HeapVector<Member<Animation>> m_updatedCompositorKeyframes;
 
diff --git a/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp b/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp
index 13865e9..4070218f 100644
--- a/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp
+++ b/third_party/WebKit/Source/core/animation/css/CSSAnimations.cpp
@@ -191,8 +191,8 @@
 
 bool CSSAnimations::isAnimationForInspector(const Animation& animation)
 {
-    for (const auto& it : m_animations) {
-        if (it.value->animation->sequenceNumber() == animation.sequenceNumber())
+    for (const auto& runningAnimation : m_runningAnimations) {
+        if (runningAnimation->animation->sequenceNumber() == animation.sequenceNumber())
             return true;
     }
     return false;
@@ -232,7 +232,7 @@
         return;
 
     CSSAnimations& cssAnimations = elementAnimations->cssAnimations();
-    for (auto& runningAnimation : cssAnimations.m_animations.values()) {
+    for (auto& runningAnimation : cssAnimations.m_runningAnimations) {
         Animation& animation = *runningAnimation->animation;
         if (animation.effect() && animation.effect()->isKeyframeEffect()) {
             EffectModel* model = toKeyframeEffect(animation.effect())->model();
@@ -276,18 +276,24 @@
     const CSSAnimations* cssAnimations = elementAnimations ? &elementAnimations->cssAnimations() : nullptr;
     const Element* elementForScoping = animatingElement ? animatingElement : &element;
 
-    HashSet<AtomicString> inactive;
-    if (cssAnimations) {
-        for (const auto& entry : cssAnimations->m_animations)
-            inactive.add(entry.key);
-    }
+    Vector<bool> cancelRunningAnimationFlags(cssAnimations ? cssAnimations->m_runningAnimations.size() : 0);
+    for (bool& flag : cancelRunningAnimationFlags)
+        flag = true;
 
-    if (style.display() != NONE) {
-        for (size_t i = 0; animationData && i < animationData->nameList().size(); ++i) {
-            AtomicString animationName(animationData->nameList()[i]);
-            if (animationName == CSSAnimationData::initialName())
+    if (animationData && style.display() != NONE) {
+        const Vector<AtomicString>& nameList = animationData->nameList();
+        for (size_t i = 0; i < nameList.size(); ++i) {
+            AtomicString name = nameList[i];
+            if (name == CSSAnimationData::initialName())
                 continue;
 
+            // Find n where this is the nth occurence of this animation name.
+            size_t nameIndex = 0;
+            for (size_t j = 0; j < i; j++) {
+                if (nameList[j] == name)
+                    nameIndex++;
+            }
+
             const bool isPaused = CSSTimingData::getRepeated(animationData->playStateList(), i) == AnimPlayStatePaused;
 
             Timing timing = animationData->convertToTiming(i);
@@ -295,45 +301,54 @@
             RefPtr<TimingFunction> keyframeTimingFunction = timing.timingFunction;
             timing.timingFunction = Timing::defaults().timingFunction;
 
-            RefPtrWillBeRawPtr<StyleRuleKeyframes> keyframesRule = resolver->findKeyframesRule(elementForScoping, animationName);
+            RefPtrWillBeRawPtr<StyleRuleKeyframes> keyframesRule = resolver->findKeyframesRule(elementForScoping, name);
             if (!keyframesRule)
                 continue; // Cancel the animation if there's no style rule for it.
 
+            const RunningAnimation* existingAnimation = nullptr;
+            size_t existingAnimationIndex = 0;
+
             if (cssAnimations) {
-                AnimationMap::const_iterator existing(cssAnimations->m_animations.find(animationName));
-                if (existing != cssAnimations->m_animations.end()) {
-                    inactive.remove(animationName);
-
-                    const RunningAnimation* runningAnimation = existing->value.get();
-                    Animation* animation = runningAnimation->animation.get();
-
-                    if (keyframesRule != runningAnimation->styleRule || keyframesRule->version() != runningAnimation->styleRuleVersion || runningAnimation->specifiedTiming != specifiedTiming) {
-                        ASSERT(!isAnimationStyleChange);
-                        update.updateAnimation(animationName, animation, InertEffect::create(
-                            createKeyframeEffectModel(resolver, animatingElement, element, &style, parentStyle, animationName, keyframeTimingFunction.get(), i),
-                            timing, isPaused, animation->unlimitedCurrentTimeInternal()), specifiedTiming, keyframesRule);
+                for (size_t i = 0; i < cssAnimations->m_runningAnimations.size(); i++) {
+                    const RunningAnimation& runningAnimation = *cssAnimations->m_runningAnimations[i];
+                    if (runningAnimation.name == name && runningAnimation.nameIndex == nameIndex) {
+                        existingAnimation = &runningAnimation;
+                        existingAnimationIndex = i;
+                        break;
                     }
-
-                    if (isPaused != animation->paused()) {
-                        ASSERT(!isAnimationStyleChange);
-                        update.toggleAnimationPaused(animationName);
-                    }
-
-                    continue;
                 }
             }
 
-            ASSERT(!isAnimationStyleChange);
-            update.startAnimation(animationName, InertEffect::create(
-                createKeyframeEffectModel(resolver, animatingElement, element, &style, parentStyle, animationName, keyframeTimingFunction.get(), i),
-                timing, isPaused, 0), specifiedTiming, keyframesRule);
+            if (existingAnimation) {
+                cancelRunningAnimationFlags[existingAnimationIndex] = false;
+
+                Animation* animation = existingAnimation->animation.get();
+
+                if (keyframesRule != existingAnimation->styleRule || keyframesRule->version() != existingAnimation->styleRuleVersion || existingAnimation->specifiedTiming != specifiedTiming) {
+                    ASSERT(!isAnimationStyleChange);
+                    update.updateAnimation(existingAnimationIndex, animation, InertEffect::create(
+                        createKeyframeEffectModel(resolver, animatingElement, element, &style, parentStyle, name, keyframeTimingFunction.get(), i),
+                        timing, isPaused, animation->unlimitedCurrentTimeInternal()), specifiedTiming, keyframesRule);
+                }
+
+                if (isPaused != animation->paused()) {
+                    ASSERT(!isAnimationStyleChange);
+                    update.toggleAnimationIndexPaused(existingAnimationIndex);
+                }
+            } else {
+                ASSERT(!isAnimationStyleChange);
+                update.startAnimation(name, nameIndex, InertEffect::create(
+                    createKeyframeEffectModel(resolver, animatingElement, element, &style, parentStyle, name, keyframeTimingFunction.get(), i),
+                    timing, isPaused, 0), specifiedTiming, keyframesRule);
+            }
         }
     }
 
-    ASSERT(inactive.isEmpty() || cssAnimations);
-    for (const AtomicString& animationName : inactive) {
-        ASSERT(!isAnimationStyleChange);
-        update.cancelAnimation(animationName, *cssAnimations->m_animations.get(animationName)->animation);
+    for (size_t i = 0; i < cancelRunningAnimationFlags.size(); i++) {
+        if (cancelRunningAnimationFlags[i]) {
+            ASSERT(cssAnimations && !isAnimationStyleChange);
+            update.cancelAnimation(i, *cssAnimations->m_runningAnimations[i]->animation);
+        }
     }
 }
 
@@ -350,20 +365,23 @@
     // https://code.google.com/p/chromium/issues/detail?id=339847
     DisableCompositingQueryAsserts disabler;
 
-    for (const AtomicString& animationName : m_pendingUpdate.cancelledAnimationNames()) {
-        Animation* animation = m_animations.take(animationName)->animation;
-        animation->cancel();
-        animation->update(TimingUpdateOnDemand);
+    const Vector<size_t>& cancelledIndices = m_pendingUpdate.cancelledAnimationIndices();
+    for (size_t i = cancelledIndices.size(); i-- > 0;) {
+        ASSERT(i == cancelledIndices.size() - 1 || cancelledIndices[i] < cancelledIndices[i + 1]);
+        Animation& animation = *m_runningAnimations[cancelledIndices[i]]->animation;
+        animation.cancel();
+        animation.update(TimingUpdateOnDemand);
+        m_runningAnimations.remove(cancelledIndices[i]);
     }
 
-    for (const AtomicString& animationName : m_pendingUpdate.animationsWithPauseToggled()) {
-        Animation* animation = m_animations.get(animationName)->animation.get();
-        if (animation->paused())
-            animation->unpause();
+    for (size_t pausedIndex : m_pendingUpdate.animationIndicesWithPauseToggled()) {
+        Animation& animation = *m_runningAnimations[pausedIndex]->animation;
+        if (animation.paused())
+            animation.unpause();
         else
-            animation->pause();
-        if (animation->outdated())
-            animation->update(TimingUpdateOnDemand);
+            animation.pause();
+        if (animation.outdated())
+            animation.update(TimingUpdateOnDemand);
     }
 
     for (const auto& animation : m_pendingUpdate.updatedCompositorKeyframes())
@@ -375,7 +393,7 @@
         effect->setModel(entry.effect->model());
         effect->updateSpecifiedTiming(entry.effect->specifiedTiming());
 
-        m_animations.find(entry.name)->value->update(entry);
+        m_runningAnimations[entry.index]->update(entry);
     }
 
     for (const auto& entry : m_pendingUpdate.newAnimations()) {
@@ -388,7 +406,7 @@
             animation->pause();
         animation->update(TimingUpdateOnDemand);
 
-        m_animations.set(entry.name, new RunningAnimation(animation, entry));
+        m_runningAnimations.append(new RunningAnimation(animation, entry));
     }
 
     // Transitions that are run on the compositor only update main-thread state
@@ -613,9 +631,9 @@
 
 void CSSAnimations::cancel()
 {
-    for (const auto& entry : m_animations) {
-        entry.value->animation->cancel();
-        entry.value->animation->update(TimingUpdateOnDemand);
+    for (const auto& runningAnimation : m_runningAnimations) {
+        runningAnimation->animation->cancel();
+        runningAnimation->animation->update(TimingUpdateOnDemand);
     }
 
     for (const auto& entry : m_transitions) {
@@ -623,7 +641,7 @@
         entry.value.animation->update(TimingUpdateOnDemand);
     }
 
-    m_animations.clear();
+    m_runningAnimations.clear();
     m_transitions.clear();
     clearPendingUpdate();
 }
@@ -818,7 +836,7 @@
 {
     visitor->trace(m_transitions);
     visitor->trace(m_pendingUpdate);
-    visitor->trace(m_animations);
+    visitor->trace(m_runningAnimations);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/css/CSSAnimations.h b/third_party/WebKit/Source/core/animation/css/CSSAnimations.h
index b28a7e1..70437b75 100644
--- a/third_party/WebKit/Source/core/animation/css/CSSAnimations.h
+++ b/third_party/WebKit/Source/core/animation/css/CSSAnimations.h
@@ -73,7 +73,7 @@
         m_pendingUpdate.clear();
     }
     void maybeApplyPendingUpdate(Element*);
-    bool isEmpty() const { return m_animations.isEmpty() && m_transitions.isEmpty() && m_pendingUpdate.isEmpty(); }
+    bool isEmpty() const { return m_runningAnimations.isEmpty() && m_transitions.isEmpty() && m_pendingUpdate.isEmpty(); }
     void cancel();
 
     DECLARE_TRACE();
@@ -83,6 +83,8 @@
     public:
         RunningAnimation(Animation* animation, CSSAnimationUpdate::NewAnimation newAnimation)
             : animation(animation)
+            , name(newAnimation.name)
+            , nameIndex(newAnimation.nameIndex)
             , specifiedTiming(newAnimation.timing)
             , styleRule(newAnimation.styleRule)
             , styleRuleVersion(newAnimation.styleRuleVersion)
@@ -91,6 +93,7 @@
 
         void update(CSSAnimationUpdate::UpdatedAnimation update)
         {
+            ASSERT(update.animation == animation);
             styleRule = update.styleRule;
             styleRuleVersion = update.styleRuleVersion;
             specifiedTiming = update.specifiedTiming;
@@ -103,6 +106,8 @@
         }
 
         Member<Animation> animation;
+        AtomicString name;
+        size_t nameIndex;
         Timing specifiedTiming;
         RefPtrWillBeMember<StyleRuleKeyframes> styleRule;
         unsigned styleRuleVersion;
@@ -121,8 +126,7 @@
         const AnimatableValue* to;
     };
 
-    using AnimationMap = HeapHashMap<AtomicString, Member<RunningAnimation>>;
-    AnimationMap m_animations;
+    HeapVector<Member<RunningAnimation>> m_runningAnimations;
 
     using TransitionMap = HeapHashMap<CSSPropertyID, RunningTransition>;
     TransitionMap m_transitions;
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi
index d9f411d5..5baa046 100644
--- a/third_party/WebKit/Source/core/core.gypi
+++ b/third_party/WebKit/Source/core/core.gypi
@@ -1973,6 +1973,7 @@
             'paint/ObjectPaintProperties.h',
             'paint/ObjectPainter.cpp',
             'paint/ObjectPainter.h',
+            'paint/PaintInfo.cpp',
             'paint/PaintInfo.h',
             'paint/PaintLayer.cpp',
             'paint/PaintLayerClipper.cpp',
@@ -3903,6 +3904,7 @@
             'paint/NinePieceImageGridTest.cpp',
             'paint/PaintControllerPaintTest.cpp',
             'paint/PaintControllerPaintTest.h',
+            'paint/PaintInfoTest.cpp',
             'paint/PaintLayerPainterTest.cpp',
             'paint/TableCellPainterTest.cpp',
             'paint/TextPainterTest.cpp',
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp
index 68af23e..271ecb12 100644
--- a/third_party/WebKit/Source/core/dom/Element.cpp
+++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -153,6 +153,8 @@
 using namespace HTMLNames;
 using namespace XMLNames;
 
+enum class ClassStringContent { Empty, WhiteSpaceOnly, HasClasses };
+
 PassRefPtrWillBeRawPtr<Element> Element::create(const QualifiedName& tagName, Document* document)
 {
     return adoptRefWillBeNoop(new Element(tagName, document, CreateElement));
@@ -1229,7 +1231,7 @@
 }
 
 template <typename CharacterType>
-static inline bool classStringHasClassName(const CharacterType* characters, unsigned length)
+static inline ClassStringContent classStringHasClassName(const CharacterType* characters, unsigned length)
 {
     ASSERT(length > 0);
 
@@ -1240,15 +1242,20 @@
         ++i;
     } while (i < length);
 
-    return i < length;
+    if (i == length && length == 1)
+        return ClassStringContent::Empty;
+    if (i == length && length > 1)
+        return ClassStringContent::WhiteSpaceOnly;
+
+    return ClassStringContent::HasClasses;
 }
 
-static inline bool classStringHasClassName(const AtomicString& newClassString)
+static inline ClassStringContent classStringHasClassName(const AtomicString& newClassString)
 {
     unsigned length = newClassString.length();
 
     if (!length)
-        return false;
+        return ClassStringContent::Empty;
 
     if (newClassString.is8Bit())
         return classStringHasClassName(newClassString.characters8(), length);
@@ -1261,8 +1268,9 @@
     bool testShouldInvalidateStyle = inActiveDocument() && styleResolver && styleChangeType() < SubtreeStyleChange;
 
     ASSERT(elementData());
-    if (classStringHasClassName(newClassString)) {
-        const bool shouldFoldCase = document().inQuirksMode();
+    ClassStringContent classStringContentType = classStringHasClassName(newClassString);
+    const bool shouldFoldCase = document().inQuirksMode();
+    if (classStringContentType == ClassStringContent::HasClasses) {
         const SpaceSplitString oldClasses = elementData()->classNames();
         elementData()->setClass(newClassString, shouldFoldCase);
         const SpaceSplitString& newClasses = elementData()->classNames();
@@ -1272,7 +1280,10 @@
         const SpaceSplitString& oldClasses = elementData()->classNames();
         if (testShouldInvalidateStyle)
             document().styleEngine().classChangedForElement(oldClasses, *this);
-        elementData()->clearClass();
+        if (classStringContentType == ClassStringContent::WhiteSpaceOnly)
+            elementData()->setClass(newClassString, shouldFoldCase);
+        else
+            elementData()->clearClass();
     }
 
     if (hasRareData())
@@ -1297,7 +1308,7 @@
 
     if (name == HTMLNames::classAttr) {
         const AtomicString& newClassString = newValue;
-        if (classStringHasClassName(newClassString)) {
+        if (classStringHasClassName(newClassString) == ClassStringContent::HasClasses) {
             const SpaceSplitString& oldClasses = elementData()->classNames();
             const SpaceSplitString newClasses(newClassString, document().inQuirksMode() ? SpaceSplitString::ShouldFoldCase : SpaceSplitString::ShouldNotFoldCase);
             if (featureSet.checkSelectorsForClassChange(oldClasses, newClasses))
@@ -1915,22 +1926,21 @@
         exceptionState.throwDOMException(InvalidStateError, "Shadow root cannot be created on a host which already hosts this type of shadow tree.");
         return nullptr;
     }
-    return createShadowRootInternal(ShadowRootType::OpenByDefault, exceptionState);
+    return createShadowRootInternal(ShadowRootType::V0, exceptionState);
 }
 
-PassRefPtrWillBeRawPtr<ShadowRoot> Element::createShadowRoot(const ScriptState* scriptState, const ShadowRootInit& shadowRootInitDict, ExceptionState& exceptionState)
+PassRefPtrWillBeRawPtr<ShadowRoot> Element::attachShadow(const ScriptState* scriptState, const ShadowRootInit& shadowRootInitDict, ExceptionState& exceptionState)
 {
     ASSERT(RuntimeEnabledFeatures::shadowDOMV1Enabled());
-    UseCounter::count(document(), UseCounter::ElementCreateShadowRootWithParameter);
 
-    OriginsUsingFeatures::countMainWorldOnly(scriptState, document(), OriginsUsingFeatures::Feature::ElementCreateShadowRoot);
+    OriginsUsingFeatures::countMainWorldOnly(scriptState, document(), OriginsUsingFeatures::Feature::ElementAttachShadow);
 
     if (shadowRootInitDict.hasMode() && shadowRoot()) {
         exceptionState.throwDOMException(InvalidStateError, "Shadow root cannot be created on a host which already hosts a shadow tree.");
         return nullptr;
     }
 
-    ShadowRootType type = ShadowRootType::OpenByDefault;
+    ShadowRootType type = ShadowRootType::V0;
     if (shadowRootInitDict.hasMode())
         type = shadowRootInitDict.mode() == "open" ? ShadowRootType::Open : ShadowRootType::Closed;
 
@@ -1939,9 +1949,9 @@
             exceptionState.throwDOMException(NotSupportedError, "Closed shadow root is not supported yet.");
             return nullptr;
         }
-        UseCounter::count(document(), UseCounter::ElementCreateShadowRootClosed);
+        UseCounter::count(document(), UseCounter::ElementAttachShadowClosed);
     } else if (type == ShadowRootType::Open) {
-        UseCounter::count(document(), UseCounter::ElementCreateShadowRootOpen);
+        UseCounter::count(document(), UseCounter::ElementAttachShadowOpen);
     }
 
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = createShadowRootInternal(type, exceptionState);
@@ -1983,7 +1993,7 @@
     ShadowRoot* root = shadowRoot();
     if (!root)
         return nullptr;
-    return root->type() == ShadowRootType::OpenByDefault || root->type() == ShadowRootType::Open ? root : nullptr;
+    return root->type() == ShadowRootType::V0 || root->type() == ShadowRootType::Open ? root : nullptr;
 }
 
 ShadowRoot* Element::closedShadowRoot() const
@@ -3550,11 +3560,6 @@
         return false;
     if (hasAnimations())
         return false;
-    // Turn off style sharing for elements that can gain layers for reasons outside of the style system.
-    // See comments in LayoutObject::setStyle().
-    // FIXME: Why does gaining a layer from outside the style system require disabling sharing?
-    if (isHTMLFrameElementBase(*this) || isHTMLPlugInElement(*this) || isHTMLCanvasElement(*this))
-        return false;
     if (Fullscreen::isActiveFullScreenElement(*this))
         return false;
     return true;
diff --git a/third_party/WebKit/Source/core/dom/Element.h b/third_party/WebKit/Source/core/dom/Element.h
index 61a4cc3..213c3ae 100644
--- a/third_party/WebKit/Source/core/dom/Element.h
+++ b/third_party/WebKit/Source/core/dom/Element.h
@@ -329,7 +329,7 @@
     // shadow roots is prohibited in any combination and throws an exception. Multiple shadow roots
     // are allowed only when createShadowRoot() is used without any parameters from JavaScript.
     PassRefPtrWillBeRawPtr<ShadowRoot> createShadowRoot(const ScriptState*, ExceptionState&);
-    PassRefPtrWillBeRawPtr<ShadowRoot> createShadowRoot(const ScriptState*, const ShadowRootInit&, ExceptionState&);
+    PassRefPtrWillBeRawPtr<ShadowRoot> attachShadow(const ScriptState*, const ShadowRootInit&, ExceptionState&);
     PassRefPtrWillBeRawPtr<ShadowRoot> createShadowRootInternal(ShadowRootType, ExceptionState&);
 
     ShadowRoot* openShadowRoot() const;
diff --git a/third_party/WebKit/Source/core/dom/Element.idl b/third_party/WebKit/Source/core/dom/Element.idl
index f83577e..f2f6cd531 100644
--- a/third_party/WebKit/Source/core/dom/Element.idl
+++ b/third_party/WebKit/Source/core/dom/Element.idl
@@ -70,7 +70,7 @@
     // Shadow DOM
     // http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-element-interface
     [RaisesException, CallWith=ScriptState, MeasureAs=ElementCreateShadowRoot] ShadowRoot createShadowRoot();
-    [RuntimeEnabled=ShadowDOMV1, RaisesException, CallWith=ScriptState, MeasureAs=ElementCreateShadowRoot] ShadowRoot createShadowRoot(ShadowRootInit shadowRootInitDict);
+    [RuntimeEnabled=ShadowDOMV1, RaisesException, CallWith=ScriptState, MeasureAs=ElementAttachShadow] ShadowRoot attachShadow(ShadowRootInit shadowRootInitDict);
     NodeList getDestinationInsertionPoints();
     [PerWorldBindings, ImplementedAs=openShadowRoot] readonly attribute ShadowRoot? shadowRoot;
 
diff --git a/third_party/WebKit/Source/core/dom/SelectorQuery.cpp b/third_party/WebKit/Source/core/dom/SelectorQuery.cpp
index 572180d..6317c40 100644
--- a/third_party/WebKit/Source/core/dom/SelectorQuery.cpp
+++ b/third_party/WebKit/Source/core/dom/SelectorQuery.cpp
@@ -388,7 +388,7 @@
     ElementShadow* shadow = toElement(node).shadow();
     ASSERT(shadow);
     for (ShadowRoot* shadowRoot = shadow->oldestShadowRoot(); shadowRoot; shadowRoot = shadowRoot->youngerShadowRoot()) {
-        if (shadowRoot->type() == ShadowRootType::OpenByDefault || shadowRoot->type() == ShadowRootType::Open)
+        if (shadowRoot->type() == ShadowRootType::V0 || shadowRoot->type() == ShadowRootType::Open)
             return shadowRoot;
     }
     return nullptr;
@@ -419,7 +419,7 @@
             return nullptr;
         if (ShadowRoot* youngerShadowRoot = shadowRoot->youngerShadowRoot()) {
             // Should not obtain any elements in closed or user-agent shadow root.
-            ASSERT(youngerShadowRoot->type() == ShadowRootType::OpenByDefault || youngerShadowRoot->type() == ShadowRootType::Open);
+            ASSERT(youngerShadowRoot->type() == ShadowRootType::V0 || youngerShadowRoot->type() == ShadowRootType::Open);
             return youngerShadowRoot;
         }
 
diff --git a/third_party/WebKit/Source/core/dom/TreeScopeTest.cpp b/third_party/WebKit/Source/core/dom/TreeScopeTest.cpp
index 5c8806cc..9239828 100644
--- a/third_party/WebKit/Source/core/dom/TreeScopeTest.cpp
+++ b/third_party/WebKit/Source/core/dom/TreeScopeTest.cpp
@@ -19,7 +19,7 @@
 
     RefPtrWillBeRawPtr<Element> html = document->createElement("html", nullAtom, ASSERT_NO_EXCEPTION);
     document->appendChild(html, ASSERT_NO_EXCEPTION);
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = html->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = html->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
     EXPECT_EQ(shadowRoot.get(), shadowRoot->commonAncestorTreeScope(*shadowRoot));
 }
 
@@ -32,7 +32,7 @@
     RefPtrWillBeRawPtr<Document> document = Document::create();
     RefPtrWillBeRawPtr<Element> html = document->createElement("html", nullAtom, ASSERT_NO_EXCEPTION);
     document->appendChild(html, ASSERT_NO_EXCEPTION);
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = html->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = html->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
 
     EXPECT_EQ(document.get(), document->commonAncestorTreeScope(*shadowRoot));
     EXPECT_EQ(document.get(), shadowRoot->commonAncestorTreeScope(*document));
@@ -52,8 +52,8 @@
     RefPtrWillBeRawPtr<Element> body = document->createElement("body", nullAtom, ASSERT_NO_EXCEPTION);
     html->appendChild(body);
 
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRootA = head->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRootB = body->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRootA = head->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRootB = body->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
 
     EXPECT_EQ(document.get(), shadowRootA->commonAncestorTreeScope(*shadowRootB));
     EXPECT_EQ(document.get(), shadowRootB->commonAncestorTreeScope(*shadowRootA));
@@ -75,12 +75,12 @@
     RefPtrWillBeRawPtr<Element> body = document->createElement("body", nullAtom, ASSERT_NO_EXCEPTION);
     html->appendChild(body);
 
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRootY = head->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRootB = body->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRootY = head->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRootB = body->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
 
     RefPtrWillBeRawPtr<Element> divInY = document->createElement("div", nullAtom, ASSERT_NO_EXCEPTION);
     shadowRootY->appendChild(divInY);
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRootA = divInY->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRootA = divInY->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
 
     EXPECT_EQ(document.get(), shadowRootA->commonAncestorTreeScope(*shadowRootB));
     EXPECT_EQ(document.get(), shadowRootB->commonAncestorTreeScope(*shadowRootA));
diff --git a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversalTest.cpp b/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversalTest.cpp
index f653c7e..873e86ca 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversalTest.cpp
+++ b/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversalTest.cpp
@@ -59,7 +59,7 @@
     RefPtrWillBeRawPtr<Element> body = document().body();
     body->setInnerHTML(String::fromUTF8(mainHTML), ASSERT_NO_EXCEPTION);
     RefPtrWillBeRawPtr<Element> shadowHost = toElement(NodeTraversal::childAt(*body, index));
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
     shadowRoot->setInnerHTML(String::fromUTF8(shadowHTML), ASSERT_NO_EXCEPTION);
     body->updateDistribution();
 }
diff --git a/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp b/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp
index 7dd2fc7..906fa2a 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp
+++ b/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp
@@ -148,7 +148,7 @@
     EventDispatchForbiddenScope assertNoEventDispatch;
     ScriptForbiddenScope forbidScript;
 
-    if (type == ShadowRootType::OpenByDefault) {
+    if (type == ShadowRootType::V0) {
         if (!youngestShadowRoot()) {
             shadowHost.willAddFirstAuthorShadowRoot();
         } else if (youngestShadowRoot()->type() == ShadowRootType::UserAgent) {
diff --git a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.h b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.h
index a3f4577..5748962 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.h
+++ b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.h
@@ -46,7 +46,7 @@
 
 enum class ShadowRootType {
     UserAgent,
-    OpenByDefault,
+    V0,
     Open,
     Closed
 };
@@ -78,7 +78,7 @@
     ShadowRoot* youngerShadowRoot() const { return prev(); }
 
     ShadowRoot* olderShadowRootForBindings() const;
-    bool isOpen() const { return type() == ShadowRootType::OpenByDefault || type() == ShadowRootType::Open; }
+    bool isOpen() const { return type() == ShadowRootType::V0 || type() == ShadowRootType::Open; }
 
     bool isYoungest() const { return !youngerShadowRoot(); }
     bool isOldest() const { return !olderShadowRoot(); }
diff --git a/third_party/WebKit/Source/core/editing/EditingTestBase.cpp b/third_party/WebKit/Source/core/editing/EditingTestBase.cpp
index 4f7fa78..da40097 100644
--- a/third_party/WebKit/Source/core/editing/EditingTestBase.cpp
+++ b/third_party/WebKit/Source/core/editing/EditingTestBase.cpp
@@ -34,7 +34,7 @@
 
 PassRefPtrWillBeRawPtr<ShadowRoot> EditingTestBase::createShadowRootForElementWithIDAndSetInnerHTML(TreeScope& scope, const char* hostElementID, const char* shadowRootContent)
 {
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = scope.getElementById(AtomicString::fromUTF8(hostElementID))->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = scope.getElementById(AtomicString::fromUTF8(hostElementID))->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
     shadowRoot->setInnerHTML(String::fromUTF8(shadowRootContent), ASSERT_NO_EXCEPTION);
     return shadowRoot.release();
 }
diff --git a/third_party/WebKit/Source/core/editing/EditingUtilities.cpp b/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
index 4a0cebe..ee9f1467 100644
--- a/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
+++ b/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
@@ -705,11 +705,6 @@
 
 }
 
-bool nodeIsUserSelectNone(Node* node)
-{
-    return node && node->layoutObject() && !node->layoutObject()->isSelectable();
-}
-
 template <typename Strategy>
 TextDirection directionOfEnclosingBlockAlgorithm(const PositionTemplate<Strategy>& position)
 {
diff --git a/third_party/WebKit/Source/core/editing/EditingUtilities.h b/third_party/WebKit/Source/core/editing/EditingUtilities.h
index a53cd0a..7b0f0bb 100644
--- a/third_party/WebKit/Source/core/editing/EditingUtilities.h
+++ b/third_party/WebKit/Source/core/editing/EditingUtilities.h
@@ -150,7 +150,6 @@
 bool isNonTableCellHTMLBlockElement(const Node*);
 bool isBlockFlowElement(const Node&);
 bool nodeIsUserSelectAll(const Node*);
-bool nodeIsUserSelectNone(Node*);
 CORE_EXPORT TextDirection directionOfEnclosingBlock(const Position&);
 CORE_EXPORT TextDirection directionOfEnclosingBlock(const PositionInComposedTree&);
 CORE_EXPORT TextDirection primaryDirectionOf(const Node&);
diff --git a/third_party/WebKit/Source/core/editing/InputMethodController.cpp b/third_party/WebKit/Source/core/editing/InputMethodController.cpp
index e58047a9980..49e5921 100644
--- a/third_party/WebKit/Source/core/editing/InputMethodController.cpp
+++ b/third_party/WebKit/Source/core/editing/InputMethodController.cpp
@@ -120,14 +120,59 @@
 
 bool InputMethodController::confirmComposition()
 {
-    if (!hasComposition())
-        return false;
     return confirmComposition(plainText(compositionEphemeralRange()));
 }
 
+static void dispatchCompositionEndEvent(LocalFrame& frame, const String& text)
+{
+    // We should send this event before sending a TextEvent as written in
+    // Section 6.2.2 and 6.2.3 of the DOM Event specification.
+    Element* target = frame.document()->focusedElement();
+    if (!target)
+        return;
+
+    RefPtrWillBeRawPtr<CompositionEvent> event =
+        CompositionEvent::create(EventTypeNames::compositionend, frame.domWindow(), text);
+    target->dispatchEvent(event);
+}
+
 bool InputMethodController::confirmComposition(const String& text)
 {
-    return finishComposition(text, ConfirmComposition);
+    if (!hasComposition())
+        return false;
+
+    Editor::RevealSelectionScope revealSelectionScope(&editor());
+
+    // If the composition was set from existing text and didn't change, then
+    // there's nothing to do here (and we should avoid doing anything as that
+    // may clobber multi-node styled text).
+    if (!m_isDirty && plainText(compositionEphemeralRange()) == text) {
+        clear();
+        return true;
+    }
+
+    // Select the text that will be deleted or replaced.
+    selectComposition();
+
+    if (frame().selection().isNone())
+        return false;
+
+    dispatchCompositionEndEvent(frame(), text);
+
+    if (!frame().document())
+        return false;
+
+    // If text is empty, then delete the old composition here. If text is
+    // non-empty, InsertTextCommand::input will delete the old composition with
+    // an optimized replace operation.
+    if (text.isEmpty())
+        TypingCommand::deleteSelection(*frame().document(), 0);
+
+    clear();
+
+    insertTextForConfirmedComposition(text);
+
+    return true;
 }
 
 bool InputMethodController::confirmCompositionOrInsertText(const String& text, ConfirmCompositionBehavior confirmBehavior)
@@ -153,7 +198,21 @@
 
 void InputMethodController::cancelComposition()
 {
-    finishComposition(emptyString(), CancelComposition);
+    if (!hasComposition())
+        return;
+
+    Editor::RevealSelectionScope revealSelectionScope(&editor());
+
+    if (frame().selection().isNone())
+        return;
+
+    dispatchCompositionEndEvent(frame(), emptyString());
+    clear();
+    insertTextForConfirmedComposition(emptyString());
+
+    // An open typing command that disagrees about current selection would cause
+    // issues with typing later on.
+    TypingCommand::closeTyping(m_frame);
 }
 
 void InputMethodController::cancelCompositionIfSelectionIsInvalid()
@@ -173,54 +232,6 @@
     frame().chromeClient().didCancelCompositionOnSelectionChange();
 }
 
-bool InputMethodController::finishComposition(const String& text, FinishCompositionMode mode)
-{
-    if (!hasComposition())
-        return false;
-
-    ASSERT(mode == ConfirmComposition || mode == CancelComposition);
-
-    Editor::RevealSelectionScope revealSelectionScope(&editor());
-
-    bool dirty = m_isDirty || plainText(compositionEphemeralRange()) != text;
-
-    if (mode == CancelComposition) {
-        ASSERT(text == emptyString());
-    } else if (dirty) {
-        selectComposition();
-    }
-
-    if (frame().selection().isNone())
-        return false;
-
-    // Dispatch a compositionend event to the focused node.
-    // We should send this event before sending a TextEvent as written in Section 6.2.2 and 6.2.3 of
-    // the DOM Event specification.
-    if (Element* target = frame().document()->focusedElement()) {
-        RefPtrWillBeRawPtr<CompositionEvent> event = CompositionEvent::create(EventTypeNames::compositionend, frame().domWindow(), text);
-        target->dispatchEvent(event);
-    }
-
-    // If text is empty, then delete the old composition here. If text is non-empty, InsertTextCommand::input
-    // will delete the old composition with an optimized replace operation.
-    if (text.isEmpty() && mode != CancelComposition && dirty) {
-        ASSERT(frame().document());
-        TypingCommand::deleteSelection(*frame().document(), 0);
-    }
-
-    clear();
-
-    if (dirty)
-        insertTextForConfirmedComposition(text);
-
-    if (mode == CancelComposition) {
-        // An open typing command that disagrees about current selection would cause issues with typing later on.
-        TypingCommand::closeTyping(m_frame);
-    }
-
-    return true;
-}
-
 void InputMethodController::setComposition(const String& text, const Vector<CompositionUnderline>& underlines, unsigned selectionStart, unsigned selectionEnd)
 {
     Editor::RevealSelectionScope revealSelectionScope(&editor());
diff --git a/third_party/WebKit/Source/core/editing/InputMethodController.h b/third_party/WebKit/Source/core/editing/InputMethodController.h
index 67c40c2..f9c6cc6 100644
--- a/third_party/WebKit/Source/core/editing/InputMethodController.h
+++ b/third_party/WebKit/Source/core/editing/InputMethodController.h
@@ -110,9 +110,6 @@
 
     bool insertTextForConfirmedComposition(const String& text);
     void selectComposition() const;
-    enum FinishCompositionMode { ConfirmComposition, CancelComposition };
-    // Returns true if composition exists.
-    bool finishComposition(const String&, FinishCompositionMode);
     bool setSelectionOffsets(const PlainTextRange&);
 };
 
diff --git a/third_party/WebKit/Source/core/editing/SelectionController.cpp b/third_party/WebKit/Source/core/editing/SelectionController.cpp
index 7d51c9b..d49d0214 100644
--- a/third_party/WebKit/Source/core/editing/SelectionController.cpp
+++ b/third_party/WebKit/Source/core/editing/SelectionController.cpp
@@ -267,7 +267,7 @@
 template <typename Strategy>
 bool SelectionController::updateSelectionForMouseDownDispatchingSelectStart(Node* targetNode, const VisibleSelectionTemplate<Strategy>& selection, TextGranularity granularity)
 {
-    if (nodeIsUserSelectNone(targetNode))
+    if (targetNode && targetNode->layoutObject() && !targetNode->layoutObject()->isSelectable())
         return false;
 
     if (!dispatchSelectStart(targetNode))
diff --git a/third_party/WebKit/Source/core/editing/SelectionEditor.cpp b/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
index fafb5b3..9d0301e 100644
--- a/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
+++ b/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
@@ -83,7 +83,7 @@
 void SelectionEditor::setVisibleSelection(const VisibleSelection& newSelection)
 {
     m_selection = newSelection;
-    adjustVisibleSelectionInCompsoedTree();
+    adjustVisibleSelectionInComposedTree();
 }
 
 void SelectionEditor::setVisibleSelection(const VisibleSelectionInComposedTree& newSelection)
@@ -93,7 +93,7 @@
 }
 
 // Updates |m_selectionInComposedTree| to match with |m_selection|.
-void SelectionEditor::adjustVisibleSelectionInCompsoedTree()
+void SelectionEditor::adjustVisibleSelectionInComposedTree()
 {
     if (m_selection.isNone()) {
         m_selectionInComposedTree = VisibleSelectionInComposedTree();
@@ -163,7 +163,7 @@
 void SelectionEditor::setWithoutValidation(const Position& start, const Position& end)
 {
     m_selection.setWithoutValidation(start, end);
-    adjustVisibleSelectionInCompsoedTree();
+    adjustVisibleSelectionInComposedTree();
 }
 
 TextDirection SelectionEditor::directionOfEnclosingBlock()
diff --git a/third_party/WebKit/Source/core/editing/SelectionEditor.h b/third_party/WebKit/Source/core/editing/SelectionEditor.h
index 1cd093a..f1aff73e 100644
--- a/third_party/WebKit/Source/core/editing/SelectionEditor.h
+++ b/third_party/WebKit/Source/core/editing/SelectionEditor.h
@@ -85,7 +85,7 @@
 
     LocalFrame* frame() const;
 
-    void adjustVisibleSelectionInCompsoedTree();
+    void adjustVisibleSelectionInComposedTree();
     void adjustVisibleSelectionInDOMTree();
 
     TextDirection directionOfEnclosingBlock();
diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
index ce2040e..442667b 100644
--- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
+++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
@@ -2668,11 +2668,14 @@
         // still need to support legacy positions.
         if (position.isAfterAnchor())
             return false;
-        return !position.computeEditingOffset() && !nodeIsUserSelectNone(Strategy::parent(*anchorNode));
+        if (position.computeEditingOffset())
+            return false;
+        const Node* parent = Strategy::parent(*anchorNode);
+        return parent->layoutObject() && parent->layoutObject()->isSelectable();
     }
 
     if (layoutObject->isText())
-        return !nodeIsUserSelectNone(anchorNode) && inRenderedText(position);
+        return layoutObject->isSelectable() && inRenderedText(position);
 
     if (layoutObject->isSVG()) {
         // We don't consider SVG elements are contenteditable except for
@@ -2681,22 +2684,29 @@
         return false;
     }
 
-    if (isRenderedHTMLTableElement(anchorNode) || Strategy::editingIgnoresContent(anchorNode))
-        return (position.atFirstEditingPositionForNode() || position.atLastEditingPositionForNode()) && !nodeIsUserSelectNone(Strategy::parent(*anchorNode));
+    if (isRenderedHTMLTableElement(anchorNode) || Strategy::editingIgnoresContent(anchorNode)) {
+        if (!position.atFirstEditingPositionForNode() && !position.atLastEditingPositionForNode())
+            return false;
+        const Node* parent = Strategy::parent(*anchorNode);
+        return parent->layoutObject() && parent->layoutObject()->isSelectable();
+    }
 
     if (isHTMLHtmlElement(*anchorNode))
         return false;
 
+    if (!layoutObject->isSelectable())
+        return false;
+
     if (layoutObject->isLayoutBlockFlow() || layoutObject->isFlexibleBox() || layoutObject->isLayoutGrid()) {
         if (toLayoutBlock(layoutObject)->logicalHeight() || isHTMLBodyElement(*anchorNode)) {
             if (!hasRenderedNonAnonymousDescendantsWithHeight(layoutObject))
-                return position.atFirstEditingPositionForNode() && !nodeIsUserSelectNone(anchorNode);
-            return anchorNode->hasEditableStyle() && !nodeIsUserSelectNone(anchorNode) && atEditingBoundary(position);
+                return position.atFirstEditingPositionForNode();
+            return anchorNode->hasEditableStyle() && atEditingBoundary(position);
         }
     } else {
         LocalFrame* frame = anchorNode->document().frame();
         bool caretBrowsing = frame->settings() && frame->settings()->caretBrowsingEnabled();
-        return (caretBrowsing || anchorNode->hasEditableStyle()) && !nodeIsUserSelectNone(anchorNode) && atEditingBoundary(position);
+        return (caretBrowsing || anchorNode->hasEditableStyle()) && atEditingBoundary(position);
     }
 
     return false;
diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
index e578686..2e11e86 100644
--- a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
@@ -285,7 +285,7 @@
             if (m_iterationProgress < HandledOpenShadowRoots) {
                 if (entersOpenShadowRoots() && m_node->isElementNode() && toElement(m_node)->openShadowRoot()) {
                     ShadowRoot* youngestShadowRoot = toElement(m_node)->openShadowRoot();
-                    ASSERT(youngestShadowRoot->type() == ShadowRootType::OpenByDefault || youngestShadowRoot->type() == ShadowRootType::Open);
+                    ASSERT(youngestShadowRoot->type() == ShadowRootType::V0 || youngestShadowRoot->type() == ShadowRootType::Open);
                     m_node = youngestShadowRoot;
                     m_iterationProgress = HandledNone;
                     ++m_shadowDepth;
@@ -374,9 +374,9 @@
                         return;
                     }
                     ShadowRoot* shadowRoot = toShadowRoot(m_node);
-                    if (shadowRoot->type() == ShadowRootType::OpenByDefault || shadowRoot->type() == ShadowRootType::Open) {
+                    if (shadowRoot->type() == ShadowRootType::V0 || shadowRoot->type() == ShadowRootType::Open) {
                         ShadowRoot* nextShadowRoot = shadowRoot->olderShadowRoot();
-                        if (nextShadowRoot && nextShadowRoot->type() == ShadowRootType::OpenByDefault) {
+                        if (nextShadowRoot && nextShadowRoot->type() == ShadowRootType::V0) {
                             m_fullyClippedStack.pop();
                             m_node = nextShadowRoot;
                             m_iterationProgress = HandledNone;
diff --git a/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.cpp b/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.cpp
index 8a45175..5ce94be 100644
--- a/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.cpp
+++ b/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.cpp
@@ -141,6 +141,8 @@
 {
     if (get(Feature::ElementCreateShadowRoot))
         Platform::current()->recordRappor("WebComponents.ElementCreateShadowRoot", origin);
+    if (get(Feature::ElementAttachShadow))
+        Platform::current()->recordRappor("WebComponents.ElementAttachShadow", origin);
     if (get(Feature::DocumentRegisterElement))
         Platform::current()->recordRappor("WebComponents.DocumentRegisterElement", origin);
     if (get(Feature::EventPath))
diff --git a/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.h b/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.h
index 185c409..e289738 100644
--- a/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.h
+++ b/third_party/WebKit/Source/core/frame/OriginsUsingFeatures.h
@@ -34,6 +34,7 @@
         GeolocationInsecureOrigin,
         GetUserMediaInsecureOrigin,
         GetUserMediaSecureOrigin,
+        ElementAttachShadow,
 
         NumberOfFeatures // This must be the last item.
     };
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h b/third_party/WebKit/Source/core/frame/UseCounter.h
index ccaf404..5dd36039 100644
--- a/third_party/WebKit/Source/core/frame/UseCounter.h
+++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -676,7 +676,7 @@
         ElementCreateShadowRootMultipleWithUserAgentShadowRoot = 800,
         InputTypeFileSecureOrigin = 801,
         InputTypeFileInsecureOrigin = 802,
-        ElementCreateShadowRootWithParameter = 804,
+        ElementAttachShadow = 804,
         V8KeyboardEvent_KeyIdentifier_AttributeGetter = 805,
         V8SecurityPolicyViolationEvent_DocumentURI_AttributeGetter = 806,
         V8SecurityPolicyViolationEvent_BlockedURI_AttributeGetter = 807,
@@ -780,8 +780,8 @@
         ClientHintsMetaAcceptCH = 904,
         HTMLElementDeprecatedWidth = 905,
         ClientHintsContentDPR = 906,
-        ElementCreateShadowRootOpen = 907,
-        ElementCreateShadowRootClosed = 908,
+        ElementAttachShadowOpen = 907,
+        ElementAttachShadowClosed = 908,
         AudioParamSetValueAtTime = 909,
         AudioParamLinearRampToValueAtTime = 910,
         AudioParamExponentialRampToValueAtTime = 911,
diff --git a/third_party/WebKit/Source/core/html/HTMLLabelElement.cpp b/third_party/WebKit/Source/core/html/HTMLLabelElement.cpp
index f1257a1e7..f6018074 100644
--- a/third_party/WebKit/Source/core/html/HTMLLabelElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLLabelElement.cpp
@@ -35,6 +35,7 @@
 #include "core/frame/LocalFrame.h"
 #include "core/html/FormAssociatedElement.h"
 #include "core/input/EventHandler.h"
+#include "core/layout/LayoutObject.h"
 
 namespace blink {
 
@@ -162,7 +163,7 @@
             if (LocalFrame* frame = document().frame()) {
                 // Check if there is a selection and click is not on the
                 // selection.
-                if (!nodeIsUserSelectNone(this) && frame->selection().isRange() && !frame->eventHandler().selectionController().mouseDownWasSingleClickInSelection())
+                if (layoutObject() && layoutObject()->isSelectable() && frame->selection().isRange() && !frame->eventHandler().selectionController().mouseDownWasSingleClickInSelection())
                     isLabelTextSelected = true;
                 // If selection is there and is single click i.e. text is
                 // selected by dragging over label text, then return.
diff --git a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
index 4e91190..9734e411 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
@@ -1481,7 +1481,7 @@
     switch (shadowRoot->type()) {
     case ShadowRootType::UserAgent:
         return TypeBuilder::DOM::ShadowRootType::User_agent;
-    case ShadowRootType::OpenByDefault:
+    case ShadowRootType::V0:
     case ShadowRootType::Open:
         return TypeBuilder::DOM::ShadowRootType::Open;
     case ShadowRootType::Closed:
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
index 99e8689..42f3b6a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
@@ -2684,8 +2684,7 @@
         LayoutRect logicalRect(curr->logicalLeft(), selTop, curr->logicalWidth(), selTop + selHeight);
         logicalRect.move(isHorizontalWritingMode() ? offsetFromRootBlock : offsetFromRootBlock.transposedSize());
         LayoutRect physicalRect = rootBlock->logicalRectToPhysicalRect(rootBlockPhysicalPosition, logicalRect);
-        if (!paintInfo || (isHorizontalWritingMode() && physicalRect.y() < paintInfo->rect.maxY() && physicalRect.maxY() > paintInfo->rect.y())
-            || (!isHorizontalWritingMode() && physicalRect.x() < paintInfo->rect.maxX() && physicalRect.maxX() > paintInfo->rect.x()))
+        if (!paintInfo || paintInfo->intersectsCullRect(enclosingIntRect(physicalRect)))
             result.unite(curr->lineSelectionGap(rootBlock, rootBlockPhysicalPosition, offsetFromRootBlock, selTop, selHeight, paintInfo));
 
         lastSelectedLine = curr;
diff --git a/third_party/WebKit/Source/core/layout/LayoutReplaced.cpp b/third_party/WebKit/Source/core/layout/LayoutReplaced.cpp
index 329b4205..cdc1f3e 100644
--- a/third_party/WebKit/Source/core/layout/LayoutReplaced.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutReplaced.cpp
@@ -128,14 +128,7 @@
     paintRect.unite(localSelectionRect());
     paintRect.moveBy(paintOffset + location());
 
-    // Early exit if the element touches the edges.
-    LayoutUnit top = paintRect.y();
-    LayoutUnit bottom = paintRect.maxY();
-
-    if (paintRect.x() >= paintInfo.rect.maxX() || paintRect.maxX() <= paintInfo.rect.x())
-        return false;
-
-    if (top >= paintInfo.rect.maxY() || bottom <= paintInfo.rect.y())
+    if (!paintInfo.intersectsCullRect(paintRect))
         return false;
 
     return true;
diff --git a/third_party/WebKit/Source/core/paint/BlockPainter.cpp b/third_party/WebKit/Source/core/paint/BlockPainter.cpp
index 9227b4df..13e4bb7 100644
--- a/third_party/WebKit/Source/core/paint/BlockPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/BlockPainter.cpp
@@ -237,7 +237,7 @@
     }
     m_layoutBlock.flipForWritingMode(overflowRect);
     overflowRect.moveBy(paintOffset + m_layoutBlock.location());
-    return (overflowRect.intersects(LayoutRect(paintInfo.rect)));
+    return paintInfo.intersectsCullRect(overflowRect);
 }
 
 void BlockPainter::paintContents(const PaintInfo& paintInfo, const LayoutPoint& paintOffset)
diff --git a/third_party/WebKit/Source/core/paint/DetailsMarkerPainter.cpp b/third_party/WebKit/Source/core/paint/DetailsMarkerPainter.cpp
index 0da7474..f43cde6 100644
--- a/third_party/WebKit/Source/core/paint/DetailsMarkerPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/DetailsMarkerPainter.cpp
@@ -28,7 +28,7 @@
     LayoutRect overflowRect(m_layoutDetailsMarker.visualOverflowRect());
     overflowRect.moveBy(boxOrigin);
 
-    if (!paintInfo.rect.intersects(pixelSnappedIntRect(overflowRect)))
+    if (!paintInfo.intersectsCullRect(overflowRect))
         return;
 
     LayoutObjectDrawingRecorder layoutDrawingRecorder(*paintInfo.context, m_layoutDetailsMarker, paintInfo.phase, overflowRect, paintOffset);
diff --git a/third_party/WebKit/Source/core/paint/FrameSetPainter.cpp b/third_party/WebKit/Source/core/paint/FrameSetPainter.cpp
index 72dbf19..c4fcd0f 100644
--- a/third_party/WebKit/Source/core/paint/FrameSetPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/FrameSetPainter.cpp
@@ -29,7 +29,7 @@
 
 void FrameSetPainter::paintColumnBorder(const PaintInfo& paintInfo, const IntRect& borderRect)
 {
-    if (!paintInfo.rect.intersects(borderRect))
+    if (!paintInfo.intersectsCullRect(borderRect))
         return;
 
     // FIXME: We should do something clever when borders from distinct framesets meet at a join.
diff --git a/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp
index 58a44133..bb69956 100644
--- a/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp
@@ -28,7 +28,7 @@
     m_inlineFlowBox.flipForWritingMode(overflowRect);
     overflowRect.moveBy(paintOffset);
 
-    if (!paintInfo.rect.intersects(pixelSnappedIntRect(overflowRect)))
+    if (!paintInfo.intersectsCullRect(overflowRect))
         return;
 
     if (paintInfo.phase == PaintPhaseMask) {
diff --git a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
index b438aa1..590e62e1 100644
--- a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
@@ -488,7 +488,9 @@
 
     FloatPoint localOrigin(boxRect.x().toFloat(), (boxRect.y() - deltaY).toFloat());
     LayoutRect selectionRect = LayoutRect(font.selectionRectForText(textRun, localOrigin, selHeight, sPos, ePos));
-    if (m_inlineTextBox.hasWrappedSelectionNewline())
+    if (m_inlineTextBox.hasWrappedSelectionNewline()
+        // For line breaks, just painting a selection where the line break itself is rendered is sufficient.
+        && !m_inlineTextBox.isLineBreak())
         expandToIncludeNewlineForSelection(selectionRect);
 
     context->fillRect(FloatRect(selectionRect), c);
diff --git a/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp b/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp
index 3d7e8a4..e4246e6 100644
--- a/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp
@@ -60,7 +60,7 @@
     overflowRect.moveBy(boxOrigin);
 
     IntRect pixelSnappedOverflowRect = pixelSnappedIntRect(overflowRect);
-    if (!paintInfo.rect.intersects(pixelSnappedOverflowRect))
+    if (!paintInfo.intersectsCullRect(overflowRect))
         return;
 
     LayoutObjectDrawingRecorder recorder(*paintInfo.context, m_layoutListMarker, paintInfo.phase, pixelSnappedOverflowRect, paintOffset);
diff --git a/third_party/WebKit/Source/core/paint/PaintInfo.cpp b/third_party/WebKit/Source/core/paint/PaintInfo.cpp
new file mode 100644
index 0000000..1ad1ccb
--- /dev/null
+++ b/third_party/WebKit/Source/core/paint/PaintInfo.cpp
@@ -0,0 +1,48 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+#include "core/paint/PaintInfo.h"
+
+namespace blink {
+
+void PaintInfo::updatePaintingRootForChildren(const LayoutObject* layoutObject)
+{
+    if (!paintingRoot)
+        return;
+
+    // If we're the painting root, kids draw normally, and see root of nullptr.
+    if (paintingRoot == layoutObject) {
+        paintingRoot = nullptr;
+        return;
+    }
+}
+
+bool PaintInfo::shouldPaintWithinRoot(const LayoutObject* layoutObject) const
+{
+    return !paintingRoot || paintingRoot == layoutObject;
+}
+
+bool PaintInfo::intersectsCullRect(const IntRect& rectArg) const
+{
+    return rectArg.intersects(rect);
+}
+
+bool PaintInfo::intersectsCullRect(const LayoutRect& rectArg) const
+{
+    return rect.intersects(enclosingIntRect(rectArg));
+}
+
+bool PaintInfo::intersectsCullRect(const AffineTransform& transform, const FloatRect& boundingBox) const
+{
+    return transform.mapRect(boundingBox).intersects(rect);
+}
+
+void PaintInfo::updateCullRectForSVGTransform(const AffineTransform& localToParentTransform)
+{
+    if (rect != LayoutRect::infiniteIntRect())
+        rect = localToParentTransform.inverse().mapRect(rect);
+}
+
+} // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/PaintInfo.h b/third_party/WebKit/Source/core/paint/PaintInfo.h
index 2172564..5cacf78 100644
--- a/third_party/WebKit/Source/core/paint/PaintInfo.h
+++ b/third_party/WebKit/Source/core/paint/PaintInfo.h
@@ -28,6 +28,7 @@
 
 // TODO(jchaffraix): Once we unify PaintBehavior and PaintLayerFlags, we should move
 // PaintLayerFlags to PaintPhase and rename it. Thus removing the need for this #include.
+#include "core/CoreExport.h"
 #include "core/paint/PaintLayerPaintingInfo.h"
 #include "core/paint/PaintPhase.h"
 #include "platform/geometry/IntRect.h"
@@ -46,11 +47,12 @@
 class LayoutInline;
 class LayoutBoxModelObject;
 class LayoutObject;
+class PaintInvalidationState;
 
-struct PaintInfo {
+struct CORE_EXPORT PaintInfo {
     ALLOW_ONLY_INLINE_ALLOCATION();
     PaintInfo(GraphicsContext* newContext, const IntRect& newRect, PaintPhase newPhase, GlobalPaintFlags globalPaintFlags, PaintLayerFlags paintFlags,
-        LayoutObject* newPaintingRoot = 0, const LayoutBoxModelObject* newPaintContainer = 0)
+        LayoutObject* newPaintingRoot = nullptr, const LayoutBoxModelObject* newPaintContainer = nullptr)
         : context(newContext)
         , rect(newRect)
         , phase(newPhase)
@@ -62,22 +64,9 @@
     {
     }
 
-    void updatePaintingRootForChildren(const LayoutObject* layoutObject)
-    {
-        if (!paintingRoot)
-            return;
+    void updatePaintingRootForChildren(const LayoutObject*);
 
-        // If we're the painting root, kids draw normally, and see root of 0.
-        if (paintingRoot == layoutObject) {
-            paintingRoot = 0;
-            return;
-        }
-    }
-
-    bool shouldPaintWithinRoot(const LayoutObject* layoutObject) const
-    {
-        return !paintingRoot || paintingRoot == layoutObject;
-    }
+    bool shouldPaintWithinRoot(const LayoutObject*) const;
 
     bool isRenderingClipPathAsMaskImage() const { return m_paintFlags & PaintLayerPaintingRenderingClipPathAsMask; }
 
@@ -94,16 +83,12 @@
 
     PaintLayerFlags paintFlags() const { return m_paintFlags; }
 
-    bool intersectsCullRect(const AffineTransform& transform, const FloatRect& boundingBox) const
-    {
-        return transform.mapRect(boundingBox).intersects(rect);
-    }
+    bool intersectsCullRect(const AffineTransform&, const FloatRect& boundingBox) const;
 
-    void updateCullRectForSVGTransform(const AffineTransform& localToParentTransform)
-    {
-        if (rect != LayoutRect::infiniteIntRect())
-            rect = localToParentTransform.inverse().mapRect(rect);
-    }
+    void updateCullRectForSVGTransform(const AffineTransform& localToParentTransform);
+
+    bool intersectsCullRect(const IntRect&) const;
+    bool intersectsCullRect(const LayoutRect&) const;
 
     // FIXME: Introduce setters/getters at some point. Requires a lot of changes throughout layout/.
     GraphicsContext* context;
diff --git a/third_party/WebKit/Source/core/paint/PaintInfoTest.cpp b/third_party/WebKit/Source/core/paint/PaintInfoTest.cpp
new file mode 100644
index 0000000..a4573a4
--- /dev/null
+++ b/third_party/WebKit/Source/core/paint/PaintInfoTest.cpp
@@ -0,0 +1,52 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+#include "core/paint/PaintInfo.h"
+
+#include <gtest/gtest.h>
+
+namespace blink {
+
+class PaintInfoTest : public testing::Test {
+};
+
+TEST_F(PaintInfoTest, intersectsCullRect)
+{
+    PaintInfo paintInfo(nullptr, IntRect(0, 0, 50, 50), PaintPhaseBlockBackground, GlobalPaintNormalPhase, PaintLayerNoFlag);
+
+    EXPECT_TRUE(paintInfo.intersectsCullRect(IntRect(0, 0, 1, 1)));
+    EXPECT_FALSE(paintInfo.intersectsCullRect(IntRect(51, 51, 1, 1)));
+}
+
+TEST_F(PaintInfoTest, intersectsCullRectWithLayoutRect)
+{
+    PaintInfo paintInfo(nullptr, IntRect(0, 0, 50, 50), PaintPhaseBlockBackground, GlobalPaintNormalPhase, PaintLayerNoFlag);
+
+    EXPECT_TRUE(paintInfo.intersectsCullRect(LayoutRect(0, 0, 1, 1)));
+    EXPECT_TRUE(paintInfo.intersectsCullRect(LayoutRect(0.1, 0.1, 0.1, 0.1)));
+}
+
+TEST_F(PaintInfoTest, intersectsCullRectWithTransform)
+{
+    PaintInfo paintInfo(nullptr, IntRect(0, 0, 50, 50), PaintPhaseBlockBackground, GlobalPaintNormalPhase, PaintLayerNoFlag);
+    AffineTransform transform;
+    transform.translate(-2, -2);
+
+    EXPECT_TRUE(paintInfo.intersectsCullRect(transform, IntRect(51, 51, 1, 1)));
+    EXPECT_FALSE(paintInfo.intersectsCullRect(IntRect(52, 52, 1, 1)));
+}
+
+TEST_F(PaintInfoTest, updateCullRectForSVGTransform)
+{
+    PaintInfo paintInfo(nullptr, IntRect(1, 1, 50, 50), PaintPhaseBlockBackground, GlobalPaintNormalPhase, PaintLayerNoFlag);
+    AffineTransform transform;
+    transform.translate(1, 1);
+    paintInfo.updateCullRectForSVGTransform(transform);
+
+    EXPECT_TRUE(paintInfo.intersectsCullRect(IntRect(0, 0, 1, 1)));
+    EXPECT_FALSE(paintInfo.intersectsCullRect(IntRect(51, 51, 1, 1)));
+}
+
+} // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp b/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp
index e9cb238..1050466 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp
@@ -570,7 +570,7 @@
         clipRecorder.emplace(*context, *m_paintLayer.layoutObject(), clipType, clipRect, &paintingInfo, fragment.paginationOffset, paintFlags, clippingRule);
     }
 
-    PaintInfo paintInfo(context, pixelSnappedIntRect(clipRect.rect()), phase, paintingInfo.globalPaintFlags(), paintFlags, paintingRootForLayoutObject, paintingInfo.rootLayer->layoutObject());
+    LayoutRect newCullRect(clipRect.rect());
     Optional<ScrollRecorder> scrollRecorder;
     LayoutPoint paintOffset = toPoint(fragment.layerBounds.location() - m_paintLayer.layoutBoxLocation());
     if (!paintingInfo.scrollOffsetAccumulation.isZero()) {
@@ -579,9 +579,13 @@
         // for this layer seperately, with the scroll offset accumulated from the root layer to the parent of this
         // layer, to get the same result as ScrollRecorder in BlockPainter.
         paintOffset += paintingInfo.scrollOffsetAccumulation;
-        paintInfo.rect.move(paintingInfo.scrollOffsetAccumulation);
-        scrollRecorder.emplace(*paintInfo.context, *m_paintLayer.layoutObject(), paintInfo.phase, paintingInfo.scrollOffsetAccumulation);
+
+        newCullRect.move(paintingInfo.scrollOffsetAccumulation);
+        scrollRecorder.emplace(*context, *m_paintLayer.layoutObject(), phase, paintingInfo.scrollOffsetAccumulation);
     }
+    PaintInfo paintInfo(context, pixelSnappedIntRect(newCullRect), phase, paintingInfo.globalPaintFlags(), paintFlags,
+        paintingRootForLayoutObject, paintingInfo.rootLayer->layoutObject());
+
     m_paintLayer.layoutObject()->paint(paintInfo, paintOffset);
 }
 
diff --git a/third_party/WebKit/Source/core/paint/TableCellPainter.cpp b/third_party/WebKit/Source/core/paint/TableCellPainter.cpp
index 7e5a0d7..22ee5503 100644
--- a/third_party/WebKit/Source/core/paint/TableCellPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/TableCellPainter.cpp
@@ -102,7 +102,7 @@
         paintRect.width() + leftWidth / 2 + (rightWidth + 1) / 2,
         paintRect.height() + topWidth / 2 + (bottomWidth + 1) / 2);
 
-    if (!borderRect.intersects(paintInfo.rect))
+    if (!paintInfo.intersectsCullRect(borderRect))
         return;
 
     GraphicsContext* graphicsContext = paintInfo.context;
diff --git a/third_party/WebKit/Source/core/testing/Internals.cpp b/third_party/WebKit/Source/core/testing/Internals.cpp
index 61ae4c1..0f9f83c 100644
--- a/third_party/WebKit/Source/core/testing/Internals.cpp
+++ b/third_party/WebKit/Source/core/testing/Internals.cpp
@@ -691,8 +691,8 @@
     switch (toShadowRoot(root)->type()) {
     case ShadowRootType::UserAgent:
         return String("UserAgentShadowRoot");
-    case ShadowRootType::OpenByDefault:
-        return String("OpenByDefaultShadowRoot");
+    case ShadowRootType::V0:
+        return String("V0ShadowRoot");
     case ShadowRootType::Open:
         return String("OpenShadowRoot");
     case ShadowRootType::Closed:
diff --git a/third_party/WebKit/Source/devtools/front_end/common/Settings.js b/third_party/WebKit/Source/devtools/front_end/common/Settings.js
index 029ba4c..d7d5eca 100644
--- a/third_party/WebKit/Source/devtools/front_end/common/Settings.js
+++ b/third_party/WebKit/Source/devtools/front_end/common/Settings.js
@@ -333,7 +333,7 @@
 }
 
 WebInspector.VersionController._currentVersionName = "inspectorVersion";
-WebInspector.VersionController.currentVersion = 15;
+WebInspector.VersionController.currentVersion = 16;
 
 WebInspector.VersionController.prototype = {
     updateVersion: function()
@@ -593,6 +593,15 @@
         setting.set(newValue);
     },
 
+    _updateVersionFrom15To16: function()
+    {
+        var setting = WebInspector.settings.createSetting("InspectorView.panelOrder", {});
+        var tabOrders = setting.get();
+        for (var key of Object.keys(tabOrders))
+            tabOrders[key] = (tabOrders[key] + 1) * 10;
+        setting.set(tabOrders);
+    },
+
     _migrateSettingsFromLocalStorage: function()
     {
         // This step migrates all the settings except for the ones below into the browser profile.
diff --git a/third_party/WebKit/Source/devtools/front_end/components/DockController.js b/third_party/WebKit/Source/devtools/front_end/components/DockController.js
index b1704fc..830330d8 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/DockController.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/DockController.js
@@ -186,10 +186,12 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         WebInspector.dockController._toggleDockSide();
+        return true;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js b/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js
index ce8665c..76675672 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js
@@ -160,19 +160,21 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         if (!WebInspector.inspectElementModeController)
-            return;
+            return false;
         WebInspector.inspectElementModeController._toggleInspectMode();
 
         if (WebInspector.inspectElementModeController.isInInspectElementMode())
-            return;
+            return true;
 
         var node = WebInspector.context.flavor(WebInspector.DOMNode);
         if (node)
             WebInspector.Revealer.reveal(node);
+        return true;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/components/InspectorView.js b/third_party/WebKit/Source/devtools/front_end/components/InspectorView.js
index ecd66f3..7b63d1e2 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/InspectorView.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/InspectorView.js
@@ -114,19 +114,25 @@
                 weight = extension.descriptor()["order"];
             if (weight === undefined)
                 weight = 10000;
-            panelsByWeight.set(weight, descriptor);
+            panelWeights.set(descriptor, weight);
+        }
+
+        /**
+         * @param {!WebInspector.PanelDescriptor} left
+         * @param {!WebInspector.PanelDescriptor} right
+         */
+        function orderComparator(left, right)
+        {
+            return panelWeights.get(left) > panelWeights.get(right);
         }
 
         WebInspector.startBatchUpdate();
-        /** @type {!Map.<number, !WebInspector.PanelDescriptor>} */
-        var panelsByWeight = new Map();
+        /** @type {!Map.<!WebInspector.PanelDescriptor, number>} */
+        var panelWeights = new Map();
         self.runtime.extensions(WebInspector.PanelFactory).forEach(processPanelExtensions.bind(this));
-        var sortedPanelOrders = panelsByWeight.keysArray().sort();
-        for (var order of sortedPanelOrders) {
-            var panelDescriptor = panelsByWeight.get(order);
-            if (panelDescriptor)
-                this._innerAddPanel(panelDescriptor);
-        }
+        var sortedPanels = panelWeights.keysArray().sort(orderComparator);
+        for (var panelDescriptor of sortedPanels)
+            this._innerAddPanel(panelDescriptor);
         WebInspector.endBatchUpdate();
     },
 
@@ -543,7 +549,7 @@
         var tabs = /** @type {!Array.<!WebInspector.TabbedPaneTab>} */(event.data);
         var tabOrders = this._tabOrderSetting.get();
         for (var i = 0; i < tabs.length; i++)
-            tabOrders[tabs[i].id] = i;
+            tabOrders[tabs[i].id] = (i + 1)* 10;
         this._tabOrderSetting.set(tabOrders);
     },
 
@@ -568,6 +574,7 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
@@ -575,5 +582,6 @@
             WebInspector.inspectorView.closeDrawer();
         else
             WebInspector.inspectorView.showDrawer();
+        return true;
     }
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
index 3c978cb7..c51dcbc 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
@@ -1288,13 +1288,19 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
-        if (actionId === "console.show")
+        switch (actionId) {
+        case "console.show":
             WebInspector.console.show();
-        else if (actionId === "console.clear")
+            return true;
+        case "console.clear":
             WebInspector.ConsoleModel.clearConsole();
+            return true;
+        }
+        return false;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/devices/DevicesDialog.js b/third_party/WebKit/Source/devtools/front_end/devices/DevicesDialog.js
index 43548c70..08332fcb 100644
--- a/third_party/WebKit/Source/devtools/front_end/devices/DevicesDialog.js
+++ b/third_party/WebKit/Source/devtools/front_end/devices/DevicesDialog.js
@@ -24,6 +24,7 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
@@ -36,6 +37,8 @@
             this._view.show(dialog.element);
             dialog.setMaxSize(new Size(800, 600));
             dialog.show();
+            return true;
         }
+        return false;
     }
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
index a401a39..4bf1422 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
@@ -1211,14 +1211,19 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
-        var elementsPanel = WebInspector.ElementsPanel.instance();
-        if (actionId === "elements.hide-element")
-            elementsPanel._toggleHideElement();
-        else if (actionId === "elements.edit-as-html")
-            elementsPanel._toggleEditAsHTML();
+        switch (actionId) {
+        case "elements.hide-element":
+            WebInspector.ElementsPanel.instance()._toggleHideElement();
+            return true;
+        case "elements.edit-as-html":
+            WebInspector.ElementsPanel.instance()._toggleEditAsHTML();
+            return true;
+        }
+        return false;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeButton.js b/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeButton.js
index ec6f8db..d88bf38 100644
--- a/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeButton.js
+++ b/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeButton.js
@@ -55,9 +55,11 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         WebInspector.overridesSupport.setEmulationEnabled(!WebInspector.overridesSupport.emulationEnabled());
+        return true;
     }
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/emulation/SensorsView.js b/third_party/WebKit/Source/devtools/front_end/emulation/SensorsView.js
index bd443756..b75a912 100644
--- a/third_party/WebKit/Source/devtools/front_end/emulation/SensorsView.js
+++ b/third_party/WebKit/Source/devtools/front_end/emulation/SensorsView.js
@@ -300,9 +300,11 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         WebInspector.inspectorView.showCloseableViewInDrawer("sensors", WebInspector.UIString("Sensors"), WebInspector.SensorsView.instance());
+        return true;
     }
 }
\ No newline at end of file
diff --git a/third_party/WebKit/Source/devtools/front_end/main/Main.js b/third_party/WebKit/Source/devtools/front_end/main/Main.js
index 357bdb1..8a0c621 100644
--- a/third_party/WebKit/Source/devtools/front_end/main/Main.js
+++ b/third_party/WebKit/Source/devtools/front_end/main/Main.js
@@ -694,20 +694,22 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         switch (actionId) {
         case "main.reload":
             WebInspector.Main._reloadPage(false);
-            break;
+            return true;
         case "main.hard-reload":
             WebInspector.Main._reloadPage(true);
-            break;
+            return true;
         case "main.debug-reload":
             WebInspector.reload();
-            break;
+            return true;
         }
+        return false;
     }
 }
 
@@ -724,23 +726,25 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         if (InspectorFrontendHost.isHostedMode())
-            return;
+            return false;
 
         switch (actionId) {
         case "main.zoom-in":
             InspectorFrontendHost.zoomIn();
-            break;
+            return true;
         case "main.zoom-out":
             InspectorFrontendHost.zoomOut();
-            break;
+            return true;
         case "main.zoom-reset":
             InspectorFrontendHost.resetZoom();
-            break;
+            return true;
         }
+        return false;
     }
 }
 
@@ -757,10 +761,12 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         InspectorFrontendHost.openInNewTab("chrome://inspect#devices");
+        return true;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/main/RenderingOptions.js b/third_party/WebKit/Source/devtools/front_end/main/RenderingOptions.js
index 0ebafe9..4fb1adf 100644
--- a/third_party/WebKit/Source/devtools/front_end/main/RenderingOptions.js
+++ b/third_party/WebKit/Source/devtools/front_end/main/RenderingOptions.js
@@ -123,9 +123,11 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         WebInspector.inspectorView.showCloseableViewInDrawer("rendering", WebInspector.UIString("Rendering"), WebInspector.RenderingOptionsView.instance());
+        return true;
     }
 }
\ No newline at end of file
diff --git a/third_party/WebKit/Source/devtools/front_end/network/BlockedURLsPane.js b/third_party/WebKit/Source/devtools/front_end/network/BlockedURLsPane.js
index aa8c1d91..721f342 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/BlockedURLsPane.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/BlockedURLsPane.js
@@ -305,10 +305,12 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         WebInspector.BlockedURLsPane.reveal();
+        return true;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js
index caf0edc..7dc4e47 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js
@@ -787,11 +787,13 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         var panel = WebInspector.context.flavor(WebInspector.NetworkPanel);
         console.assert(panel && panel instanceof WebInspector.NetworkPanel);
         panel._toggleRecording();
+        return true;
     }
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/ProfilesPanel.js b/third_party/WebKit/Source/devtools/front_end/profiler/ProfilesPanel.js
index 8c567e8..8ed6e1e 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/ProfilesPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/ProfilesPanel.js
@@ -1302,11 +1302,13 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         var panel = WebInspector.context.flavor(WebInspector.ProfilesPanel);
         console.assert(panel && panel instanceof WebInspector.ProfilesPanel);
         panel.toggleRecordButton();
+        return true;
     }
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/security/SecurityModel.js b/third_party/WebKit/Source/devtools/front_end/security/SecurityModel.js
index d587755f..650b96f 100644
--- a/third_party/WebKit/Source/devtools/front_end/security/SecurityModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/security/SecurityModel.js
@@ -37,6 +37,36 @@
 }
 
 /**
+ * @param {!SecurityAgent.SecurityState} a
+ * @param {!SecurityAgent.SecurityState} b
+ * @return {number}
+ */
+WebInspector.SecurityModel.SecurityStateComparator = function(a, b)
+{
+    var securityStateMap;
+    if (WebInspector.SecurityModel._symbolicToNumericSecurityState) {
+        securityStateMap = WebInspector.SecurityModel._symbolicToNumericSecurityState;
+    } else {
+        securityStateMap = new Map();
+        var ordering = [
+            SecurityAgent.SecurityState.Unknown,
+            SecurityAgent.SecurityState.Info,
+            SecurityAgent.SecurityState.Insecure,
+            SecurityAgent.SecurityState.Neutral,
+            SecurityAgent.SecurityState.Warning,
+            SecurityAgent.SecurityState.Secure
+        ];
+        for (var i = 0; i < ordering.length; i++)
+            securityStateMap.set(ordering[i], i + 1);
+        WebInspector.SecurityModel._symbolicToNumericSecurityState = securityStateMap;
+    }
+    var aScore = securityStateMap.get(a) || 0;
+    var bScore = securityStateMap.get(b) || 0;
+
+    return aScore - bScore;
+}
+
+/**
  * @constructor
  * @param {!SecurityAgent.SecurityState} securityState
  * @param {!Array<!SecurityAgent.SecurityStateExplanation>} explanations
diff --git a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
index 1db881c..28a4259 100644
--- a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
@@ -262,16 +262,7 @@
      */
     _securityStateMin: function(stateA, stateB)
     {
-        /** @type {!Array<!SecurityAgent.SecurityState>} */
-        var ordering = [
-            SecurityAgent.SecurityState.Unknown,
-            SecurityAgent.SecurityState.Info,
-            SecurityAgent.SecurityState.Insecure,
-            SecurityAgent.SecurityState.Neutral,
-            SecurityAgent.SecurityState.Warning,
-            SecurityAgent.SecurityState.Secure
-        ];
-        return (ordering.indexOf(stateA) < ordering.indexOf(stateB)) ? stateA : stateB;
+        return WebInspector.SecurityModel.SecurityStateComparator(stateA, stateB) < 0 ? stateA : stateB;
     },
 
     /**
@@ -426,28 +417,7 @@
  */
 WebInspector.SecurityOriginViewSidebarTreeElement.SecurityStateComparator = function(a, b)
 {
-    var securityStateMap;
-    if (WebInspector.SecurityOriginViewSidebarTreeElement._symbolicToNumericSecurityState) {
-        securityStateMap = WebInspector.SecurityOriginViewSidebarTreeElement._symbolicToNumericSecurityState;
-    } else {
-        securityStateMap = new Map();
-        var ordering = [
-            SecurityAgent.SecurityState.Unknown,
-            SecurityAgent.SecurityState.Info,
-            SecurityAgent.SecurityState.Insecure,
-            SecurityAgent.SecurityState.Neutral,
-            SecurityAgent.SecurityState.Warning,
-            SecurityAgent.SecurityState.Secure
-        ];
-        for (var i = 0; i < ordering.length; i++) {
-            securityStateMap.set(ordering[i], i + 1);
-        }
-        WebInspector.SecurityOriginViewSidebarTreeElement._symbolicToNumericSecurityState = securityStateMap;
-    }
-    var aScore = securityStateMap.get(a.securityState()) || 0;
-    var bScore = securityStateMap.get(b.securityState()) || 0;
-
-    return aScore - bScore;
+    return WebInspector.SecurityModel.SecurityStateComparator(a.securityState(), b.securityState());
 }
 
 /**
diff --git a/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js b/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
index 453815a5..1b925f0b 100644
--- a/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
+++ b/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
@@ -531,15 +531,22 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
-        if (actionId === "settings.show")
+        switch (actionId) {
+        case "settings.show":
             WebInspector._settingsController.showSettingsScreen();
-        else if (actionId === "settings.help")
+            return true;
+        case "settings.help":
             InspectorFrontendHost.openInNewTab("https://developers.google.com/web/tools/chrome-devtools/");
-        else if (actionId === "settings.shortcuts")
+            return true;
+        case "settings.shortcuts":
             WebInspector._settingsController.showSettingsScreen("shortcuts");
+            return true;
+        }
+        return false;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/AdvancedSearchView.js b/third_party/WebKit/Source/devtools/front_end/sources/AdvancedSearchView.js
index e2edd39..82faa23 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/AdvancedSearchView.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/AdvancedSearchView.js
@@ -349,6 +349,7 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
@@ -362,7 +363,9 @@
             this._searchView._toggle(queryCandidate);
             WebInspector.inspectorView.showCloseableViewInDrawer("sources.search", WebInspector.UIString("Search"), this._searchView);
             this._searchView.focus();
+            return true;
         }
+        return false;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
index 991ba12..07a71a9 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
@@ -1355,6 +1355,7 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
@@ -1363,11 +1364,12 @@
         switch (actionId) {
         case "debugger.toggle-pause":
             panel.togglePause();
-            break;
+            return true;
         case "sources.go-to-source":
             panel.showGoToSourceDialog();
-            break;
+            return true;
         }
+        return false;
     }
 }
 
@@ -1384,6 +1386,7 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
@@ -1391,23 +1394,24 @@
         switch (actionId) {
         case "debugger.step-over":
             panel._stepOverClicked();
-            break;
+            return true;
         case "debugger.step-into":
             panel._stepIntoClicked();
-            break;
+            return true;
         case "debugger.step-into-async":
             panel._stepIntoAsyncClicked();
-            break;
+            return true;
         case "debugger.step-out":
             panel._stepOutClicked();
-            break;
+            return true;
         case "debugger.run-snippet":
             panel._runSnippet();
-            break;
+            return true;
         case "debugger.toggle-breakpoints-active":
             panel._toggleBreakpointsActive();
-            break;
+            return true;
         }
+        return false;
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/SourcesView.js b/third_party/WebKit/Source/devtools/front_end/sources/SourcesView.js
index cb4027b..247f2ea 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/SourcesView.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/SourcesView.js
@@ -810,16 +810,18 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         var sourcesView = WebInspector.context.flavor(WebInspector.SourcesView);
         var currentUISourceCode = sourcesView.currentUISourceCode();
         if (!currentUISourceCode)
-            return;
+            return false;
         var nextUISourceCode = WebInspector.SourcesView.SwitchFileActionDelegate._nextFile(currentUISourceCode);
         if (!nextUISourceCode)
-            return;
+            return false;
         sourcesView.showSourceLocation(nextUISourceCode);
+        return true;
     }
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
index 9ffd71a4..e0c9157 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
@@ -1978,11 +1978,13 @@
      * @override
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId)
     {
         var panel = WebInspector.context.flavor(WebInspector.TimelinePanel);
         console.assert(panel && panel instanceof WebInspector.TimelinePanel);
         panel._toggleTimelineButtonClicked();
+        return true;
     }
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/ActionRegistry.js b/third_party/WebKit/Source/devtools/front_end/ui/ActionRegistry.js
index 712e4b9..4be46e8 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/ActionRegistry.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/ActionRegistry.js
@@ -50,7 +50,7 @@
 
     /**
      * @param {string} actionId
-     * @return {!Promise.<undefined>}
+     * @return {!Promise.<boolean>}
      */
     execute: function(actionId)
     {
@@ -60,10 +60,12 @@
 
         /**
          * @param {!Object} actionDelegate
+         * @return {boolean}
          */
         function handleAction(actionDelegate)
         {
-            /** @type {!WebInspector.ActionDelegate} */(actionDelegate).handleAction(WebInspector.context, actionId);
+            var delegate = /** @type {!WebInspector.ActionDelegate} */(actionDelegate);
+            return delegate.handleAction(WebInspector.context, actionId);
         }
     },
 
@@ -101,6 +103,7 @@
     /**
      * @param {!WebInspector.Context} context
      * @param {string} actionId
+     * @return {boolean}
      */
     handleAction: function(context, actionId) {}
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/ShortcutRegistry.js b/third_party/WebKit/Source/devtools/front_end/ui/ShortcutRegistry.js
index 99e62d7..737d545 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/ShortcutRegistry.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/ShortcutRegistry.js
@@ -99,19 +99,20 @@
         if (!isPossiblyInputKey()) {
             if (event)
                 event.consume(true);
-            processNextAction.call(this);
+            processNextAction.call(this, false);
         } else {
-            this._pendingActionTimer = setTimeout(processNextAction.bind(this), 0);
+            this._pendingActionTimer = setTimeout(processNextAction.bind(this, false), 0);
         }
 
         /**
+         * @param {boolean} handled
          * @this {WebInspector.ShortcutRegistry}
          */
-        function processNextAction()
+        function processNextAction(handled)
         {
             delete this._pendingActionTimer;
             var actionId = actionIds.shift();
-            if (!actionId)
+            if (!actionId || handled)
                 return;
 
             this._actionRegistry.execute(actionId).then(processNextAction.bind(this));
diff --git a/third_party/WebKit/Source/platform/heap/HeapAllocator.cpp b/third_party/WebKit/Source/platform/heap/HeapAllocator.cpp
index 8d27428..d78e072 100644
--- a/third_party/WebKit/Source/platform/heap/HeapAllocator.cpp
+++ b/third_party/WebKit/Source/platform/heap/HeapAllocator.cpp
@@ -88,14 +88,10 @@
 
 bool HeapAllocator::backingShrink(void* address, size_t quantizedCurrentSize, size_t quantizedShrunkSize)
 {
-    // We shrink the object only if the shrinking will make a non-small
-    // prompt-free block.
-    // FIXME: Optimize the threshold size.
-    if (quantizedCurrentSize <= quantizedShrunkSize + sizeof(HeapObjectHeader) + sizeof(void*) * 32)
+    if (!address || quantizedShrunkSize == quantizedCurrentSize)
         return true;
 
-    if (!address)
-        return true;
+    ASSERT(quantizedShrunkSize < quantizedCurrentSize);
 
     ThreadState* state = ThreadState::current();
     if (state->sweepForbidden())
@@ -112,6 +108,12 @@
     HeapObjectHeader* header = HeapObjectHeader::fromPayload(address);
     ASSERT(header->checkHeader());
     NormalPageHeap* heap = static_cast<NormalPage*>(page)->heapForNormalPage();
+    // We shrink the object only if the shrinking will make a non-small
+    // prompt-free block.
+    // FIXME: Optimize the threshold size.
+    if (quantizedCurrentSize <= quantizedShrunkSize + sizeof(HeapObjectHeader) + sizeof(void*) * 32 && !heap->isObjectAllocatedAtAllocationPoint(header))
+        return true;
+
     bool succeededAtAllocationPoint = heap->shrinkObject(header, quantizedShrunkSize);
     if (succeededAtAllocationPoint)
         state->allocationPointAdjusted(heap->heapIndex());
diff --git a/third_party/WebKit/Source/platform/heap/HeapAllocator.h b/third_party/WebKit/Source/platform/heap/HeapAllocator.h
index 5765214..86ec0223 100644
--- a/third_party/WebKit/Source/platform/heap/HeapAllocator.h
+++ b/third_party/WebKit/Source/platform/heap/HeapAllocator.h
@@ -116,7 +116,7 @@
     template<typename VisitorDispatcher, typename T, typename Traits>
     static void trace(VisitorDispatcher visitor, T& t)
     {
-        TraceCollectionIfEnabled<WTF::ShouldBeTraced<Traits>::value, Traits::weakHandlingFlag, WTF::WeakPointersActWeak, T, Traits>::trace(visitor, t);
+        TraceCollectionIfEnabled<WTF::NeedsTracingTrait<Traits>::value, Traits::weakHandlingFlag, WTF::WeakPointersActWeak, T, Traits>::trace(visitor, t);
     }
 
     template<typename VisitorDispatcher>
@@ -190,7 +190,7 @@
     // (there's an assert elsewhere), but we have to specify some value for the
     // strongify template argument, so we specify WTF::WeakPointersActWeak,
     // arbitrarily.
-    TraceCollectionIfEnabled<WTF::ShouldBeTraced<WTF::HashTraits<Value>>::value, WTF::NoWeakHandlingInCollections, WTF::WeakPointersActWeak, Value, WTF::HashTraits<Value>>::trace(visitor, value);
+    TraceCollectionIfEnabled<WTF::NeedsTracingTrait<WTF::HashTraits<Value>>::value, WTF::NoWeakHandlingInCollections, WTF::WeakPointersActWeak, Value, WTF::HashTraits<Value>>::trace(visitor, value);
 }
 
 // The inline capacity is just a dummy template argument to match the off-heap
diff --git a/third_party/WebKit/Source/platform/heap/HeapPage.cpp b/third_party/WebKit/Source/platform/heap/HeapPage.cpp
index b4de4d6..ccf2c81f 100644
--- a/third_party/WebKit/Source/platform/heap/HeapPage.cpp
+++ b/third_party/WebKit/Source/platform/heap/HeapPage.cpp
@@ -699,7 +699,7 @@
     size_t allocationSize = Heap::allocationSizeFromSize(newSize);
     ASSERT(allocationSize > header->size());
     size_t expandSize = allocationSize - header->size();
-    if (header->payloadEnd() == m_currentAllocationPoint && expandSize <= m_remainingAllocationSize) {
+    if (isObjectAllocatedAtAllocationPoint(header) && expandSize <= m_remainingAllocationSize) {
         m_currentAllocationPoint += expandSize;
         m_remainingAllocationSize -= expandSize;
 
@@ -719,7 +719,7 @@
     size_t allocationSize = Heap::allocationSizeFromSize(newSize);
     ASSERT(header->size() > allocationSize);
     size_t shrinkSize = header->size() - allocationSize;
-    if (header->payloadEnd() == m_currentAllocationPoint) {
+    if (isObjectAllocatedAtAllocationPoint(header)) {
         m_currentAllocationPoint -= shrinkSize;
         m_remainingAllocationSize += shrinkSize;
         SET_MEMORY_INACCESSIBLE(m_currentAllocationPoint, shrinkSize);
diff --git a/third_party/WebKit/Source/platform/heap/HeapPage.h b/third_party/WebKit/Source/platform/heap/HeapPage.h
index e8473d42..cda3116 100644
--- a/third_party/WebKit/Source/platform/heap/HeapPage.h
+++ b/third_party/WebKit/Source/platform/heap/HeapPage.h
@@ -782,6 +782,11 @@
     bool shrinkObject(HeapObjectHeader*, size_t);
     void decreasePromptlyFreedSize(size_t size) { m_promptlyFreedSize -= size; }
 
+    bool isObjectAllocatedAtAllocationPoint(HeapObjectHeader* header)
+    {
+        return header->payloadEnd() == m_currentAllocationPoint;
+    }
+
 private:
     void allocatePage();
     Address lazySweepPages(size_t, size_t gcInfoIndex) override;
diff --git a/third_party/WebKit/Source/platform/heap/HeapTest.cpp b/third_party/WebKit/Source/platform/heap/HeapTest.cpp
index 663b0b3..6512242 100644
--- a/third_party/WebKit/Source/platform/heap/HeapTest.cpp
+++ b/third_party/WebKit/Source/platform/heap/HeapTest.cpp
@@ -2415,8 +2415,8 @@
     }
 };
 
-struct ShouldBeTraced {
-    explicit ShouldBeTraced(IntWrapper* wrapper) : m_wrapper(wrapper) { }
+struct NeedsTracingTrait {
+    explicit NeedsTracingTrait(IntWrapper* wrapper) : m_wrapper(wrapper) { }
     DEFINE_INLINE_TRACE() { visitor->trace(m_wrapper); }
     Member<IntWrapper> m_wrapper;
 };
diff --git a/third_party/WebKit/Source/platform/heap/TraceTraits.h b/third_party/WebKit/Source/platform/heap/TraceTraits.h
index eafe3ee..285c6d7 100644
--- a/third_party/WebKit/Source/platform/heap/TraceTraits.h
+++ b/third_party/WebKit/Source/platform/heap/TraceTraits.h
@@ -181,7 +181,7 @@
     static void trace(VisitorDispatcher visitor, void* self)
     {
         static_assert(!WTF::IsWeak<T>::value, "weakness in HeapVectors and Deques are not supported");
-        if (WTF::ShouldBeTraced<Traits>::value)
+        if (WTF::NeedsTracingTrait<Traits>::value)
             WTF::TraceInCollectionTrait<WTF::NoWeakHandlingInCollections, WTF::WeakPointersActWeak, HeapVectorBacking<T, Traits>, void>::trace(visitor, self);
     }
 
@@ -206,7 +206,7 @@
     template<typename VisitorDispatcher>
     static void trace(VisitorDispatcher visitor, void* self)
     {
-        if (WTF::ShouldBeTraced<Traits>::value || Traits::weakHandlingFlag == WTF::WeakHandlingInCollections)
+        if (WTF::NeedsTracingTrait<Traits>::value || Traits::weakHandlingFlag == WTF::WeakHandlingInCollections)
             WTF::TraceInCollectionTrait<WTF::NoWeakHandlingInCollections, WTF::WeakPointersActStrong, Backing, void>::trace(visitor, self);
     }
 
@@ -375,13 +375,13 @@
         //   This is fine because the fact that the object can be initialized
         //   with memset indicates that it is safe to treat the zerod slot
         //   as a valid object.
-        static_assert(!ShouldBeTraced<Traits>::value || Traits::canClearUnusedSlotsWithMemset || WTF::IsPolymorphic<T>::value, "HeapVectorBacking doesn't support objects that cannot be cleared as unused with memset.");
+        static_assert(!NeedsTracingTrait<Traits>::value || Traits::canClearUnusedSlotsWithMemset || WTF::IsPolymorphic<T>::value, "HeapVectorBacking doesn't support objects that cannot be cleared as unused with memset.");
 
         // This trace method is instantiated for vectors where
-        // ShouldBeTraced<Traits>::value is false, but the trace method
+        // NeedsTracingTrait<Traits>::value is false, but the trace method
         // should not be called. Thus we cannot static-assert
-        // ShouldBeTraced<Traits>::value but should runtime-assert it.
-        ASSERT(ShouldBeTraced<Traits>::value);
+        // NeedsTracingTrait<Traits>::value but should runtime-assert it.
+        ASSERT(NeedsTracingTrait<Traits>::value);
 
         T* array = reinterpret_cast<T*>(self);
         blink::HeapObjectHeader* header = blink::HeapObjectHeader::fromPayload(self);
@@ -392,7 +392,7 @@
         if (WTF::IsPolymorphic<T>::value) {
             for (size_t i = 0; i < length; ++i) {
                 if (blink::vTableInitialized(&array[i]))
-                    blink::TraceIfEnabled<T, ShouldBeTraced<Traits>::value>::trace(visitor, array[i]);
+                    blink::TraceIfEnabled<T, NeedsTracingTrait<Traits>::value>::trace(visitor, array[i]);
             }
         } else {
 #ifdef ANNOTATE_CONTIGUOUS_CONTAINER
@@ -401,7 +401,7 @@
             ANNOTATE_CHANGE_SIZE(array, length, 0, length);
 #endif
             for (size_t i = 0; i < length; ++i)
-                blink::TraceIfEnabled<T, ShouldBeTraced<Traits>::value>::trace(visitor, array[i]);
+                blink::TraceIfEnabled<T, NeedsTracingTrait<Traits>::value>::trace(visitor, array[i]);
         }
         return false;
     }
@@ -427,7 +427,7 @@
         size_t length = header->payloadSize() / sizeof(Value);
         for (size_t i = 0; i < length; ++i) {
             if (!HashTableHelper<Value, typename Table::ExtractorType, typename Table::KeyTraitsType>::isEmptyOrDeletedBucket(array[i]))
-                blink::TraceCollectionIfEnabled<ShouldBeTraced<Traits>::value, Traits::weakHandlingFlag, strongify, Value, Traits>::trace(visitor, array[i]);
+                blink::TraceCollectionIfEnabled<NeedsTracingTrait<Traits>::value, Traits::weakHandlingFlag, strongify, Value, Traits>::trace(visitor, array[i]);
         }
         return false;
     }
@@ -472,9 +472,9 @@
     template<typename VisitorDispatcher>
     static bool trace(VisitorDispatcher visitor, KeyValuePair<Key, Value>& self)
     {
-        ASSERT(ShouldBeTraced<Traits>::value);
-        blink::TraceCollectionIfEnabled<ShouldBeTraced<typename Traits::KeyTraits>::value, NoWeakHandlingInCollections, strongify, Key, typename Traits::KeyTraits>::trace(visitor, self.key);
-        blink::TraceCollectionIfEnabled<ShouldBeTraced<typename Traits::ValueTraits>::value, NoWeakHandlingInCollections, strongify, Value, typename Traits::ValueTraits>::trace(visitor, self.value);
+        ASSERT(NeedsTracingTrait<Traits>::value);
+        blink::TraceCollectionIfEnabled<NeedsTracingTrait<typename Traits::KeyTraits>::value, NoWeakHandlingInCollections, strongify, Key, typename Traits::KeyTraits>::trace(visitor, self.key);
+        blink::TraceCollectionIfEnabled<NeedsTracingTrait<typename Traits::ValueTraits>::value, NoWeakHandlingInCollections, strongify, Value, typename Traits::ValueTraits>::trace(visitor, self.value);
         return false;
     }
 };
@@ -501,21 +501,21 @@
         // reviewers, and we may relax it.
         const bool keyIsWeak = Traits::KeyTraits::weakHandlingFlag == WeakHandlingInCollections;
         const bool valueIsWeak = Traits::ValueTraits::weakHandlingFlag == WeakHandlingInCollections;
-        const bool keyHasStrongRefs = ShouldBeTraced<typename Traits::KeyTraits>::value;
-        const bool valueHasStrongRefs = ShouldBeTraced<typename Traits::ValueTraits>::value;
+        const bool keyHasStrongRefs = NeedsTracingTrait<typename Traits::KeyTraits>::value;
+        const bool valueHasStrongRefs = NeedsTracingTrait<typename Traits::ValueTraits>::value;
         static_assert(!keyIsWeak || !valueIsWeak || !keyHasStrongRefs || !valueHasStrongRefs, "this configuration is disallowed to avoid unexpected leaks");
         if ((valueIsWeak && !keyIsWeak) || (valueIsWeak && keyIsWeak && !valueHasStrongRefs)) {
             // Check value first.
-            bool deadWeakObjectsFoundOnValueSide = blink::TraceCollectionIfEnabled<ShouldBeTraced<typename Traits::ValueTraits>::value, Traits::ValueTraits::weakHandlingFlag, strongify, Value, typename Traits::ValueTraits>::trace(visitor, self.value);
+            bool deadWeakObjectsFoundOnValueSide = blink::TraceCollectionIfEnabled<NeedsTracingTrait<typename Traits::ValueTraits>::value, Traits::ValueTraits::weakHandlingFlag, strongify, Value, typename Traits::ValueTraits>::trace(visitor, self.value);
             if (deadWeakObjectsFoundOnValueSide)
                 return true;
-            return blink::TraceCollectionIfEnabled<ShouldBeTraced<typename Traits::KeyTraits>::value, Traits::KeyTraits::weakHandlingFlag, strongify, Key, typename Traits::KeyTraits>::trace(visitor, self.key);
+            return blink::TraceCollectionIfEnabled<NeedsTracingTrait<typename Traits::KeyTraits>::value, Traits::KeyTraits::weakHandlingFlag, strongify, Key, typename Traits::KeyTraits>::trace(visitor, self.key);
         }
         // Check key first.
-        bool deadWeakObjectsFoundOnKeySide = blink::TraceCollectionIfEnabled<ShouldBeTraced<typename Traits::KeyTraits>::value, Traits::KeyTraits::weakHandlingFlag, strongify, Key, typename Traits::KeyTraits>::trace(visitor, self.key);
+        bool deadWeakObjectsFoundOnKeySide = blink::TraceCollectionIfEnabled<NeedsTracingTrait<typename Traits::KeyTraits>::value, Traits::KeyTraits::weakHandlingFlag, strongify, Key, typename Traits::KeyTraits>::trace(visitor, self.key);
         if (deadWeakObjectsFoundOnKeySide)
             return true;
-        return blink::TraceCollectionIfEnabled<ShouldBeTraced<typename Traits::ValueTraits>::value, Traits::ValueTraits::weakHandlingFlag, strongify, Value, typename Traits::ValueTraits>::trace(visitor, self.value);
+        return blink::TraceCollectionIfEnabled<NeedsTracingTrait<typename Traits::ValueTraits>::value, Traits::ValueTraits::weakHandlingFlag, strongify, Value, typename Traits::ValueTraits>::trace(visitor, self.value);
     }
 };
 
@@ -526,7 +526,7 @@
     template<typename VisitorDispatcher>
     static bool trace(VisitorDispatcher visitor, LinkedHashSetNode<Value, Allocator>& self)
     {
-        ASSERT(ShouldBeTraced<Traits>::value);
+        ASSERT(NeedsTracingTrait<Traits>::value);
         return TraceInCollectionTrait<NoWeakHandlingInCollections, strongify, Value, typename Traits::ValueTraits>::trace(visitor, self.m_value);
     }
 };
diff --git a/third_party/WebKit/Source/web/WebElementTest.cpp b/third_party/WebKit/Source/web/WebElementTest.cpp
index ea3542d..9bdae0f 100644
--- a/third_party/WebKit/Source/web/WebElementTest.cpp
+++ b/third_party/WebKit/Source/web/WebElementTest.cpp
@@ -116,7 +116,7 @@
     EXPECT_TRUE(testElement().hasNonEmptyLayoutSize());
 
     insertHTML(s_emptyBlock);
-    RefPtrWillBeRawPtr<ShadowRoot> root = document().getElementById("testElement")->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> root = document().getElementById("testElement")->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
     root->setInnerHTML("<div>Hello World</div>", ASSERT_NO_EXCEPTION);
     EXPECT_TRUE(testElement().hasNonEmptyLayoutSize());
 }
diff --git a/third_party/WebKit/Source/web/tests/TextFinderTest.cpp b/third_party/WebKit/Source/web/tests/TextFinderTest.cpp
index 58ea0069d..0630e0bc 100644
--- a/third_party/WebKit/Source/web/tests/TextFinderTest.cpp
+++ b/third_party/WebKit/Source/web/tests/TextFinderTest.cpp
@@ -188,7 +188,7 @@
 TEST_F(TextFinderTest, FindTextInShadowDOM)
 {
     document().body()->setInnerHTML("<b>FOO</b><i>foo</i>", ASSERT_NO_EXCEPTION);
-    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = document().body()->createShadowRootInternal(ShadowRootType::OpenByDefault, ASSERT_NO_EXCEPTION);
+    RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = document().body()->createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
     shadowRoot->setInnerHTML("<content select=\"i\"></content><u>Foo</u><content></content>", ASSERT_NO_EXCEPTION);
     Node* textInBElement = document().body()->firstChild()->firstChild();
     Node* textInIElement = document().body()->lastChild()->firstChild();
diff --git a/third_party/WebKit/Source/wtf/Deque.h b/third_party/WebKit/Source/wtf/Deque.h
index 45ecd0d..37f5c9e 100644
--- a/third_party/WebKit/Source/wtf/Deque.h
+++ b/third_party/WebKit/Source/wtf/Deque.h
@@ -547,7 +547,7 @@
     ASSERT(Allocator::isGarbageCollected); // Garbage collector must be enabled.
     const T* bufferBegin = m_buffer.buffer();
     const T* end = bufferBegin + m_end;
-    if (ShouldBeTraced<VectorTraits<T>>::value) {
+    if (NeedsTracingTrait<VectorTraits<T>>::value) {
         if (m_start <= m_end) {
             for (const T* bufferEntry = bufferBegin + m_start; bufferEntry != end; bufferEntry++)
                 Allocator::template trace<VisitorDispatcher, T, VectorTraits<T>>(visitor, *const_cast<T*>(bufferEntry));
diff --git a/third_party/WebKit/Source/wtf/HashTable.h b/third_party/WebKit/Source/wtf/HashTable.h
index c85ddc2a..60527e73 100644
--- a/third_party/WebKit/Source/wtf/HashTable.h
+++ b/third_party/WebKit/Source/wtf/HashTable.h
@@ -1333,7 +1333,7 @@
         // cases). However, it shouldn't cause any issue.
         Allocator::registerWeakMembers(visitor, this, m_table, WeakProcessingHashTableHelper<Traits::weakHandlingFlag, Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator>::process);
     }
-    if (ShouldBeTraced<Traits>::value) {
+    if (NeedsTracingTrait<Traits>::value) {
         if (Traits::weakHandlingFlag == WeakHandlingInCollections) {
             // If we have both strong and weak pointers in the collection then
             // we queue up the collection for fixed point iteration a la
diff --git a/third_party/WebKit/Source/wtf/HashTraits.h b/third_party/WebKit/Source/wtf/HashTraits.h
index 51d89726..b131594 100644
--- a/third_party/WebKit/Source/wtf/HashTraits.h
+++ b/third_party/WebKit/Source/wtf/HashTraits.h
@@ -276,7 +276,7 @@
 
     template <typename U = void>
     struct NeedsTracingLazily {
-        static const bool value = ShouldBeTraced<KeyTraits>::value || ShouldBeTraced<ValueTraits>::value;
+        static const bool value = NeedsTracingTrait<KeyTraits>::value || NeedsTracingTrait<ValueTraits>::value;
     };
     static const WeakHandlingFlag weakHandlingFlag = (KeyTraits::weakHandlingFlag == WeakHandlingInCollections || ValueTraits::weakHandlingFlag == WeakHandlingInCollections) ? WeakHandlingInCollections : NoWeakHandlingInCollections;
 
diff --git a/third_party/WebKit/Source/wtf/TypeTraits.h b/third_party/WebKit/Source/wtf/TypeTraits.h
index 7f78db7..8cfcbb1 100644
--- a/third_party/WebKit/Source/wtf/TypeTraits.h
+++ b/third_party/WebKit/Source/wtf/TypeTraits.h
@@ -337,7 +337,7 @@
 // Convenience template wrapping the NeedsTracingLazily template in
 // Collection Traits. It helps make the code more readable.
 template <typename Traits>
-class ShouldBeTraced {
+class NeedsTracingTrait {
 public:
     static const bool value = Traits::template NeedsTracingLazily<>::value;
 };
diff --git a/third_party/WebKit/Source/wtf/Vector.h b/third_party/WebKit/Source/wtf/Vector.h
index 6acd88d..4209f95 100644
--- a/third_party/WebKit/Source/wtf/Vector.h
+++ b/third_party/WebKit/Source/wtf/Vector.h
@@ -339,13 +339,13 @@
         // If the vector backing is garbage-collected and needs tracing or
         // finalizing, we clear out the unused slots so that the visitor or the
         // finalizer does not cause a problem when visiting the unused slots.
-        VectorUnusedSlotClearer<Allocator::isGarbageCollected && (VectorTraits<T>::needsDestruction || ShouldBeTraced<VectorTraits<T>>::value), T>::clear(from, to);
+        VectorUnusedSlotClearer<Allocator::isGarbageCollected && (VectorTraits<T>::needsDestruction || NeedsTracingTrait<VectorTraits<T>>::value), T>::clear(from, to);
     }
 
     void checkUnusedSlots(const T* from, const T* to)
     {
 #if ENABLE(ASSERT) && !defined(ANNOTATE_CONTIGUOUS_CONTAINER)
-        VectorUnusedSlotClearer<Allocator::isGarbageCollected && (VectorTraits<T>::needsDestruction || ShouldBeTraced<VectorTraits<T>>::value), T>::checkCleared(from, to);
+        VectorUnusedSlotClearer<Allocator::isGarbageCollected && (VectorTraits<T>::needsDestruction || NeedsTracingTrait<VectorTraits<T>>::value), T>::checkCleared(from, to);
 #endif
     }
 
@@ -1330,7 +1330,7 @@
     }
     const T* bufferBegin = buffer();
     const T* bufferEnd = buffer() + size();
-    if (ShouldBeTraced<VectorTraits<T>>::value) {
+    if (NeedsTracingTrait<VectorTraits<T>>::value) {
         for (const T* bufferEntry = bufferBegin; bufferEntry != bufferEnd; bufferEntry++)
             Allocator::template trace<VisitorDispatcher, T, VectorTraits<T>>(visitor, *const_cast<T*>(bufferEntry));
         checkUnusedSlots(buffer() + size(), buffer() + capacity());
diff --git a/third_party/WebKit/Source/wtf/VectorTraits.h b/third_party/WebKit/Source/wtf/VectorTraits.h
index 0ced420..11798ad 100644
--- a/third_party/WebKit/Source/wtf/VectorTraits.h
+++ b/third_party/WebKit/Source/wtf/VectorTraits.h
@@ -99,7 +99,7 @@
     static const bool canClearUnusedSlotsWithMemset = FirstTraits::canClearUnusedSlotsWithMemset && SecondTraits::canClearUnusedSlotsWithMemset;
     template <typename U = void>
         struct NeedsTracingLazily {
-        static const bool value = ShouldBeTraced<FirstTraits>::value || ShouldBeTraced<SecondTraits>::value;
+        static const bool value = NeedsTracingTrait<FirstTraits>::value || NeedsTracingTrait<SecondTraits>::value;
     };
     static const WeakHandlingFlag weakHandlingFlag = NoWeakHandlingInCollections; // We don't support weak handling in vectors.
 };
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/layout_package/bot_test_expectations_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/layout_package/bot_test_expectations_unittest.py
index 8a675d8..be2a4e91 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/layout_package/bot_test_expectations_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/layout_package/bot_test_expectations_unittest.py
@@ -177,7 +177,7 @@
                     'fail.html': {'results': [[4, 'F']]},
                     'f_p.html': {'results': [[1, 'F'], [2, 'P']]},
                     'crash.html': {'results': [[2, 'F'], [1, 'C']], 'expected': 'WONTFIX'},
-                    'image.html': {'results': [[2, 'F'], [1, 'I']], 'expected': 'CRASH FAIL'},
+                    'image.html': {'results': [[2, 'F'], [1, 'I']], 'expected': 'CRASH TEXT'},
                     'i_f.html': {'results': [[1, 'F'], [5, 'I']], 'expected': 'PASS'},
                     'all.html': self._results_from_string('FPFPCNCNTXTXIZIZOCOCYKYK'),
                 }
@@ -190,7 +190,7 @@
             'foo/fail.html': sorted(["TEXT", "PASS"]),
             'foo/f_p.html': sorted(["TEXT", "PASS"]),
             'foo/crash.html': sorted(["WONTFIX", "CRASH", "TEXT"]),
-            'foo/image.html': sorted(["CRASH", "FAIL", "IMAGE"]),
+            'foo/image.html': sorted(["CRASH", "TEXT", "IMAGE"]),
             'foo/i_f.html': sorted(["PASS", "IMAGE", "TEXT"]),
             'foo/all.html': sorted(["TEXT", "PASS", "IMAGE+TEXT", "TIMEOUT", "CRASH", "IMAGE", "MISSING", "LEAK"]),
         })
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py
index 562a4a7..c36e98cf 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py
@@ -229,7 +229,6 @@
         'Crash': 'CRASH',
         'Leak': 'LEAK',
         'Failure': 'FAIL',
-        'ImageOnlyFailure': 'IMAGE',
         MISSING_KEYWORD: 'MISSING',
         'Pass': 'PASS',
         'Rebaseline': 'REBASELINE',
@@ -242,7 +241,7 @@
     }
 
     _inverted_expectation_tokens = dict([(value, name) for name, value in _expectation_tokens.iteritems()] +
-                                        [('TEXT', 'Failure'), ('IMAGE+TEXT', 'Failure'), ('AUDIO', 'Failure')])
+                                        [('TEXT', 'Failure'), ('IMAGE', 'Failure'), ('IMAGE+TEXT', 'Failure'), ('AUDIO', 'Failure')])
 
     # FIXME: Seems like these should be classmethods on TestExpectationLine instead of TestExpectationParser.
     @classmethod
@@ -884,7 +883,7 @@
             return True
         if result in (PASS, TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO, MISSING) and (NEEDS_REBASELINE in expected_results or NEEDS_MANUAL_REBASELINE in expected_results):
             return True
-        if result in (TEXT, IMAGE_PLUS_TEXT, AUDIO) and (FAIL in expected_results):
+        if result in (TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO) and (FAIL in expected_results):
             return True
         if result == MISSING and test_needs_rebaselining:
             return True
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py
index f438fbc..feabaa9 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py
@@ -194,7 +194,7 @@
             'disabled-test.html-disabled',
             self.parse_exp("Bug(user) [ FOO ] failures/expected/text.html [ Failure ]\n"
                            "Bug(user) non-existent-test.html [ Failure ]\n"
-                           "Bug(user) disabled-test.html-disabled [ ImageOnlyFailure ]\n"
+                           "Bug(user) disabled-test.html-disabled [ Failure ]\n"
                            "Bug(user) [ Release ] test-to-rebaseline.html [ NeedsRebaseline ]", is_lint_mode=True)
             self.assertFalse(True, "ParseError wasn't raised")
         except ParseError, e:
@@ -226,8 +226,8 @@
 
     def test_overrides(self):
         self.parse_exp("Bug(exp) failures/expected/text.html [ Failure ]",
-                       "Bug(override) failures/expected/text.html [ ImageOnlyFailure ]")
-        self.assert_exp_list('failures/expected/text.html', [FAIL, IMAGE])
+                       "Bug(override) failures/expected/text.html [ Timeout ]")
+        self.assert_exp_list('failures/expected/text.html', [FAIL, TIMEOUT])
 
     def test_overrides__directory(self):
         self.parse_exp("Bug(exp) failures/expected/text.html [ Failure ]",
@@ -237,7 +237,7 @@
 
     def test_overrides__duplicate(self):
         self.assert_bad_expectations("Bug(exp) failures/expected/text.html [ Failure ]",
-                                     "Bug(override) failures/expected/text.html [ ImageOnlyFailure ]\n"
+                                     "Bug(override) failures/expected/text.html [ Timeout ]\n"
                                      "Bug(override) failures/expected/text.html [ Crash ]\n")
 
     def test_pixel_tests_flag(self):
@@ -266,7 +266,7 @@
 
         self.parse_exp("""
 Bug(test) failures/expected/crash.html [ Crash ]
-Bug(test) failures/expected/image.html [ ImageOnlyFailure ]
+Bug(test) failures/expected/image.html [ Failure ]
 Bug(test) failures/expected/text.html [ Failure ]
 Bug(test) failures/expected/timeout.html [ Timeout ]
 """)
@@ -277,8 +277,8 @@
 
     def test_more_specific_override_resets_skip(self):
         self.parse_exp("Bug(x) failures/expected [ Skip ]\n"
-                       "Bug(x) failures/expected/text.html [ ImageOnlyFailure ]\n")
-        self.assert_exp('failures/expected/text.html', IMAGE)
+                       "Bug(x) failures/expected/text.html [ Failure ]\n")
+        self.assert_exp('failures/expected/text.html', FAIL)
         self.assertFalse(self._port._filesystem.join(self._port.layout_tests_dir(),
                                                      'failures/expected/text.html') in
                          self._exp.get_tests_with_result_type(SKIP))
@@ -289,11 +289,11 @@
         test_name2 = 'passes/text.html'
 
         expectations_dict = OrderedDict()
-        expectations_dict['expectations'] = "Bug(x) %s [ ImageOnlyFailure ]\nBug(x) %s [ Slow ]\n" % (test_name1, test_name2)
+        expectations_dict['expectations'] = "Bug(x) %s [ Failure ]\nBug(x) %s [ Slow ]\n" % (test_name1, test_name2)
         self._port.expectations_dict = lambda: expectations_dict
 
         expectations = TestExpectations(self._port, self.get_basic_tests())
-        self.assertEqual(expectations.get_expectations(test_name1), set([IMAGE]))
+        self.assertEqual(expectations.get_expectations(test_name1), set([FAIL]))
         self.assertEqual(expectations.get_expectations(test_name2), set([SLOW]))
 
         def bot_expectations():
@@ -302,7 +302,7 @@
         self._port._options.ignore_flaky_tests = 'unexpected'
 
         expectations = TestExpectations(self._port, self.get_basic_tests())
-        self.assertEqual(expectations.get_expectations(test_name1), set([PASS, IMAGE, TIMEOUT]))
+        self.assertEqual(expectations.get_expectations(test_name1), set([PASS, FAIL, TIMEOUT]))
         self.assertEqual(expectations.get_expectations(test_name2), set([CRASH, SLOW]))
 
 class SkippedTests(Base):
@@ -407,7 +407,7 @@
 
     def test_wontfix(self):
         self.assert_tokenize_exp('foo.html [ WontFix ]', specifiers=[], expectations=['WONTFIX', 'SKIP'])
-        self.assert_tokenize_exp('foo.html [ WontFix ImageOnlyFailure ]', specifiers=[], expectations=['WONTFIX', 'SKIP'],
+        self.assert_tokenize_exp('foo.html [ WontFix Failure ]', specifiers=[], expectations=['WONTFIX', 'SKIP'],
             warnings=['A test marked Skip or WontFix must not have other expectations.'])
 
     def test_blank_line(self):
@@ -463,12 +463,12 @@
     def test_duplicates(self):
         self.assertRaises(ParseError, self.parse_exp, """
 Bug(exp) failures/expected/text.html [ Failure ]
-Bug(exp) failures/expected/text.html [ ImageOnlyFailure ]""", is_lint_mode=True)
+Bug(exp) failures/expected/text.html [ Timeout ]""", is_lint_mode=True)
 
         self.assertRaises(ParseError, self.parse_exp,
             self.get_basic_expectations(), overrides="""
 Bug(override) failures/expected/text.html [ Failure ]
-Bug(override) failures/expected/text.html [ ImageOnlyFailure ]""", is_lint_mode=True)
+Bug(override) failures/expected/text.html [ Timeout ]""", is_lint_mode=True)
 
     def test_duplicate_with_line_before_preceding_line(self):
         self.assert_bad_expectations("""Bug(exp) [ Debug ] failures/expected/text.html [ Failure ]
@@ -814,9 +814,9 @@
         expectation_line.parsed_expectations = set([IMAGE])
         self.assertEqual(expectation_line.to_string(self._converter), None)
         expectation_line.matching_configurations = set([TestConfiguration('xp', 'x86', 'release')])
-        self.assertEqual(expectation_line.to_string(self._converter), 'Bug(x) [ XP Release ] test/name/for/realz.html [ ImageOnlyFailure ]')
+        self.assertEqual(expectation_line.to_string(self._converter), 'Bug(x) [ XP Release ] test/name/for/realz.html [ Failure ]')
         expectation_line.matching_configurations = set([TestConfiguration('xp', 'x86', 'release'), TestConfiguration('xp', 'x86', 'debug')])
-        self.assertEqual(expectation_line.to_string(self._converter), 'Bug(x) [ XP ] test/name/for/realz.html [ ImageOnlyFailure ]')
+        self.assertEqual(expectation_line.to_string(self._converter), 'Bug(x) [ XP ] test/name/for/realz.html [ Failure ]')
 
     def test_serialize_parsed_expectations(self):
         expectation_line = TestExpectationLine()
@@ -894,9 +894,9 @@
         add_line(set([TestConfiguration('xp', 'x86', 'release')]), True)
         add_line(set([TestConfiguration('xp', 'x86', 'release'), TestConfiguration('xp', 'x86', 'debug')]), False)
         serialized = TestExpectations.list_to_string(lines, self._converter)
-        self.assertEqual(serialized, "Bug(x) [ XP Release ] Yay [ ImageOnlyFailure ]\nBug(x) [ XP ] Yay [ ImageOnlyFailure ]")
+        self.assertEqual(serialized, "Bug(x) [ XP Release ] Yay [ Failure ]\nBug(x) [ XP ] Yay [ Failure ]")
         serialized = TestExpectations.list_to_string(lines, self._converter, reconstitute_only_these=reconstitute_only_these)
-        self.assertEqual(serialized, "Bug(x) [ XP Release ] Yay [ ImageOnlyFailure ]\nNay")
+        self.assertEqual(serialized, "Bug(x) [ XP Release ] Yay [ Failure ]\nNay")
 
     def disabled_test_string_whitespace_stripping(self):
         # FIXME: Re-enable this test once we rework the code to no longer support the old syntax.
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py
index a18c5393..fb34b66 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py
@@ -259,7 +259,7 @@
         self.assertTrue('time' not in summary['tests']['failures']['expected']['leak.html'])
 
     def test_timeout_then_unexpected_pass(self):
-        test_name = 'failures/expected/image.html'
+        test_name = 'failures/expected/text.html'
         expectations = test_expectations.TestExpectations(self.port, [test_name])
         initial_results = test_run_results.TestRunResults(expectations, 1)
         initial_results.add(get_result(test_name, test_expectations.TIMEOUT, run_time=1), False, False)
@@ -272,9 +272,9 @@
         summary = test_run_results.summarize_results(
             self.port, expectations, initial_results, all_retry_results,
             enabled_pixel_tests_in_retry=True)
-        self.assertTrue('is_unexpected' not in summary['tests']['failures']['expected']['image.html'])
-        self.assertEquals(summary['tests']['failures']['expected']['image.html']['expected'], 'IMAGE')
-        self.assertEquals(summary['tests']['failures']['expected']['image.html']['actual'], 'TIMEOUT LEAK PASS PASS')
+        self.assertTrue('is_unexpected' in summary['tests']['failures']['expected']['text.html'])
+        self.assertEquals(summary['tests']['failures']['expected']['text.html']['expected'], 'FAIL')
+        self.assertEquals(summary['tests']['failures']['expected']['text.html']['actual'], 'TIMEOUT LEAK PASS PASS')
         self.assertEquals(summary['num_passes'], 1)
         self.assertEquals(summary['num_regressions'], 0)
         self.assertEquals(summary['num_flaky'], 0)
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/test.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/test.py
index bd7ac7a8..328454d 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/test.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/test.py
@@ -285,12 +285,12 @@
         filesystem.write_text_file('/mock-checkout/LayoutTests/TestExpectations', """
 Bug(test) failures/expected/crash.html [ Crash ]
 Bug(test) failures/expected/crash_then_text.html [ Failure ]
-Bug(test) failures/expected/image.html [ ImageOnlyFailure ]
+Bug(test) failures/expected/image.html [ Failure ]
 Bug(test) failures/expected/needsrebaseline.html [ NeedsRebaseline ]
 Bug(test) failures/expected/needsmanualrebaseline.html [ NeedsManualRebaseline ]
 Bug(test) failures/expected/audio.html [ Failure ]
-Bug(test) failures/expected/image_checksum.html [ ImageOnlyFailure ]
-Bug(test) failures/expected/mismatch.html [ ImageOnlyFailure ]
+Bug(test) failures/expected/image_checksum.html [ Failure ]
+Bug(test) failures/expected/mismatch.html [ Failure ]
 Bug(test) failures/expected/missing_check.html [ Missing Pass ]
 Bug(test) failures/expected/missing_image.html [ Missing Pass ]
 Bug(test) failures/expected/missing_audio.html [ Missing Pass ]
@@ -298,7 +298,7 @@
 Bug(test) failures/expected/newlines_leading.html [ Failure ]
 Bug(test) failures/expected/newlines_trailing.html [ Failure ]
 Bug(test) failures/expected/newlines_with_excess_CR.html [ Failure ]
-Bug(test) failures/expected/reftest.html [ ImageOnlyFailure ]
+Bug(test) failures/expected/reftest.html [ Failure ]
 Bug(test) failures/expected/text.html [ Failure ]
 Bug(test) failures/expected/timeout.html [ Timeout ]
 Bug(test) failures/expected/keyboard.html [ WontFix ]
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py
index 9814900..febc6754b 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py
@@ -446,7 +446,7 @@
         # This tests that we skip both known failing and known flaky tests. Because there are
         # no known flaky tests in the default test_expectations, we add additional expectations.
         host = MockHost()
-        host.filesystem.write_text_file('/tmp/overrides.txt', 'Bug(x) passes/image.html [ ImageOnlyFailure Pass ]\n')
+        host.filesystem.write_text_file('/tmp/overrides.txt', 'Bug(x) passes/image.html [ Failure Pass ]\n')
 
         batches = get_test_batches(['--skip-failing-tests', '--additional-expectations', '/tmp/overrides.txt'], host=host)
         has_passes_text = False
@@ -822,7 +822,7 @@
 
     def test_additional_expectations(self):
         host = MockHost()
-        host.filesystem.write_text_file('/tmp/overrides.txt', 'Bug(x) failures/unexpected/mismatch.html [ ImageOnlyFailure ]\n')
+        host.filesystem.write_text_file('/tmp/overrides.txt', 'Bug(x) failures/unexpected/mismatch.html [ Failure ]\n')
         self.assertTrue(passing_run(['--additional-expectations', '/tmp/overrides.txt', 'failures/unexpected/mismatch.html'],
                                     tests_included=True, host=host))
 
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/queries_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/queries_unittest.py
index 6bce725..8fb37fb2 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/queries_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/queries_unittest.py
@@ -53,44 +53,44 @@
         self.assertMultiLineEqual(stdout, expected_stdout)
 
     def test_basic(self):
-        self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
+        self.run_test(['failures/expected/text.html', 'failures/expected/timeout.html'],
                       ('// For test-win-xp\n'
-                       'failures/expected/image.html [ ImageOnlyFailure ]\n'
-                       'failures/expected/text.html [ Failure ]\n'))
+                       'failures/expected/text.html [ Failure ]\n'
+                       'failures/expected/timeout.html [ Timeout ]\n'))
 
     def test_multiple(self):
-        self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
+        self.run_test(['failures/expected/text.html', 'failures/expected/timeout.html'],
                       ('// For test-win-win7\n'
-                       'failures/expected/image.html [ ImageOnlyFailure ]\n'
                        'failures/expected/text.html [ Failure ]\n'
+                       'failures/expected/timeout.html [ Timeout ]\n'
                        '\n'
                        '// For test-win-xp\n'
-                       'failures/expected/image.html [ ImageOnlyFailure ]\n'
-                       'failures/expected/text.html [ Failure ]\n'),
+                       'failures/expected/text.html [ Failure ]\n'
+                       'failures/expected/timeout.html [ Timeout ]\n'),
                        platform='test-win-*')
 
     def test_full(self):
-        self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
+        self.run_test(['failures/expected/text.html', 'failures/expected/timeout.html'],
                       ('// For test-win-xp\n'
-                       'Bug(test) failures/expected/image.html [ ImageOnlyFailure ]\n'
-                       'Bug(test) failures/expected/text.html [ Failure ]\n'),
+                       'Bug(test) failures/expected/text.html [ Failure ]\n'
+                       'Bug(test) failures/expected/timeout.html [ Timeout ]\n'),
                       full=True)
 
     def test_exclude(self):
-        self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
+        self.run_test(['failures/expected/text.html', 'failures/expected/crash.html'],
                       ('// For test-win-xp\n'
                        'failures/expected/text.html [ Failure ]\n'),
-                      exclude_keyword=['image'])
+                      exclude_keyword=['crash'])
 
     def test_include(self):
-        self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
+        self.run_test(['failures/expected/text.html', 'failures/expected/crash.html'],
                       ('// For test-win-xp\n'
-                       'failures/expected/image.html\n'),
-                      include_keyword=['image'])
+                       'failures/expected/crash.html\n'),
+                      include_keyword=['crash'])
 
     def test_csv(self):
         self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
-                      ('test-win-xp,failures/expected/image.html,Bug(test),,IMAGE\n'
+                      ('test-win-xp,failures/expected/image.html,Bug(test),,FAIL\n'
                        'test-win-xp,failures/expected/text.html,Bug(test),,FAIL\n'),
                       csv=True)
 
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
index eb43b1a..c723841 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
@@ -272,7 +272,7 @@
 
     def test_rebaseline_test_with_results_directory(self):
         self._write("userscripts/another-test.html", "test data")
-        self._write(self.lion_expectations_path, "Bug(x) [ Mac ] userscripts/another-test.html [ ImageOnlyFailure ]\nbug(z) [ Linux ] userscripts/another-test.html [ ImageOnlyFailure ]\n")
+        self._write(self.lion_expectations_path, "Bug(x) [ Mac ] userscripts/another-test.html [ Failure ]\nbug(z) [ Linux ] userscripts/another-test.html [ Failure ]\n")
         self.options.results_directory = '/tmp'
         self.command._rebaseline_test_and_update_expectations(self.options)
         self.assertItemsEqual(self.tool.web.urls_fetched, ['file:///tmp/userscripts/another-test-actual.txt'])
@@ -377,7 +377,7 @@
 
         options = MockOptions(optimize=True, verbose=True, results_directory=None)
 
-        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ Failure ]\n")
         self._write("userscripts/first-test.html", "Dummy test contents")
 
         self.command._rebaseline(options,  {"userscripts/first-test.html": {"MOCK builder": ["txt", "png"]}})
@@ -457,26 +457,26 @@
     def test_rebaseline_updates_expectations_file(self):
         options = MockOptions(optimize=False, verbose=True, results_directory=None)
 
-        self._write(self.lion_expectations_path, "Bug(x) [ Mac ] userscripts/first-test.html [ ImageOnlyFailure ]\nbug(z) [ Linux ] userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self._write(self.lion_expectations_path, "Bug(x) [ Mac ] userscripts/first-test.html [ Failure ]\nbug(z) [ Linux ] userscripts/first-test.html [ Failure ]\n")
         self._write("userscripts/first-test.html", "Dummy test contents")
         self._setup_mock_builder_data()
 
         self.command._rebaseline(options,  {"userscripts/first-test.html": {"WebKit Mac10.7": ["txt", "png"]}})
 
         new_expectations = self._read(self.lion_expectations_path)
-        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Mavericks MountainLion Retina SnowLeopard Yosemite ] userscripts/first-test.html [ ImageOnlyFailure ]\nbug(z) [ Linux ] userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Mavericks MountainLion Retina SnowLeopard Yosemite ] userscripts/first-test.html [ Failure ]\nbug(z) [ Linux ] userscripts/first-test.html [ Failure ]\n")
 
     def test_rebaseline_updates_expectations_file_all_platforms(self):
         options = MockOptions(optimize=False, verbose=True, results_directory=None)
 
-        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ Failure ]\n")
         self._write("userscripts/first-test.html", "Dummy test contents")
         self._setup_mock_builder_data()
 
         self.command._rebaseline(options,  {"userscripts/first-test.html": {"WebKit Mac10.7": ["txt", "png"]}})
 
         new_expectations = self._read(self.lion_expectations_path)
-        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Android Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Android Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ Failure ]\n")
 
     def test_rebaseline_handles_platform_skips(self):
         # This test is just like test_rebaseline_updates_expectations_file_all_platforms(),
@@ -484,7 +484,7 @@
         # we count that as passing, and do not think that we still need to rebaseline it.
         options = MockOptions(optimize=False, verbose=True, results_directory=None)
 
-        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ Failure ]\n")
         self._write("NeverFixTests", "Bug(y) [ Android ] userscripts [ Skip ]\n")
         self._write("userscripts/first-test.html", "Dummy test contents")
         self._setup_mock_builder_data()
@@ -492,7 +492,7 @@
         self.command._rebaseline(options,  {"userscripts/first-test.html": {"WebKit Mac10.7": ["txt", "png"]}})
 
         new_expectations = self._read(self.lion_expectations_path)
-        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ Failure ]\n")
 
     def test_rebaseline_handles_skips_in_file(self):
         # This test is like test_Rebaseline_handles_platform_skips, except that the
@@ -503,7 +503,7 @@
         options = MockOptions(optimize=False, verbose=True, results_directory=None)
 
         self._write(self.lion_expectations_path,
-            ("Bug(x) [ Linux Mac Win ] userscripts/first-test.html [ ImageOnlyFailure ]\n"
+            ("Bug(x) [ Linux Mac Win ] userscripts/first-test.html [ Failure ]\n"
              "Bug(y) [ Android ] userscripts/first-test.html [ Skip ]\n"))
         self._write("userscripts/first-test.html", "Dummy test contents")
         self._setup_mock_builder_data()
@@ -513,7 +513,7 @@
         new_expectations = self._read(self.lion_expectations_path)
         self.assertMultiLineEqual(
             new_expectations,
-            ("Bug(x) [ Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ ImageOnlyFailure ]\n"
+            ("Bug(x) [ Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ Failure ]\n"
              "Bug(y) [ Android ] userscripts/first-test.html [ Skip ]\n"))
 
     def test_rebaseline_handles_smoke_tests(self):
@@ -523,7 +523,7 @@
         # run smoke tests, and do not think that we still need to rebaseline it.
         options = MockOptions(optimize=False, verbose=True, results_directory=None)
 
-        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test.html [ Failure ]\n")
         self._write("SmokeTests", "fast/html/article-element.html")
         self._write("userscripts/first-test.html", "Dummy test contents")
         self._setup_mock_builder_data()
@@ -531,7 +531,7 @@
         self.command._rebaseline(options,  {"userscripts/first-test.html": {"WebKit Mac10.7": ["txt", "png"]}})
 
         new_expectations = self._read(self.lion_expectations_path)
-        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ ImageOnlyFailure ]\n")
+        self.assertMultiLineEqual(new_expectations, "Bug(x) [ Linux Mavericks MountainLion Retina SnowLeopard Win Yosemite ] userscripts/first-test.html [ Failure ]\n")
 
 
 class TestRebaseline(_BaseTestCase):
@@ -930,7 +930,7 @@
     def test_tests_to_rebaseline(self):
         def blame(path):
             return """
-624c3081c0 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ Debug ] path/to/norebaseline.html [ ImageOnlyFailure ]
+624c3081c0 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ Debug ] path/to/norebaseline.html [ Failure ]
 624c3081c0 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-04-28 04:52:41 +0000   13) Bug(foo) path/to/rebaseline-without-bug-number.html [ NeedsRebaseline ]
 624c3081c0 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ Debug ] path/to/rebaseline-with-modifiers.html [ NeedsRebaseline ]
 624c3081c0 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-04-28 04:52:41 +0000   12) crbug.com/24182 crbug.com/234 path/to/rebaseline-without-modifiers.html [ NeedsRebaseline ]
@@ -996,7 +996,7 @@
     def test_no_needs_rebaseline_lines(self):
         def blame(path):
             return """
-6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ Debug ] path/to/norebaseline.html [ ImageOnlyFailure ]
+6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ Debug ] path/to/norebaseline.html [ Failure ]
 """
         self.tool.scm().blame = blame
 
@@ -1007,7 +1007,7 @@
         def blame(path):
             return """
 6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) # Test NeedsRebaseline being in a comment doesn't bork parsing.
-6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ Debug ] path/to/norebaseline.html [ ImageOnlyFailure ]
+6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ Debug ] path/to/norebaseline.html [ Failure ]
 6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-04-28 04:52:41 +0000   13) Bug(foo) fast/dom/prototype-taco.html [ NeedsRebaseline ]
 6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-06-14 20:18:46 +0000   11) crbug.com/24182 [ SnowLeopard ] fast/dom/prototype-strawberry.html [ NeedsRebaseline ]
 6469e754a1 path/to/TestExpectations                   (foobarbaz1@chromium.org 2013-04-28 04:52:41 +0000   12) crbug.com/24182 fast/dom/prototype-chocolate.html [ NeedsRebaseline ]
diff --git a/third_party/cld_2/BUILD.gn b/third_party/cld_2/BUILD.gn
index 6d41977b..b64440c 100644
--- a/third_party/cld_2/BUILD.gn
+++ b/third_party/cld_2/BUILD.gn
@@ -84,11 +84,11 @@
 }
 
 source_set("cld2_platform_impl") {
-  deps = []
+  public_deps = []
   if (cld2_platform_support == "static") {
-    deps += [ ":cld2_static" ]
+    public_deps += [ ":cld2_static" ]
   } else if (cld2_platform_support == "dynamic") {
-    deps += [ ":cld2_dynamic" ]
+    public_deps += [ ":cld2_dynamic" ]
   }
 }
 
@@ -109,7 +109,7 @@
     "src/public",
   ]
 
-  deps = [
+  public_deps = [
     ":cld_2",
     ":cld2_data",
   ]
diff --git a/tools/gn/c_include_iterator.cc b/tools/gn/c_include_iterator.cc
index 9e719c7..120295e 100644
--- a/tools/gn/c_include_iterator.cc
+++ b/tools/gn/c_include_iterator.cc
@@ -48,6 +48,8 @@
 bool ShouldCountTowardNonIncludeLines(const base::StringPiece& line) {
   if (StartsWith(line, "//"))
     return false;  // Don't count comments.
+  if (StartsWith(line, "/*") || StartsWith(line, " *"))
+    return false;  // C-style comment blocks with stars along the left side.
   if (StartsWith(line, "#"))
     return false;  // Don't count preprocessor.
   if (base::ContainsOnlyChars(line, base::kWhitespaceASCII))
diff --git a/tools/gn/c_include_iterator_unittest.cc b/tools/gn/c_include_iterator_unittest.cc
index 11fa991..1add29b5 100644
--- a/tools/gn/c_include_iterator_unittest.cc
+++ b/tools/gn/c_include_iterator_unittest.cc
@@ -132,3 +132,26 @@
   }
   EXPECT_FALSE(iter.GetNextIncludeString(&contents, &range));
 }
+
+// Tests that comments of the form
+//    /*
+//     *
+//     */
+// are not counted toward the non-include line count.
+TEST(CIncludeIterator, CStyleComments) {
+  std::string buffer("/*");
+  for (size_t i = 0; i < 1000; i++)
+    buffer.append(" *\n");
+  buffer.append(" */\n\n");
+  buffer.append("#include \"foo/bar.h\"\n");
+
+  InputFile file(SourceFile("//foo.cc"));
+  file.SetContents(buffer);
+
+  base::StringPiece contents;
+  LocationRange range;
+
+  CIncludeIterator iter(&file);
+  EXPECT_TRUE(iter.GetNextIncludeString(&contents, &range));
+  EXPECT_EQ("foo/bar.h", contents);
+}
diff --git a/ui/app_list/search/dictionary_data_store.cc b/ui/app_list/search/dictionary_data_store.cc
index 45f53ca..443d973 100644
--- a/ui/app_list/search/dictionary_data_store.cc
+++ b/ui/app_list/search/dictionary_data_store.cc
@@ -67,16 +67,16 @@
   int error_code = JSONFileValueDeserializer::JSON_NO_ERROR;
   std::string error_message;
   JSONFileValueDeserializer deserializer(data_file_);
-  base::Value* value = deserializer.Deserialize(&error_code, &error_message);
-  base::DictionaryValue* dict_value = NULL;
-  if (error_code != JSONFileValueDeserializer::JSON_NO_ERROR || !value ||
-      !value->GetAsDictionary(&dict_value) || !dict_value) {
+  scoped_ptr<base::DictionaryValue> dict_value = base::DictionaryValue::From(
+      deserializer.Deserialize(&error_code, &error_message));
+  if (error_code != JSONFileValueDeserializer::JSON_NO_ERROR || !dict_value) {
     return nullptr;
   }
 
-  base::DictionaryValue* return_dict = dict_value->DeepCopy();
-  cached_dict_.reset(dict_value);
-  return make_scoped_ptr(return_dict);
+  scoped_ptr<base::DictionaryValue> return_dict =
+      make_scoped_ptr(dict_value.get()->DeepCopy());
+  cached_dict_ = dict_value.Pass();
+  return return_dict;
 }
 
 bool DictionaryDataStore::SerializeData(std::string* data) {
diff --git a/ui/file_manager/video_player/css/media_controls.css b/ui/file_manager/video_player/css/media_controls.css
index 4383afb..24ffafd 100644
--- a/ui/file_manager/video_player/css/media_controls.css
+++ b/ui/file_manager/video_player/css/media_controls.css
@@ -2,37 +2,27 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
+/* Common styles for media buttons. */
+
 .media-button {
-  height: 28px;
-  margin: 0 5px;
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 32px;
   position: relative;
-  width: 26px;
+  width: 32px;
 }
 
-.media-button > div {
-  background: center center;
-  height: 100%;
-  opacity: 0;
-  pointer-events: none;
-  position: absolute;
-  transition: opacity 100ms linear;
-  width: 100%;
+.media-button:hover {
+  background-color: rgba(153, 153, 153, 0.2);
 }
 
-.media-button[state='default']:not(.disabled):not(:hover):not(:active) >
-    .default.normal,
-.media-button[state='default']:not(.disabled):hover > .default.hover,
-.media-button[state='default']:not(.disabled):active > .default.active,
-.media-button[state='playing']:not(.disabled):not(:hover):not(:active) >
-    .playing.normal,
-.media-button[state='playing']:not(.disabled):hover > .playing.hover,
-.media-button[state='playing']:not(.disabled):active > .playing.active,
-.media-button[state='ended']:not(.disabled):not(:hover):not(:active) >
-    .ended.normal,
-.media-button[state='ended']:not(.disabled):hover > .ended.hover,
-.media-button[state='ended']:not(.disabled):active > .ended.active,
-.media-button.disabled > .disabled {
-  opacity: 1;
+.media-button:active {
+  background-color: rgba(153, 153, 153, 0.4);
+}
+
+.media-button.disabled {
+  background-color: transparent;
+  opacity: 0.26;
 }
 
 /* Custom sliders for progress and volume. */
@@ -66,10 +56,10 @@
   border-bottom-style: solid;
   border-top-style: solid;
   border-width: 1px;
-  bottom: 11px;
+  bottom: 14px;
   pointer-events: none;  /* Mouse events pass through to the standard input. */
   position: absolute;
-  top: 11px;
+  top: 14px;
 }
 
 .custom-slider > .bar > .filled,
@@ -112,14 +102,14 @@
 
 .custom-slider > .bar,
 .custom-slider > .bar > .cap.right {
-  background-color: rgba(0, 0, 0, 0.5);
-  border-color: #808080;
+  background-color: #dadada;
+  border-color: #dadada;
 }
 
 .custom-slider > .bar > .filled,
 .custom-slider > .bar > .cap.left {
-  background-image: linear-gradient(#c3c3c3, #d9d9d9);
-  border-color: #d9d9d9;
+  background-color: #4285f4;
+  border-color: #4285f4;
 }
 
 .custom-slider.disabled  > .bar > .filled,
@@ -188,66 +178,18 @@
 
 /* Play/pause button. */
 
-.media-button.play > .default.normal {
+.media-button.play {
   background-image: -webkit-image-set(
     url(../images/media/media_play.png) 1x,
     url(../images/media/2x/media_play.png) 2x);
 }
 
-.media-button.play > .default.hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_play_hover.png) 1x,
-    url(../images/media/2x/media_play_hover.png) 2x);
-}
-
-.media-button.play > .default.active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_play_down.png) 1x,
-    url(../images/media/2x/media_play_down.png) 2x);
-}
-
-.media-button.play > .playing.normal {
+.media-button.play[state='playing'] {
   background-image: -webkit-image-set(
     url(../images/media/media_pause.png) 1x,
     url(../images/media/2x/media_pause.png) 2x);
 }
 
-.media-button.play > .playing.hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_pause_hover.png) 1x,
-    url(../images/media/2x/media_pause_hover.png) 2x);
-}
-
-.media-button.play > .playing.active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_pause_down.png) 1x,
-    url(../images/media/2x/media_pause_down.png) 2x);
-}
-
-.media-button.play > .ended.normal {
-  background-image: -webkit-image-set(
-    url(../images/media/media_loop.png) 1x,
-    url(../images/media/2x/media_loop.png) 2x);
-}
-
-.media-button.play > .ended.hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_loop_hover.png) 1x,
-    url(../images/media/2x/media_loop_hover.png) 2x);
-}
-
-.media-button.play > .ended.active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_loop_down.png) 1x,
-    url(../images/media/2x/media_loop_down.png) 2x);
-}
-
-.media-button.play > .disabled {
-  background-image: -webkit-image-set(
-    url(../images/media/media_play_disabled.png) 1x,
-    url(../images/media/2x/media_play_disabled.png) 2x);
-}
-
 /* Time controls: a slider and a text time display. */
 
 .time-controls {
@@ -257,6 +199,7 @@
   -webkit-box-pack: center;
   display: -webkit-box;
   height: 100%;
+  margin: 0 8px;
 }
 
 .custom-slider.progress {
@@ -318,7 +261,7 @@
   -webkit-box-align: center;
   -webkit-box-orient: horizontal;
   -webkit-box-pack: end;
-  color: white;
+  color: rgb(51, 51, 51);
   display: -webkit-box;
   height: 100%;
   position: absolute;
@@ -334,94 +277,21 @@
   -webkit-box-pack: center;
   display: -webkit-box;
   height: 100%;
+  margin: 0 8px;
 }
 
 /* Sound button */
 
 .media-button.sound {
-  width: 31px;
+  background-image: -webkit-image-set(
+    url(../images/media/media_volume.png) 1x,
+    url(../images/media/2x/media_volume.png) 2x);
 }
 
-.media-button.sound[level='0'] > .normal {
+.media-button.sound[level='0'] {
   background-image: -webkit-image-set(
-    url(../images/media/media_sound_disabled.png) 1x,
-    url(../images/media/2x/media_sound_disabled.png) 2x);
-}
-
-.media-button.sound[level='0'] > .hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_disabled_hover.png) 1x,
-    url(../images/media/2x/media_sound_disabled_hover.png) 2x);
-}
-
-.media-button.sound[level='0'] > .active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_disabled_down.png) 1x,
-    url(../images/media/2x/media_sound_disabled_down.png) 2x);
-}
-
-
-.media-button.sound[level='1'] > .normal {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_level1.png) 1x,
-    url(../images/media/2x/media_sound_level1.png) 2x);
-}
-
-.media-button.sound[level='1'] > .hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_level1_hover.png) 1x,
-    url(../images/media/2x/media_sound_level1_hover.png) 2x);
-}
-
-.media-button.sound[level='1'] > .active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_level1_down.png) 1x,
-    url(../images/media/2x/media_sound_level1_down.png) 2x);
-}
-
-
-.media-button.sound[level='2'] > .normal {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_level2.png) 1x,
-    url(../images/media/2x/media_sound_level2.png) 2x);
-}
-
-.media-button.sound[level='2'] > .hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_level2_hover.png) 1x,
-    url(../images/media/2x/media_sound_level2_hover.png) 2x);
-}
-
-.media-button.sound[level='2'] > .active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_level2_down.png) 1x,
-    url(../images/media/2x/media_sound_level2_down.png) 2x);
-}
-
-
-.media-button.sound[level='3'] > .normal {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_full.png) 1x,
-    url(../images/media/2x/media_sound_full.png) 2x);
-}
-
-.media-button.sound[level='3'] > .hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_full_hover.png) 1x,
-    url(../images/media/2x/media_sound_full_hover.png) 2x);
-}
-
-.media-button.sound[level='3'] > .active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_full_down.png) 1x,
-    url(../images/media/2x/media_sound_full_down.png) 2x);
-}
-
-
-.media-button.sound > .disabled {
-  background-image: -webkit-image-set(
-    url(../images/media/media_sound_full_disabled.png) 1x,
-    url(../images/media/2x/media_sound_full_disabled.png) 2x);
+    url(../images/media/media_volume_mute.png) 1x,
+    url(../images/media/2x/media_volume_mute.png) 2x);
 }
 
 /* Volume slider. */
@@ -466,54 +336,20 @@
   -webkit-box-align: center;
   -webkit-box-orient: horizontal;
   -webkit-box-pack: center;
-  background: #202020;
-  border-radius: 5px;
+  background: rgb(250, 250, 250);
   display: -webkit-box;
-  font-size: 15px;
-  height: 30px;
-  opacity: 0.8;
+  font-size: 13px;
+  height: 32px;
+  padding: 8px;
   pointer-events: auto;
 }
 
 /* Cast button. */
 
-.media-button.cast > .default.normal {
+.media-button.cast {
   background-image: -webkit-image-set(
     url(../images/media/media_chromecast.png) 1x,
     url(../images/media/2x/media_chromecast.png) 2x);
-}
-
-.media-button.cast > .default.hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_chromecast_hover.png) 1x,
-    url(../images/media/2x/media_chromecast_hover.png) 2x);
-}
-
-.media-button.cast > .default.active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_chromecast_down.png) 1x,
-    url(../images/media/2x/media_chromecast_down.png) 2x);
-}
-
-#video-player[casting] .media-button.cast > .default.normal {
-  background-image: -webkit-image-set(
-    url(../images/media/media_chromecast_casting.png) 1x,
-    url(../images/media/2x/media_chromecast_casting.png) 2x);
-}
-
-#video-player[casting] .media-button.cast > .default.hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_chromecast_casting_hover.png) 1x,
-    url(../images/media/2x/media_chromecast_casting_hover.png) 2x);
-}
-
-#video-player[casting] .media-button.cast > .default.active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_chromecast_casting_down.png) 1x,
-    url(../images/media/2x/media_chromecast_casting_down.png) 2x);
-}
-
-.media-button.cast {
   display: none;
 }
 
@@ -521,34 +357,21 @@
   display: block;
 }
 
+#video-player[casting] .media-button.cast {
+  background-image: -webkit-image-set(
+    url(../images/media/media_chromecast_casting.png) 1x,
+    url(../images/media/2x/media_chromecast_casting.png) 2x);
+}
 
 /* Fullscreen button. */
 /* There is no final decision whether we need a separate icon when toggled. */
 
-.media-button.fullscreen > .normal {
+.media-button.fullscreen {
   background-image: -webkit-image-set(
     url(../images/media/media_fullscreen.png) 1x,
     url(../images/media/2x/media_fullscreen.png) 2x);
 }
 
-.media-button.fullscreen > .hover {
-  background-image: -webkit-image-set(
-    url(../images/media/media_fullscreen_hover.png) 1x,
-    url(../images/media/2x/media_fullscreen_hover.png) 2x);
-}
-
-.media-button.fullscreen > .active {
-  background-image: -webkit-image-set(
-    url(../images/media/media_fullscreen_down.png) 1x,
-    url(../images/media/2x/media_fullscreen_down.png) 2x);
-}
-
-.media-button.fullscreen > .disabled {
-  background-image: -webkit-image-set(
-    url(../images/media/media_fullscreen_disabled.png) 1x,
-    url(../images/media/2x/media_fullscreen_disabled.png) 2x);
-}
-
 .playback-state-icon {
   -webkit-animation: none;
   background-color: #202020;
@@ -628,13 +451,13 @@
 .playback-state-icon[state='play'] {
   -webkit-animation: blowup 500ms;
   background-image: -webkit-image-set(
-    url(../images/media/media_play.png) 1x,
-    url(../images/media/2x/media_play.png) 2x);
+    url(../images/media/media_play_light.png) 1x,
+    url(../images/media/2x/media_play_light.png) 2x);
 }
 
 .playback-state-icon[state='pause'] {
   -webkit-animation: blowup 500ms;
   background-image: -webkit-image-set(
-    url(../images/media/media_pause.png) 1x,
-    url(../images/media/2x/media_pause.png) 2x);
+    url(../images/media/media_pause_light.png) 1x,
+    url(../images/media/2x/media_pause_light.png) 2x);
 }
diff --git a/ui/file_manager/video_player/images/media/2x/media_chromecast.png b/ui/file_manager/video_player/images/media/2x/media_chromecast.png
index 6cc70e8f..0cfc6b27 100644
--- a/ui/file_manager/video_player/images/media/2x/media_chromecast.png
+++ b/ui/file_manager/video_player/images/media/2x/media_chromecast.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_chromecast_casting.png b/ui/file_manager/video_player/images/media/2x/media_chromecast_casting.png
index 2367290..bdb44db 100644
--- a/ui/file_manager/video_player/images/media/2x/media_chromecast_casting.png
+++ b/ui/file_manager/video_player/images/media/2x/media_chromecast_casting.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_chromecast_casting_down.png b/ui/file_manager/video_player/images/media/2x/media_chromecast_casting_down.png
deleted file mode 100644
index e48f436..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_chromecast_casting_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_chromecast_casting_hover.png b/ui/file_manager/video_player/images/media/2x/media_chromecast_casting_hover.png
deleted file mode 100644
index 77258f2..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_chromecast_casting_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_chromecast_down.png b/ui/file_manager/video_player/images/media/2x/media_chromecast_down.png
deleted file mode 100644
index c10763c..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_chromecast_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_chromecast_hover.png b/ui/file_manager/video_player/images/media/2x/media_chromecast_hover.png
deleted file mode 100644
index f9bc4a2..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_chromecast_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_fullscreen.png b/ui/file_manager/video_player/images/media/2x/media_fullscreen.png
index 6a71907..59f1d77 100644
--- a/ui/file_manager/video_player/images/media/2x/media_fullscreen.png
+++ b/ui/file_manager/video_player/images/media/2x/media_fullscreen.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_fullscreen_disabled.png b/ui/file_manager/video_player/images/media/2x/media_fullscreen_disabled.png
deleted file mode 100644
index 96b3f63..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_fullscreen_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_fullscreen_down.png b/ui/file_manager/video_player/images/media/2x/media_fullscreen_down.png
deleted file mode 100644
index 7a6de1e..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_fullscreen_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_fullscreen_hover.png b/ui/file_manager/video_player/images/media/2x/media_fullscreen_hover.png
deleted file mode 100644
index 472e4451..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_fullscreen_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_loop.png b/ui/file_manager/video_player/images/media/2x/media_loop.png
deleted file mode 100644
index 6bea029..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_loop.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_loop_down.png b/ui/file_manager/video_player/images/media/2x/media_loop_down.png
deleted file mode 100644
index 0e4b6e2..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_loop_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_loop_hover.png b/ui/file_manager/video_player/images/media/2x/media_loop_hover.png
deleted file mode 100644
index b3a6c14..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_loop_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_pause.png b/ui/file_manager/video_player/images/media/2x/media_pause.png
index acebff9d..883ca6e 100644
--- a/ui/file_manager/video_player/images/media/2x/media_pause.png
+++ b/ui/file_manager/video_player/images/media/2x/media_pause.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_pause_down.png b/ui/file_manager/video_player/images/media/2x/media_pause_down.png
deleted file mode 100644
index 9caaf7a..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_pause_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_pause_hover.png b/ui/file_manager/video_player/images/media/2x/media_pause_hover.png
deleted file mode 100644
index beb86f2..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_pause_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_pause_light.png b/ui/file_manager/video_player/images/media/2x/media_pause_light.png
new file mode 100644
index 0000000..acebff9d
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/2x/media_pause_light.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_play.png b/ui/file_manager/video_player/images/media/2x/media_play.png
index 28e8a25c..d2413af 100644
--- a/ui/file_manager/video_player/images/media/2x/media_play.png
+++ b/ui/file_manager/video_player/images/media/2x/media_play.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_play_disabled.png b/ui/file_manager/video_player/images/media/2x/media_play_disabled.png
deleted file mode 100644
index 77ea7c0..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_play_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_play_down.png b/ui/file_manager/video_player/images/media/2x/media_play_down.png
deleted file mode 100644
index 7c687871..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_play_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_play_hover.png b/ui/file_manager/video_player/images/media/2x/media_play_hover.png
deleted file mode 100644
index 28ca18b..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_play_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_play_light.png b/ui/file_manager/video_player/images/media/2x/media_play_light.png
new file mode 100644
index 0000000..28e8a25c
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/2x/media_play_light.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_disabled.png b/ui/file_manager/video_player/images/media/2x/media_sound_disabled.png
deleted file mode 100644
index acbaa71..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_disabled_down.png b/ui/file_manager/video_player/images/media/2x/media_sound_disabled_down.png
deleted file mode 100644
index f594f47e..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_disabled_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_disabled_hover.png b/ui/file_manager/video_player/images/media/2x/media_sound_disabled_hover.png
deleted file mode 100644
index f4cc7b35..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_disabled_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_full.png b/ui/file_manager/video_player/images/media/2x/media_sound_full.png
deleted file mode 100644
index a093e9f6..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_full.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_full_disabled.png b/ui/file_manager/video_player/images/media/2x/media_sound_full_disabled.png
deleted file mode 100644
index 56635f1d..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_full_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_full_down.png b/ui/file_manager/video_player/images/media/2x/media_sound_full_down.png
deleted file mode 100644
index 7d2a239..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_full_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_full_hover.png b/ui/file_manager/video_player/images/media/2x/media_sound_full_hover.png
deleted file mode 100644
index f183edd7..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_full_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_level1.png b/ui/file_manager/video_player/images/media/2x/media_sound_level1.png
deleted file mode 100644
index 25904c0..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_level1.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_level1_down.png b/ui/file_manager/video_player/images/media/2x/media_sound_level1_down.png
deleted file mode 100644
index 0ba2886..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_level1_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_level1_hover.png b/ui/file_manager/video_player/images/media/2x/media_sound_level1_hover.png
deleted file mode 100644
index be56fc1..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_level1_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_level2.png b/ui/file_manager/video_player/images/media/2x/media_sound_level2.png
deleted file mode 100644
index 24f7ea8..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_level2.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_level2_down.png b/ui/file_manager/video_player/images/media/2x/media_sound_level2_down.png
deleted file mode 100644
index 34fce54..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_level2_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_sound_level2_hover.png b/ui/file_manager/video_player/images/media/2x/media_sound_level2_hover.png
deleted file mode 100644
index 2e3f2e80cd..0000000
--- a/ui/file_manager/video_player/images/media/2x/media_sound_level2_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_volume.png b/ui/file_manager/video_player/images/media/2x/media_volume.png
new file mode 100644
index 0000000..27edb81
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/2x/media_volume.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/2x/media_volume_mute.png b/ui/file_manager/video_player/images/media/2x/media_volume_mute.png
new file mode 100644
index 0000000..211d1c9
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/2x/media_volume_mute.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_chromecast.png b/ui/file_manager/video_player/images/media/media_chromecast.png
index 4fa924ef..c6b57dc 100644
--- a/ui/file_manager/video_player/images/media/media_chromecast.png
+++ b/ui/file_manager/video_player/images/media/media_chromecast.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_chromecast_casting.png b/ui/file_manager/video_player/images/media/media_chromecast_casting.png
index d59cb8c..c3555a1 100644
--- a/ui/file_manager/video_player/images/media/media_chromecast_casting.png
+++ b/ui/file_manager/video_player/images/media/media_chromecast_casting.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_chromecast_casting_down.png b/ui/file_manager/video_player/images/media/media_chromecast_casting_down.png
deleted file mode 100644
index 4190546..0000000
--- a/ui/file_manager/video_player/images/media/media_chromecast_casting_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_chromecast_casting_hover.png b/ui/file_manager/video_player/images/media/media_chromecast_casting_hover.png
deleted file mode 100644
index fc624ae..0000000
--- a/ui/file_manager/video_player/images/media/media_chromecast_casting_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_chromecast_down.png b/ui/file_manager/video_player/images/media/media_chromecast_down.png
deleted file mode 100644
index 0378331..0000000
--- a/ui/file_manager/video_player/images/media/media_chromecast_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_chromecast_hover.png b/ui/file_manager/video_player/images/media/media_chromecast_hover.png
deleted file mode 100644
index ffea05b..0000000
--- a/ui/file_manager/video_player/images/media/media_chromecast_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_fullscreen.png b/ui/file_manager/video_player/images/media/media_fullscreen.png
index 83f2be4f..ec987d4 100644
--- a/ui/file_manager/video_player/images/media/media_fullscreen.png
+++ b/ui/file_manager/video_player/images/media/media_fullscreen.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_fullscreen_disabled.png b/ui/file_manager/video_player/images/media/media_fullscreen_disabled.png
deleted file mode 100644
index bf743908..0000000
--- a/ui/file_manager/video_player/images/media/media_fullscreen_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_fullscreen_down.png b/ui/file_manager/video_player/images/media/media_fullscreen_down.png
deleted file mode 100644
index a6d225dc..0000000
--- a/ui/file_manager/video_player/images/media/media_fullscreen_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_fullscreen_hover.png b/ui/file_manager/video_player/images/media/media_fullscreen_hover.png
deleted file mode 100644
index ca1488b..0000000
--- a/ui/file_manager/video_player/images/media/media_fullscreen_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_loop.png b/ui/file_manager/video_player/images/media/media_loop.png
deleted file mode 100644
index f3e35dd9..0000000
--- a/ui/file_manager/video_player/images/media/media_loop.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_loop_down.png b/ui/file_manager/video_player/images/media/media_loop_down.png
deleted file mode 100644
index dda8af5..0000000
--- a/ui/file_manager/video_player/images/media/media_loop_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_loop_hover.png b/ui/file_manager/video_player/images/media/media_loop_hover.png
deleted file mode 100644
index a0ed21f..0000000
--- a/ui/file_manager/video_player/images/media/media_loop_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_pause.png b/ui/file_manager/video_player/images/media/media_pause.png
index 0a304e4..5225482 100644
--- a/ui/file_manager/video_player/images/media/media_pause.png
+++ b/ui/file_manager/video_player/images/media/media_pause.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_pause_down.png b/ui/file_manager/video_player/images/media/media_pause_down.png
deleted file mode 100644
index 6e65195..0000000
--- a/ui/file_manager/video_player/images/media/media_pause_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_pause_hover.png b/ui/file_manager/video_player/images/media/media_pause_hover.png
deleted file mode 100644
index 993ee50..0000000
--- a/ui/file_manager/video_player/images/media/media_pause_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_pause_light.png b/ui/file_manager/video_player/images/media/media_pause_light.png
new file mode 100644
index 0000000..0a304e4
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/media_pause_light.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_play.png b/ui/file_manager/video_player/images/media/media_play.png
index 47bcdc29..1174fd6 100644
--- a/ui/file_manager/video_player/images/media/media_play.png
+++ b/ui/file_manager/video_player/images/media/media_play.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_play_disabled.png b/ui/file_manager/video_player/images/media/media_play_disabled.png
deleted file mode 100644
index 6e96d4c..0000000
--- a/ui/file_manager/video_player/images/media/media_play_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_play_down.png b/ui/file_manager/video_player/images/media/media_play_down.png
deleted file mode 100644
index 1759ec39..0000000
--- a/ui/file_manager/video_player/images/media/media_play_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_play_hover.png b/ui/file_manager/video_player/images/media/media_play_hover.png
deleted file mode 100644
index 3942d46..0000000
--- a/ui/file_manager/video_player/images/media/media_play_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_play_light.png b/ui/file_manager/video_player/images/media/media_play_light.png
new file mode 100644
index 0000000..47bcdc29
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/media_play_light.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_disabled.png b/ui/file_manager/video_player/images/media/media_sound_disabled.png
deleted file mode 100644
index 42126de9..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_disabled_down.png b/ui/file_manager/video_player/images/media/media_sound_disabled_down.png
deleted file mode 100644
index 2b494b9..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_disabled_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_disabled_hover.png b/ui/file_manager/video_player/images/media/media_sound_disabled_hover.png
deleted file mode 100644
index 5040f80..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_disabled_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_full.png b/ui/file_manager/video_player/images/media/media_sound_full.png
deleted file mode 100644
index 4a03402..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_full.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_full_disabled.png b/ui/file_manager/video_player/images/media/media_sound_full_disabled.png
deleted file mode 100644
index cef4bc4..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_full_disabled.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_full_down.png b/ui/file_manager/video_player/images/media/media_sound_full_down.png
deleted file mode 100644
index 55d77e4..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_full_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_full_hover.png b/ui/file_manager/video_player/images/media/media_sound_full_hover.png
deleted file mode 100644
index 881e8430..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_full_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_level1.png b/ui/file_manager/video_player/images/media/media_sound_level1.png
deleted file mode 100644
index 2f7ceea3..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_level1.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_level1_down.png b/ui/file_manager/video_player/images/media/media_sound_level1_down.png
deleted file mode 100644
index 9777c9b5..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_level1_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_level1_hover.png b/ui/file_manager/video_player/images/media/media_sound_level1_hover.png
deleted file mode 100644
index fdf3bc13..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_level1_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_level2.png b/ui/file_manager/video_player/images/media/media_sound_level2.png
deleted file mode 100644
index 9379a03..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_level2.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_level2_down.png b/ui/file_manager/video_player/images/media/media_sound_level2_down.png
deleted file mode 100644
index 422b435..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_level2_down.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_sound_level2_hover.png b/ui/file_manager/video_player/images/media/media_sound_level2_hover.png
deleted file mode 100644
index 8bf6157..0000000
--- a/ui/file_manager/video_player/images/media/media_sound_level2_hover.png
+++ /dev/null
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_volume.png b/ui/file_manager/video_player/images/media/media_volume.png
new file mode 100644
index 0000000..aa716ff
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/media_volume.png
Binary files differ
diff --git a/ui/file_manager/video_player/images/media/media_volume_mute.png b/ui/file_manager/video_player/images/media/media_volume_mute.png
new file mode 100644
index 0000000..72db204a3
--- /dev/null
+++ b/ui/file_manager/video_player/images/media/media_volume_mute.png
Binary files differ
diff --git a/ui/file_manager/video_player/js/media_controls.js b/ui/file_manager/video_player/js/media_controls.js
index 672e662..a3b6e91 100644
--- a/ui/file_manager/video_player/js/media_controls.js
+++ b/ui/file_manager/video_player/js/media_controls.js
@@ -142,15 +142,6 @@
   var button = this.createControl(className, opt_parent);
   button.classList.add('media-button');
 
-  var stateTypes = Object.keys(MediaControls.ButtonStateType);
-  for (var state = 0; state != opt_numStates; state++) {
-    var stateClass = MediaControls.ButtonStateType[stateTypes[state]];
-    this.createControl('normal ' + stateClass, button);
-    this.createControl('hover ' + stateClass, button);
-    this.createControl('active ' + stateClass, button);
-  }
-  this.createControl('disabled', button);
-
   button.setAttribute('state', MediaControls.ButtonStateType.DEFAULT);
 
   if (opt_handler)
@@ -1279,11 +1270,6 @@
   // This is easier than adding margins to this.container_.clientWidth.
   var width = this.container_.parentNode.clientWidth;
 
-  // Set the margin to 5px for width >= 400, 0px for width < 160,
-  // interpolate linearly in between.
-  this.container_.style.margin =
-      Math.ceil((Math.max(160, Math.min(width, 400)) - 160) / 48) + 'px';
-
   var hideBelow = function(selector, limit) {
     this.container_.querySelector(selector).style.display =
         width < limit ? 'none' : '-webkit-box';
diff --git a/ui/views/controls/button/label_button.cc b/ui/views/controls/button/label_button.cc
index 33ec9a0..2f85fb6 100644
--- a/ui/views/controls/button/label_button.cc
+++ b/ui/views/controls/button/label_button.cc
@@ -367,24 +367,6 @@
   SchedulePaint();
 }
 
-void LabelButton::OnNativeThemeChanged(const ui::NativeTheme* theme) {
-  ResetColorsFromNativeTheme();
-  UpdateThemedBorder();
-  // Invalidate the layout to pickup the new insets from the border.
-  InvalidateLayout();
-}
-
-void LabelButton::StateChanged() {
-  const gfx::Size previous_image_size(image_->GetPreferredSize());
-  UpdateImage();
-  const SkColor color = button_state_colors_[state()];
-  if (state() != STATE_DISABLED && label_->enabled_color() != color)
-    label_->SetEnabledColor(color);
-  label_->SetEnabled(state() != STATE_DISABLED);
-  if (image_->GetPreferredSize() != previous_image_size)
-    Layout();
-}
-
 void LabelButton::GetExtraParams(ui::NativeTheme::ExtraParams* params) const {
   params->button.checked = false;
   params->button.indeterminate = false;
@@ -458,11 +440,29 @@
   border_is_themed_border_ = true;
 }
 
+void LabelButton::StateChanged() {
+  const gfx::Size previous_image_size(image_->GetPreferredSize());
+  UpdateImage();
+  const SkColor color = button_state_colors_[state()];
+  if (state() != STATE_DISABLED && label_->enabled_color() != color)
+    label_->SetEnabledColor(color);
+  label_->SetEnabled(state() != STATE_DISABLED);
+  if (image_->GetPreferredSize() != previous_image_size)
+    Layout();
+}
+
 void LabelButton::ChildPreferredSizeChanged(View* child) {
   ResetCachedPreferredSize();
   PreferredSizeChanged();
 }
 
+void LabelButton::OnNativeThemeChanged(const ui::NativeTheme* theme) {
+  ResetColorsFromNativeTheme();
+  UpdateThemedBorder();
+  // Invalidate the layout to pickup the new insets from the border.
+  InvalidateLayout();
+}
+
 ui::NativeTheme::Part LabelButton::GetThemePart() const {
   return ui::NativeTheme::kPushButton;
 }
diff --git a/ui/views/controls/button/label_button.h b/ui/views/controls/button/label_button.h
index 77764243..1059eff 100644
--- a/ui/views/controls/button/label_button.h
+++ b/ui/views/controls/button/label_button.h
@@ -111,9 +111,6 @@
   void OnBlur() override;
   void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
 
-  // CustomButton:
-  void StateChanged() override;
-
   // Fill |params| with information about the button.
   virtual void GetExtraParams(ui::NativeTheme::ExtraParams* params) const;
 
@@ -137,6 +134,9 @@
   FRIEND_TEST_ALL_PREFIXES(LabelButtonTest, LabelAndImage);
   FRIEND_TEST_ALL_PREFIXES(LabelButtonTest, FontList);
 
+  // CustomButton:
+  void StateChanged() override;
+
   // View:
   void ChildPreferredSizeChanged(View* child) override;
 
diff --git a/ui/views/controls/button/menu_button.cc b/ui/views/controls/button/menu_button.cc
index d3bdea1..d9271f8 100644
--- a/ui/views/controls/button/menu_button.cc
+++ b/ui/views/controls/button/menu_button.cc
@@ -321,8 +321,6 @@
       should_disable_after_press_ = false;
     else if (state() == STATE_DISABLED)
       should_disable_after_press_ = true;
-  } else {
-    LabelButton::StateChanged();
   }
 }
 
diff --git a/ui/webui/resources/html/i18n_behavior.html b/ui/webui/resources/html/i18n_behavior.html
new file mode 100644
index 0000000..6959c8d
--- /dev/null
+++ b/ui/webui/resources/html/i18n_behavior.html
@@ -0,0 +1 @@
+<script src="chrome://resources/js/i18n_behavior.js"></script>
diff --git a/chrome/browser/resources/settings/i18n_behavior/i18n_behavior.js b/ui/webui/resources/js/i18n_behavior.js
similarity index 94%
rename from chrome/browser/resources/settings/i18n_behavior/i18n_behavior.js
rename to ui/webui/resources/js/i18n_behavior.js
index f499e83..d43912b 100644
--- a/chrome/browser/resources/settings/i18n_behavior/i18n_behavior.js
+++ b/ui/webui/resources/js/i18n_behavior.js
@@ -12,7 +12,7 @@
  *     I18nBehavior,
  *   ],
  *
- * @group Chrome Settings Elements
+ * @group Chrome UI Behavior
  */
 
 var I18nBehavior = {
diff --git a/ui/webui/resources/webui_resources.grd b/ui/webui/resources/webui_resources.grd
index fa62cbd..8abacac 100644
--- a/ui/webui/resources/webui_resources.grd
+++ b/ui/webui/resources/webui_resources.grd
@@ -300,6 +300,8 @@
                  file="html/load_time_data.html" type="chrome_html" />
       <structure name="IDR_WEBUI_HTML_POLYMER_CONFIG"
                  file="html/polymer_config.html" type="chrome_html" />
+      <structure name="IDR_WEBUI_HTML_I18N_BEHAVIOR"
+                 file="html/i18n_behavior.html" type="chrome_html" />
       <structure name="IDR_WEBUI_HTML_UTIL"
                  file="html/util.html" type="chrome_html" />
 
@@ -425,6 +427,8 @@
                  file="js/parse_html_subset.js" type="chrome_html" />
       <structure name="IDR_WEBUI_JS_POLYMER_CONFIG"
                  file="js/polymer_config.js" type="chrome_html" />
+      <structure name="IDR_WEBUI_JS_I18N_BEHAVIOR"
+                 file="js/i18n_behavior.js" type="chrome_html" />
       <structure name="IDR_WEBUI_JS_UTIL"
                  file="js/util.js" type="chrome_html" flattenhtml="true" />
       <structure name="IDR_WEBUI_JS_WEBUI_RESOURCE_TEST"