diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php b/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php
index 6a1c17a1b083d075508d84434dd0b2df9ab73740..0b9321033825562391fe32f168a6becd278ceacb 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php
@@ -15,7 +15,7 @@ class Grid extends \Magento\Backup\Controller\Adminhtml\Index
      */
     public function execute()
     {
-        $this->renderLayot(false);
+        $this->_view->loadLayout();
         $this->_view->renderLayout();
     }
 }
diff --git a/app/code/Magento/Catalog/Model/Layout/DepersonalizePlugin.php b/app/code/Magento/Catalog/Model/Layout/DepersonalizePlugin.php
index 61ec24047fa6a6c5c756fd903c1fba0427b9d549..faacce917f4d3968a4c095f8358f8b759a3ff43c 100644
--- a/app/code/Magento/Catalog/Model/Layout/DepersonalizePlugin.php
+++ b/app/code/Magento/Catalog/Model/Layout/DepersonalizePlugin.php
@@ -7,25 +7,17 @@
  */
 namespace Magento\Catalog\Model\Layout;
 
+use Magento\PageCache\Model\DepersonalizeChecker;
+
 /**
  * Class DepersonalizePlugin
  */
 class DepersonalizePlugin
 {
     /**
-     * @var \Magento\Framework\App\RequestInterface
-     */
-    protected $request;
-
-    /**
-     * @var \Magento\Framework\Module\Manager
-     */
-    protected $moduleManager;
-
-    /**
-     * @var \Magento\PageCache\Model\Config
+     * @var DepersonalizeChecker
      */
-    protected $cacheConfig;
+    protected $depersonalizeChecker;
 
     /**
      * Catalog session
@@ -35,21 +27,15 @@ class DepersonalizePlugin
     protected $catalogSession;
 
     /**
+     * @param DepersonalizeChecker $depersonalizeChecker
      * @param \Magento\Catalog\Model\Session $catalogSession
-     * @param \Magento\Framework\App\RequestInterface $request
-     * @param \Magento\Framework\Module\Manager $moduleManager
-     * @param \Magento\PageCache\Model\Config $cacheConfig
      */
     public function __construct(
-        \Magento\Catalog\Model\Session $catalogSession,
-        \Magento\Framework\Module\Manager $moduleManager,
-        \Magento\Framework\App\RequestInterface $request,
-        \Magento\PageCache\Model\Config $cacheConfig
+        DepersonalizeChecker $depersonalizeChecker,
+        \Magento\Catalog\Model\Session $catalogSession
     ) {
         $this->catalogSession = $catalogSession;
-        $this->request = $request;
-        $this->moduleManager = $moduleManager;
-        $this->cacheConfig = $cacheConfig;
+        $this->depersonalizeChecker = $depersonalizeChecker;
     }
 
     /**
@@ -61,11 +47,7 @@ class DepersonalizePlugin
      */
     public function afterGenerateXml(\Magento\Framework\View\LayoutInterface $subject, $result)
     {
-        if ($this->moduleManager->isEnabled('Magento_PageCache')
-            && $this->cacheConfig->isEnabled()
-            && !$this->request->isAjax()
-            && $subject->isCacheable()
-        ) {
+        if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
             $this->catalogSession->clearStorage();
         }
         return $result;
diff --git a/app/code/Magento/Checkout/Model/Layout/DepersonalizePlugin.php b/app/code/Magento/Checkout/Model/Layout/DepersonalizePlugin.php
index d45d8fbc78d64382d284e3fd5c0d0262412617e2..8726d579e4fea675a73466ab45dc4e4734346066 100644
--- a/app/code/Magento/Checkout/Model/Layout/DepersonalizePlugin.php
+++ b/app/code/Magento/Checkout/Model/Layout/DepersonalizePlugin.php
@@ -3,50 +3,35 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
 namespace Magento\Checkout\Model\Layout;
 
+use Magento\PageCache\Model\DepersonalizeChecker;
+
 /**
  * Class DepersonalizePlugin
  */
 class DepersonalizePlugin
 {
     /**
-     * @var \Magento\Checkout\Model\Session
-     */
-    protected $checkoutSession;
-
-    /**
-     * @var \Magento\Framework\Module\Manager
-     */
-    protected $moduleManager;
-
-    /**
-     * @var \Magento\Framework\App\RequestInterface
+     * @var DepersonalizeChecker
      */
-    protected $request;
+    protected $depersonalizeChecker;
 
     /**
-     * @var \Magento\PageCache\Model\Config
+     * @var \Magento\Checkout\Model\Session
      */
-    protected $cacheConfig;
+    protected $checkoutSession;
 
     /**
+     * @param DepersonalizeChecker $depersonalizeChecker
      * @param \Magento\Checkout\Model\Session $checkoutSession
-     * @param \Magento\Framework\Module\Manager $moduleManager
-     * @param \Magento\Framework\App\RequestInterface $request
-     * @param \Magento\PageCache\Model\Config $cacheConfig
      */
     public function __construct(
-        \Magento\Checkout\Model\Session $checkoutSession,
-        \Magento\Framework\Module\Manager $moduleManager,
-        \Magento\Framework\App\RequestInterface $request,
-        \Magento\PageCache\Model\Config $cacheConfig
+        DepersonalizeChecker $depersonalizeChecker,
+        \Magento\Checkout\Model\Session $checkoutSession
     ) {
         $this->checkoutSession = $checkoutSession;
-        $this->moduleManager = $moduleManager;
-        $this->request = $request;
-        $this->cacheConfig = $cacheConfig;
+        $this->depersonalizeChecker = $depersonalizeChecker;
     }
 
     /**
@@ -58,11 +43,7 @@ class DepersonalizePlugin
      */
     public function afterGenerateXml(\Magento\Framework\View\LayoutInterface $subject, $result)
     {
-        if ($this->moduleManager->isEnabled('Magento_PageCache')
-            && $this->cacheConfig->isEnabled()
-            && !$this->request->isAjax()
-            && $subject->isCacheable()
-        ) {
+        if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
             $this->checkoutSession->clearStorage();
         }
         return $result;
diff --git a/app/code/Magento/Customer/Model/Layout/DepersonalizePlugin.php b/app/code/Magento/Customer/Model/Layout/DepersonalizePlugin.php
index c355bed23826e94795338b8ec53c10ea99532231..05ca2de151976c86ce56c93686b13cddc9594304 100644
--- a/app/code/Magento/Customer/Model/Layout/DepersonalizePlugin.php
+++ b/app/code/Magento/Customer/Model/Layout/DepersonalizePlugin.php
@@ -7,11 +7,18 @@
  */
 namespace Magento\Customer\Model\Layout;
 
+use Magento\PageCache\Model\DepersonalizeChecker;
+
 /**
  * Class DepersonalizePlugin
  */
 class DepersonalizePlugin
 {
+    /**
+     * @var DepersonalizeChecker
+     */
+    protected $depersonalizeChecker;
+
     /**
      * @var \Magento\Framework\Session\SessionManagerInterface
      */
@@ -27,16 +34,6 @@ class DepersonalizePlugin
      */
     protected $customerFactory;
 
-    /**
-     * @var \Magento\Framework\App\RequestInterface
-     */
-    protected $request;
-
-    /**
-     * @var \Magento\Framework\Module\Manager
-     */
-    protected $moduleManager;
-
     /**
      * @var \Magento\Customer\Model\Visitor
      */
@@ -53,35 +50,24 @@ class DepersonalizePlugin
     protected $formKey;
 
     /**
-     * @var \Magento\PageCache\Model\Config
-     */
-    protected $cacheConfig;
-
-    /**
+     * @param DepersonalizeChecker $depersonalizeChecker
      * @param \Magento\Framework\Session\SessionManagerInterface $session
      * @param \Magento\Customer\Model\Session $customerSession
      * @param \Magento\Customer\Model\CustomerFactory $customerFactory
-     * @param \Magento\Framework\App\RequestInterface $request
-     * @param \Magento\Framework\Module\Manager $moduleManager
      * @param \Magento\Customer\Model\Visitor $visitor
-     * @param \Magento\PageCache\Model\Config $cacheConfig
      */
     public function __construct(
+        DepersonalizeChecker $depersonalizeChecker,
         \Magento\Framework\Session\SessionManagerInterface $session,
         \Magento\Customer\Model\Session $customerSession,
         \Magento\Customer\Model\CustomerFactory $customerFactory,
-        \Magento\Framework\App\RequestInterface $request,
-        \Magento\Framework\Module\Manager $moduleManager,
-        \Magento\Customer\Model\Visitor $visitor,
-        \Magento\PageCache\Model\Config $cacheConfig
+        \Magento\Customer\Model\Visitor $visitor
     ) {
         $this->session = $session;
         $this->customerSession = $customerSession;
         $this->customerFactory = $customerFactory;
-        $this->request = $request;
-        $this->moduleManager = $moduleManager;
         $this->visitor = $visitor;
-        $this->cacheConfig = $cacheConfig;
+        $this->depersonalizeChecker = $depersonalizeChecker;
     }
 
     /**
@@ -92,10 +78,7 @@ class DepersonalizePlugin
      */
     public function beforeGenerateXml(\Magento\Framework\View\LayoutInterface $subject)
     {
-        if ($this->moduleManager->isEnabled(
-            'Magento_PageCache'
-        ) && $this->cacheConfig->isEnabled() && !$this->request->isAjax() && $subject->isCacheable()
-        ) {
+        if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
             $this->customerGroupId = $this->customerSession->getCustomerGroupId();
             $this->formKey = $this->session->getData(\Magento\Framework\Data\Form\FormKey::FORM_KEY);
         }
@@ -111,11 +94,7 @@ class DepersonalizePlugin
      */
     public function afterGenerateXml(\Magento\Framework\View\LayoutInterface $subject, $result)
     {
-        if ($this->moduleManager->isEnabled('Magento_PageCache')
-            && $this->cacheConfig->isEnabled()
-            && !$this->request->isAjax()
-            && $subject->isCacheable()
-        ) {
+        if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
             $this->visitor->setSkipRequestLogging(true);
             $this->visitor->unsetData();
             $this->session->clearStorage();
diff --git a/app/code/Magento/PageCache/Model/DepersonalizeChecker.php b/app/code/Magento/PageCache/Model/DepersonalizeChecker.php
new file mode 100644
index 0000000000000000000000000000000000000000..5837cccbc7d0924daf7185f0d428d0f0f6eabf2e
--- /dev/null
+++ b/app/code/Magento/PageCache/Model/DepersonalizeChecker.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\PageCache\Model;
+
+/**
+ * Checks if session should be depersonalized in Depersonalize plugin
+ */
+class DepersonalizeChecker
+{
+    /**
+     * Request
+     *
+     * @var \Magento\Framework\App\RequestInterface
+     */
+    private $request;
+
+    /**
+     * Module manager
+     *
+     * @var \Magento\Framework\Module\Manager
+     */
+    private $moduleManager;
+
+    /**
+     * Cache config
+     *
+     * @var Config
+     */
+    private $cacheConfig;
+
+    /**
+     * @param \Magento\Framework\App\RequestInterface $request
+     * @param \Magento\Framework\Module\Manager $moduleManager
+     * @param Config $cacheConfig
+     */
+    public function __construct(
+        \Magento\Framework\App\RequestInterface $request,
+        \Magento\Framework\Module\Manager $moduleManager,
+        Config $cacheConfig
+    ) {
+        $this->request = $request;
+        $this->moduleManager = $moduleManager;
+        $this->cacheConfig = $cacheConfig;
+    }
+
+    /**
+     * Check if depersonalize or not
+     *
+     * @param \Magento\Framework\View\LayoutInterface $subject
+     * @return bool
+     */
+    public function checkIfDepersonalize(\Magento\Framework\View\LayoutInterface $subject)
+    {
+        return ($this->moduleManager->isEnabled('Magento_PageCache')
+            && $this->cacheConfig->isEnabled()
+            && !$this->request->isAjax()
+            && ($this->request->isGet() || $this->request->isHead())
+            && $subject->isCacheable());
+    }
+}
diff --git a/app/code/Magento/PageCache/Model/Layout/DepersonalizePlugin.php b/app/code/Magento/PageCache/Model/Layout/DepersonalizePlugin.php
index 79b5dcc9f84c698603d7e9885b0acbae88543669..930ceeb6bdc0c3e764d5c16d64375cf90c693f84 100644
--- a/app/code/Magento/PageCache/Model/Layout/DepersonalizePlugin.php
+++ b/app/code/Magento/PageCache/Model/Layout/DepersonalizePlugin.php
@@ -3,57 +3,42 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
 namespace Magento\PageCache\Model\Layout;
 
+use Magento\PageCache\Model\DepersonalizeChecker;
+
 /**
  * Class DepersonalizePlugin
  */
 class DepersonalizePlugin
 {
     /**
-     * @var \Magento\Framework\App\RequestInterface
-     */
-    protected $request;
-
-    /**
-     * @var \Magento\Framework\Module\Manager
+     * @var DepersonalizeChecker
      */
-    protected $moduleManager;
+    protected $depersonalizeChecker;
 
     /**
      * @var \Magento\Framework\Event\Manager
      */
     protected $eventManager;
 
-    /**
-     * @var \Magento\PageCache\Model\Config
-     */
-    protected $cacheConfig;
-
     /**
      * @var \Magento\Framework\Message\Session
      */
     protected $messageSession;
 
     /**
-     * @param \Magento\Framework\App\RequestInterface $request
-     * @param \Magento\Framework\Module\Manager $moduleManager
+     * @param DepersonalizeChecker $depersonalizeChecker
      * @param \Magento\Framework\Event\Manager $eventManager
-     * @param \Magento\PageCache\Model\Config $cacheConfig
      * @param \Magento\Framework\Message\Session $messageSession
      */
     public function __construct(
-        \Magento\Framework\App\RequestInterface $request,
-        \Magento\Framework\Module\Manager $moduleManager,
+        DepersonalizeChecker $depersonalizeChecker,
         \Magento\Framework\Event\Manager $eventManager,
-        \Magento\PageCache\Model\Config $cacheConfig,
         \Magento\Framework\Message\Session $messageSession
     ) {
-        $this->request = $request;
-        $this->moduleManager = $moduleManager;
+        $this->depersonalizeChecker = $depersonalizeChecker;
         $this->eventManager = $eventManager;
-        $this->cacheConfig = $cacheConfig;
         $this->messageSession = $messageSession;
     }
 
@@ -66,11 +51,7 @@ class DepersonalizePlugin
      */
     public function afterGenerateXml(\Magento\Framework\View\LayoutInterface $subject, $result)
     {
-        if ($this->moduleManager->isEnabled('Magento_PageCache')
-            && $this->cacheConfig->isEnabled()
-            && !$this->request->isAjax()
-            && $subject->isCacheable()
-        ) {
+        if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
             $this->eventManager->dispatch('depersonalize_clear_session');
             session_write_close();
             $this->messageSession->clearStorage();
diff --git a/app/code/Magento/PageCache/Model/Observer/InvalidateCacheIfChanged.php b/app/code/Magento/PageCache/Model/Observer/InvalidateCacheIfChanged.php
new file mode 100644
index 0000000000000000000000000000000000000000..da5f388c6c79a899e389b191951c3866d6c5bbde
--- /dev/null
+++ b/app/code/Magento/PageCache/Model/Observer/InvalidateCacheIfChanged.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\PageCache\Model\Observer;
+
+/**
+ * An observer to invalidate full page cache when the content given is changed
+ */
+class InvalidateCacheIfChanged
+{
+    /**
+     * @var \Magento\Framework\App\Cache\TypeListInterface
+     */
+    protected $typeList;
+
+    /**
+     * Application config object
+     *
+     * @var \Magento\PageCache\Model\Config
+     */
+    protected $config;
+
+    /**
+     * @param \Magento\PageCache\Model\Config $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $typeList
+     */
+    public function __construct(
+        \Magento\PageCache\Model\Config $config,
+        \Magento\Framework\App\Cache\TypeListInterface $typeList
+    ) {
+        $this->config = $config;
+        $this->typeList = $typeList;
+    }
+
+    /**
+     * Invalidate full page cache if content is changed
+     *
+     * @param \Magento\Framework\Event\Observer $observer
+     * @return void
+     */
+    public function execute(\Magento\Framework\Event\Observer $observer)
+    {
+        if ($this->config->isEnabled()) {
+            $object = $observer->getEvent()->getObject();
+            if ($object instanceof \Magento\Framework\Object\IdentityInterface) {
+                if ($object->getIdentities()) {
+                    $this->typeList->invalidate('full_page');
+                }
+            }
+        }
+    }
+}
diff --git a/app/code/Magento/PageCache/etc/events.xml b/app/code/Magento/PageCache/etc/events.xml
index 3be6c75f94f9b4e508ea31bfe9d1cfa78e7d5bf1..e368daf233a14f993694a1f7613f85ffb840c471 100644
--- a/app/code/Magento/PageCache/etc/events.xml
+++ b/app/code/Magento/PageCache/etc/events.xml
@@ -13,7 +13,7 @@
         <observer name="invalidate_builtin" instance="Magento\PageCache\Model\Observer\FlushCacheByTags" method="execute" />
     </event>
     <event name="clean_cache_after_reindex">
-        <observer name="reindex_cache_flush" instance="Magento\PageCache\Model\Observer\InvalidateCache" method="execute" />
+        <observer name="reindex_cache_flush" instance="Magento\PageCache\Model\Observer\InvalidateCacheIfChanged" method="execute" />
     </event>
     <event name="adminhtml_cache_flush_system">
         <observer name="flush_system_pagecache" instance="Magento\PageCache\Model\Observer\FlushAllCache" method="execute" />
diff --git a/app/code/Magento/Persistent/Model/Layout/DepersonalizePlugin.php b/app/code/Magento/Persistent/Model/Layout/DepersonalizePlugin.php
index 850e262479daa1a5889b5144d87f69a6b617472d..b73ccc8b2275c669958bf5d2fd5cabde74b3b802 100644
--- a/app/code/Magento/Persistent/Model/Layout/DepersonalizePlugin.php
+++ b/app/code/Magento/Persistent/Model/Layout/DepersonalizePlugin.php
@@ -5,49 +5,35 @@
  */
 namespace Magento\Persistent\Model\Layout;
 
+use Magento\PageCache\Model\DepersonalizeChecker;
+
 /**
  * Class DepersonalizePlugin
  */
 class DepersonalizePlugin
 {
     /**
-     * @var \Magento\Persistent\Model\Session
-     */
-    protected $persistentSession;
-
-    /**
-     * @var \Magento\Framework\App\RequestInterface
+     * @var DepersonalizeChecker
      */
-    protected $request;
+    protected $depersonalizeChecker;
 
     /**
-     * @var \Magento\Framework\Module\Manager
-     */
-    protected $moduleManager;
-
-    /**
-     * @var \Magento\PageCache\Model\Config
+     * @var \Magento\Persistent\Model\Session
      */
-    protected $cacheConfig;
+    protected $persistentSession;
 
     /**
      * Constructor
      *
+     * @param DepersonalizeChecker $depersonalizeChecker
      * @param \Magento\Persistent\Model\Session $persistentSession
-     * @param \Magento\Framework\App\RequestInterface $request
-     * @param \Magento\Framework\Module\Manager $moduleManager
-     * @param \Magento\PageCache\Model\Config $cacheConfig
      */
     public function __construct(
-        \Magento\Persistent\Model\Session $persistentSession,
-        \Magento\Framework\App\RequestInterface $request,
-        \Magento\Framework\Module\Manager $moduleManager,
-        \Magento\PageCache\Model\Config $cacheConfig
+        DepersonalizeChecker $depersonalizeChecker,
+        \Magento\Persistent\Model\Session $persistentSession
     ) {
         $this->persistentSession = $persistentSession;
-        $this->request = $request;
-        $this->moduleManager = $moduleManager;
-        $this->cacheConfig = $cacheConfig;
+        $this->depersonalizeChecker = $depersonalizeChecker;
     }
 
     /**
@@ -61,11 +47,7 @@ class DepersonalizePlugin
         \Magento\Framework\View\LayoutInterface $subject,
         \Magento\Framework\View\LayoutInterface $result
     ) {
-        if ($this->moduleManager->isEnabled('Magento_PageCache')
-            && $this->cacheConfig->isEnabled()
-            && !$this->request->isAjax()
-            && $subject->isCacheable()
-        ) {
+        if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
             $this->persistentSession->setCustomerId(null);
         }
 
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Model/Layout/DepersonalizePluginTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Model/Layout/DepersonalizePluginTest.php
index e3785dc0597438b0d723a5cfe4ffe143a504d6c5..ab1f05a08b4c7a680709ac43dc0c50d5a2ae490c 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Model/Layout/DepersonalizePluginTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Model/Layout/DepersonalizePluginTest.php
@@ -17,30 +17,15 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
      */
     protected $plugin;
 
-    /**
-     * @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $layoutMock;
-
     /**
      * @var \Magento\Catalog\Model\Session|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $catalogSessionMock;
 
     /**
-     * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $requestMock;
-
-    /**
-     * @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $moduleManagerMock;
-
-    /**
-     * @var \Magento\PageCache\Model\Config|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $cacheConfigMock;
+    protected $depersonalizeCheckerMock;
 
     /**
      * @var \Magento\Framework\View\Layout|\PHPUnit_Framework_MockObject_MockObject
@@ -56,82 +41,33 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->requestMock = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
-        $this->moduleManagerMock = $this->getMock('Magento\Framework\Module\Manager', [], [], '', false);
-        $this->cacheConfigMock = $this->getMock('Magento\PageCache\Model\Config', [], [], '', false);
         $this->resultLayout = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
+        $this->depersonalizeCheckerMock = $this->getMock(
+            'Magento\PageCache\Model\DepersonalizeChecker',
+            [],
+            [],
+            '',
+            false
+        );
 
-        $this->plugin = (new ObjectManager($this))->getObject('Magento\Catalog\Model\Layout\DepersonalizePlugin', [
-            'catalogSession' => $this->catalogSessionMock,
-            'moduleManager' => $this->moduleManagerMock,
-            'request' => $this->requestMock,
-            'cacheConfig' => $this->cacheConfigMock
-        ]);
+        $this->plugin = (new ObjectManager($this))->getObject(
+            'Magento\Catalog\Model\Layout\DepersonalizePlugin',
+            ['catalogSession' => $this->catalogSessionMock, 'depersonalizeChecker' => $this->depersonalizeCheckerMock]
+        );
     }
 
     public function testAfterGenerateXml()
     {
-        $this->moduleManagerMock->expects($this->once())->method('isEnabled')->with('Magento_PageCache')
-            ->willReturn(true);
-        $this->cacheConfigMock->expects($this->once())->method('isEnabled')->willReturn(true);
-        $this->requestMock->expects($this->once($this->once()))->method('isAjax')->willReturn(false);
-        $this->layoutMock->expects($this->once())->method('isCacheable')->willReturn(true);
         $this->catalogSessionMock->expects($this->once())->method('clearStorage');
-
-        $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $this->resultLayout);
-        $this->assertEquals($this->resultLayout, $actualResult);
-    }
-
-    public function testPageCacheModuleIsDisabled()
-    {
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->willReturn(false);
-        $this->catalogSessionMock->expects($this->never())->method('clearStorage');
-
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
         $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $this->resultLayout);
         $this->assertEquals($this->resultLayout, $actualResult);
     }
 
-    public function testCacheIsDisabledInConfig()
+    public function testAfterGenerateXmlNoDepersonalize()
     {
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->willReturn(true);
-        $this->cacheConfigMock->expects($this->once())->method('isEnabled')->willReturn(false);
         $this->catalogSessionMock->expects($this->never())->method('clearStorage');
-
-        $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $this->resultLayout);
-        $this->assertEquals($this->resultLayout, $actualResult);
-    }
-
-    public function testIsAjax()
-    {
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->willReturn(true);
-        $this->cacheConfigMock->expects($this->once())->method('isEnabled')->willReturn(true);
-        $this->requestMock->expects($this->once($this->once()))->method('isAjax')->willReturn(true);
-        $this->catalogSessionMock->expects($this->never())->method('clearStorage');
-
-        $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $this->resultLayout);
-        $this->assertEquals($this->resultLayout, $actualResult);
-    }
-
-    public function testLayoutIsNotCacheable()
-    {
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->willReturn(true);
-        $this->cacheConfigMock->expects($this->once())->method('isEnabled')->willReturn(true);
-        $this->requestMock->expects($this->once($this->once()))->method('isAjax')->willReturn(false);
-        $this->layoutMock->expects($this->once())->method('isCacheable')->willReturn(false);
-        $this->catalogSessionMock->expects($this->never())->method('clearStorage');
-
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
         $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $this->resultLayout);
         $this->assertEquals($this->resultLayout, $actualResult);
     }
diff --git a/dev/tests/unit/testsuite/Magento/Checkout/Model/Layout/DepersonalizePluginTest.php b/dev/tests/unit/testsuite/Magento/Checkout/Model/Layout/DepersonalizePluginTest.php
index b09e0f6a6867208536a7a0b226935a9f86cdb129..666740e8a0e2f119f9ba49af331337fc76604533 100644
--- a/dev/tests/unit/testsuite/Magento/Checkout/Model/Layout/DepersonalizePluginTest.php
+++ b/dev/tests/unit/testsuite/Magento/Checkout/Model/Layout/DepersonalizePluginTest.php
@@ -29,19 +29,9 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
     protected $checkoutSessionMock;
 
     /**
-     * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $requestMock;
-
-    /**
-     * @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $moduleManagerMock;
-
-    /**
-     * @var \Magento\PageCache\Model\Config|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $cacheConfigMock;
+    protected $depersonalizeCheckerMock;
 
     /**
      * SetUp
@@ -65,12 +55,17 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
         $this->requestMock = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
         $this->moduleManagerMock = $this->getMock('Magento\Framework\Module\Manager', [], [], '', false);
         $this->cacheConfigMock = $this->getMock('Magento\PageCache\Model\Config', [], [], '', false);
+        $this->depersonalizeCheckerMock = $this->getMock(
+            'Magento\PageCache\Model\DepersonalizeChecker',
+            [],
+            [],
+            '',
+            false
+        );
 
         $this->plugin = new \Magento\Checkout\Model\Layout\DepersonalizePlugin(
-            $this->checkoutSessionMock,
-            $this->moduleManagerMock,
-            $this->requestMock,
-            $this->cacheConfigMock
+            $this->depersonalizeCheckerMock,
+            $this->checkoutSessionMock
         );
     }
 
@@ -80,21 +75,24 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
     public function testAfterGenerateXml()
     {
         $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->will($this->returnValue(true));
-        $this->cacheConfigMock->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->requestMock->expects($this->once($this->once()))
-            ->method('isAjax')
-            ->will($this->returnValue(false));
-        $this->layoutMock->expects($this->once())
-            ->method('isCacheable')
-            ->will($this->returnValue(true));
 
-        $this->checkoutSessionMock->expects($this->once())
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
+        $this->checkoutSessionMock
+            ->expects($this->once())
+            ->method('clearStorage')
+            ->will($this->returnValue($expectedResult));
+
+        $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
+        $this->assertEquals($expectedResult, $actualResult);
+    }
+
+    public function testAfterGenerateXmlNoDepersonalize()
+    {
+        $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
+
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
+        $this->checkoutSessionMock
+            ->expects($this->never())
             ->method('clearStorage')
             ->will($this->returnValue($expectedResult));
 
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Layout/DepersonalizePluginTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Layout/DepersonalizePluginTest.php
index 73c7315d9b953964f794eaf101b3393c6337d058..fd09caa0557437384ed179002e66f10e52d52cd3 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Layout/DepersonalizePluginTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Layout/DepersonalizePluginTest.php
@@ -37,30 +37,21 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
      */
     protected $customerFactoryMock;
 
-    /**
-     * @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $requestMock;
-
     /**
      * @var \Magento\Customer\Model\Customer|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $customerMock;
 
-    /**
-     * @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $moduleManagerMock;
-
     /**
      * @var \Magento\Log\Model\Visitor|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $visitorMock;
 
     /**
-     * @var \Magento\PageCache\Model\Config|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $cacheConfigMock;
+    protected $depersonalizeCheckerMock;
+
     /**
      * SetUp
      */
@@ -88,7 +79,6 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->requestMock = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
         $this->customerMock = $this->getMock(
             'Magento\Customer\Model\Customer',
             ['setGroupId', '__wakeup'],
@@ -96,168 +86,60 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->moduleManagerMock = $this->getMock('Magento\Framework\Module\Manager', [], [], '', false);
         $this->visitorMock = $this->getMock('Magento\Customer\Model\Visitor', [], [], '', false);
         $this->customerFactoryMock->expects($this->any())
             ->method('create')
             ->will($this->returnValue($this->customerMock));
-        $this->cacheConfigMock = $this->getMock('Magento\PageCache\Model\Config', [], [], '', false);
+        $this->depersonalizeCheckerMock = $this->getMock(
+            'Magento\PageCache\Model\DepersonalizeChecker',
+            [],
+            [],
+            '',
+            false
+        );
 
         $this->plugin = new DepersonalizePlugin(
+            $this->depersonalizeCheckerMock,
             $this->sessionMock,
             $this->customerSessionMock,
             $this->customerFactoryMock,
-            $this->requestMock,
-            $this->moduleManagerMock,
-            $this->visitorMock,
-            $this->cacheConfigMock
+            $this->visitorMock
         );
     }
 
-    /**
-     * Test method beforeGenerateXml with enabled module PageCache
-     */
-    public function testBeforeGenerateXmlPageCacheEnabled()
+    public function testBeforeGenerateXml()
     {
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with('Magento_PageCache')
-            ->will($this->returnValue(true));
-        $this->cacheConfigMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->requestMock
-            ->expects($this->once())
-            ->method('isAjax')
-            ->will($this->returnValue(false));
-        $this->layoutMock
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
+        $this->customerSessionMock->expects($this->once())->method('getCustomerGroupId');
+        $this->sessionMock
             ->expects($this->once())
-            ->method('isCacheable')
-            ->will($this->returnValue(true));
-        $this->customerSessionMock->expects($this->once())
-            ->method('getCustomerGroupId');
-        $this->sessionMock->expects($this->once())
             ->method('getData')
             ->with($this->equalTo(\Magento\Framework\Data\Form\FormKey::FORM_KEY));
         $output = $this->plugin->beforeGenerateXml($this->layoutMock);
         $this->assertEquals([], $output);
     }
 
-    /**
-     * Test method beforeGenerateXml with disabled module PageCache
-     */
-    public function testBeforeGenerateXmlPageCacheDisabled()
+    public function testBeforeGenerateXmlNoDepersonalize()
     {
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with('Magento_PageCache')
-            ->will($this->returnValue(false));
-        $this->requestMock
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
+        $this->customerSessionMock->expects($this->never())->method('getCustomerGroupId');
+        $this->sessionMock
             ->expects($this->never())
-            ->method('isAjax');
-        $output = $this->plugin->beforeGenerateXml($this->layoutMock);
-        $this->assertEquals([], $output);
-    }
-
-    /**
-     * Test beforeGenerateXml method with enabled module PageCache and request is Ajax
-     */
-    public function testBeforeGenerateXmlRequestIsAjax()
-    {
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with('Magento_PageCache')
-            ->will($this->returnValue(true));
-        $this->cacheConfigMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->requestMock
-            ->expects($this->once())
-            ->method('isAjax')
-            ->will($this->returnValue(true));
-        $this->layoutMock->expects($this->never())
-            ->method('isCacheable');
-        $output = $this->plugin->beforeGenerateXml($this->layoutMock);
-        $this->assertEquals([], $output);
-    }
-
-    /**
-     * Test beforeGenerateXml method with enabled module PageCache and request is Ajax and Layout is not cacheable
-     */
-    public function testBeforeGenerateXmlLayoutIsNotCacheable()
-    {
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with('Magento_PageCache')
-            ->will($this->returnValue(true));
-        $this->cacheConfigMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->requestMock
-            ->expects($this->once())
-            ->method('isAjax')
-            ->will($this->returnValue(false));
-        $this->layoutMock->expects($this->once())
-            ->method('isCacheable')
-            ->will($this->returnValue(false));
-        $this->customerSessionMock->expects($this->never())
-            ->method('getCustomerGroupId');
+            ->method('getData');
         $output = $this->plugin->beforeGenerateXml($this->layoutMock);
         $this->assertEquals([], $output);
     }
 
-    /**
-     * Test method afterGenerateXml with enabled module PageCache
-     */
-    public function testAfterGenerateXmlPageCacheEnabled()
+    public function testAfterGenerateXml()
     {
         $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with('Magento_PageCache')
-            ->will($this->returnValue(true));
-        $this->cacheConfigMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->requestMock
-            ->expects($this->once())
-            ->method('isAjax')
-            ->will($this->returnValue(false));
-        $this->layoutMock
-            ->expects($this->once())
-            ->method('isCacheable')
-            ->will($this->returnValue(true));
-        $this->visitorMock
-            ->expects($this->once())
-            ->method('setSkipRequestLogging')
-            ->with($this->equalTo(true));
-        $this->visitorMock
-            ->expects($this->once())
-            ->method('unsetData');
-        $this->sessionMock
-            ->expects($this->once())
-            ->method('clearStorage');
-        $this->customerSessionMock
-            ->expects($this->once())
-            ->method('clearStorage');
-        $this->customerSessionMock
-            ->expects($this->once())
-            ->method('setCustomerGroupId')
-            ->with($this->equalTo(null));
-        $this->customerMock
-            ->expects($this->once())
-            ->method('setGroupId')
-            ->with($this->equalTo(null))
-            ->willReturnSelf();
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
+        $this->visitorMock->expects($this->once())->method('setSkipRequestLogging')->with($this->equalTo(true));
+        $this->visitorMock->expects($this->once())->method('unsetData');
+        $this->sessionMock->expects($this->once())->method('clearStorage');
+        $this->customerSessionMock->expects($this->once())->method('clearStorage');
+        $this->customerSessionMock->expects($this->once())->method('setCustomerGroupId')->with($this->equalTo(null));
+        $this->customerMock->expects($this->once())->method('setGroupId')->with($this->equalTo(null))->willReturnSelf();
         $this->sessionMock
             ->expects($this->once())
             ->method('setData')
@@ -273,74 +155,18 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
         $this->assertSame($expectedResult, $actualResult);
     }
 
-    /**
-     * Test afterGenerateXml method with disabled module PageCache
-     */
-    public function testAfterGenerateXmlPageCacheDisabled()
-    {
-        $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with('Magento_PageCache')
-            ->will($this->returnValue(false));
-        $this->requestMock
-            ->expects($this->never())
-            ->method('isAjax');
-        $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
-        $this->assertSame($expectedResult, $actualResult);
-    }
-
-    /**
-     * Test afterGenerateXml method with enabled module PageCache and request is Ajax
-     */
-    public function testAfterGenerateXmlRequestIsAjax()
+    public function testAfterGenerateXmlNoDepersonalize()
     {
         $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->will($this->returnValue(true));
-        $this->cacheConfigMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->requestMock
-            ->expects($this->once())
-            ->method('isAjax')
-            ->will($this->returnValue(true));
-        $this->layoutMock->expects($this->never())
-            ->method('isCacheable');
-        $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
-        $this->assertSame($expectedResult, $actualResult);
-    }
-
-    /**
-     * Test afterGenerateXml method with enabled module PageCache and request is Ajax and Layout is not cacheable
-     */
-    public function testAfterGenerateXmlLayoutIsNotCacheable()
-    {
-        $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->moduleManagerMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->will($this->returnValue(true));
-        $this->cacheConfigMock
-            ->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->requestMock
-            ->expects($this->once())
-            ->method('isAjax')
-            ->will($this->returnValue(false));
-        $this->layoutMock->expects($this->once())
-            ->method('isCacheable')
-            ->will($this->returnValue(false));
-        $this->visitorMock
-            ->expects($this->never())
-            ->method('setSkipRequestLogging');
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
+        $this->visitorMock->expects($this->never())->method('setSkipRequestLogging');
+        $this->visitorMock->expects($this->never())->method('unsetData');
+        $this->sessionMock->expects($this->never())->method('clearStorage');
+        $this->customerSessionMock->expects($this->never())->method('clearStorage');
+        $this->customerSessionMock->expects($this->never())->method('setCustomerGroupId');
+        $this->customerMock->expects($this->never())->method('setGroupId');
+        $this->sessionMock->expects($this->never())->method('setData');
+        $this->customerSessionMock->expects($this->never())->method('setCustomer');
         $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
         $this->assertSame($expectedResult, $actualResult);
     }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Module/ModuleList/LoaderTest.php b/dev/tests/unit/testsuite/Magento/Framework/Module/ModuleList/LoaderTest.php
index 5fd6fa94551eb9708cffbccc15cd7be3edfc9b1d..59c449cf5d2f585cd6de81b6875aecdc4dd3fa1b 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Module/ModuleList/LoaderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Module/ModuleList/LoaderTest.php
@@ -7,6 +7,7 @@
 namespace Magento\Framework\Module\ModuleList;
 
 use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Xml\Parser;
 
 class LoaderTest extends \PHPUnit_Framework_TestCase
 {
@@ -32,6 +33,11 @@ class LoaderTest extends \PHPUnit_Framework_TestCase
      */
     private $converter;
 
+    /*
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $parser;
+
     protected function setUp()
     {
         $this->filesystem = $this->getMock('Magento\Framework\Filesystem', [], [], '', false);
@@ -41,6 +47,7 @@ class LoaderTest extends \PHPUnit_Framework_TestCase
             ->with(DirectoryList::MODULES)
             ->willReturn($this->dir);
         $this->converter = $this->getMock('Magento\Framework\Module\Declaration\Converter\Dom', [], [], '', false);
+        $this->parser = $this->getMock('Magento\Framework\Xml\Parser', [], [], '', false);
     }
 
     public function testLoad()
@@ -57,11 +64,13 @@ class LoaderTest extends \PHPUnit_Framework_TestCase
             ['b', null, null, self::$sampleXml],
             ['c', null, null, self::$sampleXml],
         ]));
-        $dom = new \PHPUnit_Framework_Constraint_IsInstanceOf('DOMDocument');
-        $this->converter->expects($this->at(0))->method('convert')->with($dom)->willReturn(['a' => $fixture['a']]);
-        $this->converter->expects($this->at(1))->method('convert')->with($dom)->willReturn(['b' => $fixture['b']]);
-        $this->converter->expects($this->at(2))->method('convert')->with($dom)->willReturn(['c' => $fixture['c']]);
-        $object = new Loader($this->filesystem, $this->converter);
+        $this->converter->expects($this->at(0))->method('convert')->willReturn(['a' => $fixture['a']]);
+        $this->converter->expects($this->at(1))->method('convert')->willReturn(['b' => $fixture['b']]);
+        $this->converter->expects($this->at(2))->method('convert')->willReturn(['c' => $fixture['c']]);
+        $this->parser->expects($this->once())->method('initErrorHandler');
+        $this->parser->expects($this->atLeastOnce())->method('loadXML');
+        $this->parser->expects($this->atLeastOnce())->method('getDom');
+        $object = new Loader($this->filesystem, $this->converter, $this->parser);
         $result = $object->load();
         $this->assertSame(['a', 'c', 'b'], array_keys($result));
         $this->assertSame($fixture['a'], $result['a']);
@@ -84,10 +93,9 @@ class LoaderTest extends \PHPUnit_Framework_TestCase
             ['a', null, null, self::$sampleXml],
             ['b', null, null, self::$sampleXml],
         ]));
-        $dom = new \PHPUnit_Framework_Constraint_IsInstanceOf('DOMDocument');
-        $this->converter->expects($this->at(0))->method('convert')->with($dom)->willReturn(['a' => $fixture['a']]);
-        $this->converter->expects($this->at(1))->method('convert')->with($dom)->willReturn(['b' => $fixture['b']]);
-        $object = new Loader($this->filesystem, $this->converter);
+        $this->converter->expects($this->at(0))->method('convert')->willReturn(['a' => $fixture['a']]);
+        $this->converter->expects($this->at(1))->method('convert')->willReturn(['b' => $fixture['b']]);
+        $object = new Loader($this->filesystem, $this->converter, $this->parser);
         $object->load();
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Xml/ParserTest.php b/dev/tests/unit/testsuite/Magento/Framework/Xml/ParserTest.php
index 683e5499dc35d408a3f93569599bb2898766f664..ff512cf3b74edfec86092d234e4367001d5fe91c 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Xml/ParserTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Xml/ParserTest.php
@@ -31,4 +31,15 @@ class ParserTest extends \PHPUnit_Framework_TestCase
             $this->parser->load(__DIR__ . '/_files/data.xml')->xmlToArray()
         );
     }
+
+    /**
+     * @expectedException \Magento\Framework\Exception
+     * @expectedExceptionMessage DOMDocument::loadXML(): Opening and ending tag mismatch
+     */
+    public function testLoadXmlInvalid()
+    {
+        $sampleInvalidXml = '<?xml version="1.0"?><config></onfig>';
+        $this->parser->initErrorHandler();
+        $this->parser->loadXML($sampleInvalidXml);
+    }
 }
diff --git a/dev/tests/unit/testsuite/Magento/PageCache/Model/DepersonalizeCheckerTest.php b/dev/tests/unit/testsuite/Magento/PageCache/Model/DepersonalizeCheckerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..51e314e51699e85b8229e249b0e95715fb33152a
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/PageCache/Model/DepersonalizeCheckerTest.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\PageCache\Model;
+
+class DepersonalizeCheckerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $requestMock;
+
+    /**
+     * @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $moduleManagerMock;
+
+    /**
+     * @var \Magento\PageCache\Model\Config|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $cacheConfigMock;
+
+    public function setup()
+    {
+        $this->requestMock = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
+        $this->moduleManagerMock = $this->getMock('Magento\Framework\Module\Manager', [], [], '', false);
+        $this->cacheConfigMock = $this->getMock('Magento\PageCache\Model\Config', [], [], '', false);
+    }
+
+    /**
+     * @param array $requestResult
+     * @param bool $moduleManagerResult
+     * @param bool $cacheConfigResult
+     * @param bool $layoutResult
+     * @param bool $can Depersonalize
+     * @dataProvider checkIfDepersonalizeDataProvider
+     */
+    public function testCheckIfDepersonalize(
+        array $requestResult,
+        $moduleManagerResult,
+        $cacheConfigResult,
+        $layoutResult,
+        $canDepersonalize
+    ) {
+        $this->requestMock->expects($this->any())->method('isAjax')->willReturn($requestResult['ajax']);
+        $this->requestMock->expects($this->any())->method('isGet')->willReturn($requestResult['get']);
+        $this->requestMock->expects($this->any())->method('isHead')->willReturn($requestResult['head']);
+        $this->moduleManagerMock
+            ->expects($this->any())
+            ->method('isEnabled')
+            ->with('Magento_PageCache')
+            ->willReturn($moduleManagerResult);
+
+        $this->cacheConfigMock->expects($this->any())->method('isEnabled')->willReturn($cacheConfigResult);
+        $layoutMock = $this->getMockForAbstractClass('Magento\Framework\View\LayoutInterface', [], '', false);
+        $layoutMock->expects($this->any())->method('isCacheable')->willReturn($layoutResult);
+
+        $object = new DepersonalizeChecker($this->requestMock, $this->moduleManagerMock, $this->cacheConfigMock);
+        $this->assertEquals($canDepersonalize, $object->checkIfDepersonalize($layoutMock));
+    }
+
+    /**
+     * return array
+     */
+    public function checkIfDepersonalizeDataProvider()
+    {
+        return [
+            [['ajax' => false, 'get' => true, 'head' => false], true, true, true, true],
+            [['ajax' => false, 'get' => false, 'head' => true], true, true, true, true],
+            [['ajax' => false, 'get' => false, 'head' => false], true, true, true, false],
+            [['ajax' => true, 'get' => true, 'head' => false], true, true, true, false],
+            [['ajax' => false, 'get' => true, 'head' => false], false, true, true, false],
+            [['ajax' => false, 'get' => true, 'head' => false], true, false, true, false],
+            [['ajax' => false, 'get' => true, 'head' => false], true, true, false, false],
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/PageCache/Model/Layout/DepersonalizePluginTest.php b/dev/tests/unit/testsuite/Magento/PageCache/Model/Layout/DepersonalizePluginTest.php
index c3630097d53cdb59f4e1fa64d948fd0edb12b7ae..4e0db0bd6ceb6728bba5023e200de6b377c00e73 100644
--- a/dev/tests/unit/testsuite/Magento/PageCache/Model/Layout/DepersonalizePluginTest.php
+++ b/dev/tests/unit/testsuite/Magento/PageCache/Model/Layout/DepersonalizePluginTest.php
@@ -23,30 +23,20 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
      */
     protected $layoutMock;
 
-    /**
-     * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $requestMock;
-
-    /**
-     * @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $moduleManagerMock;
-
     /**
      * @var \Magento\Framework\Event\Manager|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $eventManagerMock;
 
     /**
-     * @var \Magento\PageCache\Model\Config|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Message\Session|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $cacheConfigMock;
+    protected $messageSessionMock;
 
     /**
-     * @var \Magento\Framework\Message\Session|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $messageSessionMock;
+    protected $depersonalizeCheckerMock;
 
     /**
      * SetUp
@@ -54,68 +44,49 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
     public function setUp()
     {
         $this->layoutMock = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->requestMock = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
-        $this->moduleManagerMock = $this->getMock('Magento\Framework\Module\Manager', [], [], '', false);
         $this->eventManagerMock = $this->getMock('Magento\Framework\Event\Manager', [], [], '', false);
-        $this->cacheConfigMock = $this->getMock('Magento\PageCache\Model\Config', [], [], '', false);
         $this->messageSessionMock = $this->getMock('Magento\Framework\Message\Session',
             ['clearStorage'],
             [],
             '',
             false
         );
+        $this->depersonalizeCheckerMock = $this->getMock(
+            'Magento\PageCache\Model\DepersonalizeChecker',
+            [],
+            [],
+            '',
+            false
+        );
         $this->plugin = new DepersonalizePlugin(
-            $this->requestMock,
-            $this->moduleManagerMock,
+            $this->depersonalizeCheckerMock,
             $this->eventManagerMock,
-            $this->cacheConfigMock,
             $this->messageSessionMock
         );
     }
 
-    /**
-     * Test method afterGenerateXml with enabled module PageCache
-     */
-    public function testAfterGenerateXmlPageCacheEnabled()
+    public function testAfterGenerateXml()
     {
         $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->cacheConfigMock->expects($this->once())
-            ->method('isEnabled')
-            ->will($this->returnValue(true));
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->will($this->returnValue(true));
-        $this->requestMock->expects($this->once($this->once()))
-            ->method('isAjax')
-            ->will($this->returnValue(false));
-        $this->layoutMock->expects($this->once())
-            ->method('isCacheable')
-            ->will($this->returnValue(true));
 
         $this->eventManagerMock->expects($this->once())
             ->method('dispatch')
             ->with($this->equalTo('depersonalize_clear_session'));
-        $this->messageSessionMock->expects($this->once())
-            ->method('clearStorage');
+        $this->messageSessionMock->expects($this->once())->method('clearStorage');
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
 
         $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
         $this->assertEquals($expectedResult, $actualResult);
     }
 
-    /**
-     * Test method afterGenerateXml with disabled module PageCache
-     */
-    public function testAfterGenerateXmlPageCacheDisabled()
+    public function testAfterGenerateXmlNoDepersonalize()
     {
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
+        $this->eventManagerMock->expects($this->never())
+            ->method('dispatch');
+        $this->messageSessionMock->expects($this->never())->method('clearStorage');
+
         $expectedResult = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with($this->equalTo('Magento_PageCache'))
-            ->will($this->returnValue(false));
-        $this->requestMock->expects($this->never())
-            ->method('isAjax')
-            ->will($this->returnValue(false));
         $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
         $this->assertEquals($expectedResult, $actualResult);
     }
diff --git a/dev/tests/unit/testsuite/Magento/PageCache/Model/Observer/InvalidateCacheIfChangedTest.php b/dev/tests/unit/testsuite/Magento/PageCache/Model/Observer/InvalidateCacheIfChangedTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..02492793b992328d184ec45879fc57f3bf1c38be
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/PageCache/Model/Observer/InvalidateCacheIfChangedTest.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ *
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\PageCache\Model\Observer;
+
+class InvalidateCacheIfChangedTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\PageCache\Model\Observer\InvalidateCacheIfChanged */
+    protected $model;
+
+    /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\PageCache\Model\Config */
+    protected $configMock;
+
+    /** @var  \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\Cache\TypeListInterface */
+    protected $typeListMock;
+
+    /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Event\Observer */
+    protected $observerMock;
+
+    /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Object\IdentityInterface */
+    protected $objectMock;
+
+    /**
+     * Set up all mocks and data for test
+     */
+    public function setUp()
+    {
+        $this->configMock = $this->getMock(
+            'Magento\PageCache\Model\Config',
+            ['getType', 'isEnabled'],
+            [],
+            '',
+            false
+        );
+        $this->typeListMock = $this->getMock('Magento\Framework\App\Cache\TypeList', [], [], '', false);
+
+        $this->model = new \Magento\PageCache\Model\Observer\InvalidateCacheIfChanged(
+            $this->configMock,
+            $this->typeListMock
+        );
+
+        $this->observerMock = $this->getMock('Magento\Framework\Event\Observer', [], [], '', false);
+        $eventMock = $this->getMock('Magento\Framework\Event', ['getObject'], [], '', false);
+        $this->objectMock = $this->getMockForAbstractClass('Magento\Framework\Object\IdentityInterface', [], '', false);
+        $eventMock->expects($this->any())->method('getObject')->willReturn($this->objectMock);
+        $this->observerMock->expects($this->any())->method('getEvent')->willReturn($eventMock);
+    }
+
+    /**
+     * @dataProvider invalidateCacheDataProvider
+     * @param bool $cacheState
+     */
+    public function testExecuteChanged($cacheState)
+    {
+        $this->configMock->expects($this->once())->method('isEnabled')->will($this->returnValue($cacheState));
+
+        if ($cacheState) {
+            $this->typeListMock->expects($this->once())->method('invalidate')->with($this->equalTo('full_page'));
+            $this->objectMock->expects($this->once())->method('getIdentities')->will($this->returnValue(['tag_1']));
+        }
+        $this->model->execute($this->observerMock);
+    }
+
+    /**
+     * @dataProvider invalidateCacheDataProvider
+     * @param bool $cacheState
+     */
+    public function testExecuteNoChanged($cacheState)
+    {
+        $this->configMock->expects($this->once())->method('isEnabled')->will($this->returnValue($cacheState));
+        $this->typeListMock->expects($this->never())->method('invalidate');
+
+        if ($cacheState) {
+            $this->objectMock->expects($this->once())->method('getIdentities')->will($this->returnValue([]));
+        }
+        $this->model->execute($this->observerMock);
+    }
+
+    public function invalidateCacheDataProvider()
+    {
+        return [[true], [false]];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Persistent/Model/Layout/DepersonalizePluginTest.php b/dev/tests/unit/testsuite/Magento/Persistent/Model/Layout/DepersonalizePluginTest.php
index d48959f5885a3fa4ffee2844509746fa461b10d4..ae84619750d39fbab7bd3132451f61f181aa05d6 100644
--- a/dev/tests/unit/testsuite/Magento/Persistent/Model/Layout/DepersonalizePluginTest.php
+++ b/dev/tests/unit/testsuite/Magento/Persistent/Model/Layout/DepersonalizePluginTest.php
@@ -15,21 +15,6 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
      */
     protected $persistentSessionMock;
 
-    /**
-     * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $requestMock;
-
-    /**
-     * @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $moduleManagerMock;
-
-    /**
-     * @var \Magento\PageCache\Model\Config|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $cacheConfigMock;
-
     /**
      * @var \Magento\TestFramework\Helper\ObjectManager
      */
@@ -40,6 +25,11 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
      */
     protected $plugin;
 
+    /**
+     * @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $depersonalizeCheckerMock;
+
     /**
      * Set up
      *
@@ -57,25 +47,13 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
             false
         );
 
-        $this->requestMock = $this->getMockForAbstractClass(
-            'Magento\Framework\App\RequestInterface',
-            [],
-            '',
-            false,
-            true,
-            true,
-            ['isAjax']
-        );
-        $this->moduleManagerMock = $this->getMock(
-            'Magento\Framework\Module\Manager',
-            ['isEnabled'],
+        $this->requestMock = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
+
+        $this->moduleManagerMock = $this->getMock('Magento\Framework\Module\Manager', ['isEnabled'], [], '', false);
+        $this->cacheConfigMock = $this->getMock('Magento\PageCache\Model\Config', ['isEnabled'], [], '', false);
+        $this->depersonalizeCheckerMock = $this->getMock(
+            'Magento\PageCache\Model\DepersonalizeChecker',
             [],
-            '',
-            false
-        );
-        $this->cacheConfigMock = $this->getMock(
-            'Magento\PageCache\Model\Config',
-            ['isEnabled'],
             [],
             '',
             false
@@ -85,21 +63,12 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
             'Magento\Persistent\Model\Layout\DepersonalizePlugin',
             [
                 'persistentSession' => $this->persistentSessionMock,
-                'request' => $this->requestMock,
-                'moduleManager' => $this->moduleManagerMock,
-                'cacheConfig' => $this->cacheConfigMock
+                'depersonalizeChecker' => $this->depersonalizeCheckerMock,
             ]
         );
     }
 
-    /**
-     * Run test afterGenerateXml method
-     *
-     * @param bool $result
-     *
-     * @dataProvider dataProviderAfterGenerateXml
-     */
-    public function testAfterGenerateXml($result)
+    public function testAfterGenerateXml()
     {
         /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject $subjectMock */
         $subjectMock = $this->getMockForAbstractClass(
@@ -122,43 +91,38 @@ class DepersonalizePluginTest extends \PHPUnit_Framework_TestCase
             []
         );
 
-        $this->moduleManagerMock->expects($this->once())
-            ->method('isEnabled')
-            ->with('Magento_PageCache')
-            ->willReturn($result);
-        $this->cacheConfigMock->expects($this->any())
-            ->method('isEnabled')
-            ->willReturn($result);
-        $this->requestMock->expects($this->any())
-            ->method('isAjax')
-            ->willReturn(!$result);
-        $subjectMock->expects($this->any())
-            ->method('isCacheable')
-            ->willReturn($result);
-
-        if ($result) {
-            $this->persistentSessionMock->expects($this->once())
-                ->method('setCustomerId')
-                ->with(null);
-        } else {
-            $this->persistentSessionMock->expects($this->never())
-                ->method('setCustomerId')
-                ->with(null);
-        }
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
+        $this->persistentSessionMock->expects($this->once())->method('setCustomerId')->with(null);
 
         $this->assertEquals($resultMock, $this->plugin->afterGenerateXml($subjectMock, $resultMock));
     }
 
-    /**
-     * Data provider for testAfterGenerateXml
-     *
-     * @return array
-     */
-    public function dataProviderAfterGenerateXml()
+    public function testAfterGenerateXmlNoDepersonalize()
     {
-        return [
-            ['result' => true],
-            ['result' => false]
-        ];
+        /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject $subjectMock */
+        $subjectMock = $this->getMockForAbstractClass(
+            'Magento\Framework\View\LayoutInterface',
+            [],
+            '',
+            false,
+            true,
+            true,
+            ['isCacheable']
+        );
+        /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject $resultMock */
+        $resultMock = $this->getMockForAbstractClass(
+            'Magento\Framework\View\LayoutInterface',
+            [],
+            '',
+            false,
+            true,
+            true,
+            []
+        );
+
+        $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
+        $this->persistentSessionMock->expects($this->never())->method('setCustomerId');
+
+        $this->assertEquals($resultMock, $this->plugin->afterGenerateXml($subjectMock, $resultMock));
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Setup/Controller/DatabaseCheckTest.php b/dev/tests/unit/testsuite/Magento/Setup/Controller/DatabaseCheckTest.php
index 3c062e1406134de1e4a165f2c04f62f0825f8630..e1306a04448d6114f95dc1c88e6498004d9e25fa 100644
--- a/dev/tests/unit/testsuite/Magento/Setup/Controller/DatabaseCheckTest.php
+++ b/dev/tests/unit/testsuite/Magento/Setup/Controller/DatabaseCheckTest.php
@@ -53,4 +53,10 @@ class DatabaseCheckTest extends \PHPUnit_Framework_TestCase
         $this->assertArrayHasKey('error', $variables);
         $this->assertFalse($variables['success']);
     }
+
+    public function testIndexActionCheckPrefix()
+    {
+        $this->installer->expects($this->once())->method('checkDatabaseTablePrefix');
+        $this->controller->indexAction();
+    }
 }
diff --git a/lib/internal/Magento/Framework/App/ObjectManagerFactory.php b/lib/internal/Magento/Framework/App/ObjectManagerFactory.php
index 1ebedf86043fd2307a83ac3f35830afeb1f8de5a..8c777c869e82417a90e684ed24db56a204feac2e 100644
--- a/lib/internal/Magento/Framework/App/ObjectManagerFactory.php
+++ b/lib/internal/Magento/Framework/App/ObjectManagerFactory.php
@@ -127,6 +127,19 @@ class ObjectManagerFactory
             }
         }
 
+        // set cache profiler decorator if enabled
+        if (\Magento\Framework\Profiler::isEnabled()) {
+            $cacheFactoryArguments = $diConfig->getArguments('Magento\Framework\App\Cache\Frontend\Factory');
+            $cacheFactoryArguments['decorators'][] = [
+                'class' => 'Magento\Framework\Cache\Frontend\Decorator\Profiler',
+                'parameters' => ['backendPrefixes' => ['Zend_Cache_Backend_', 'Cm_Cache_Backend_']],
+            ];
+            $cacheFactoryConfig = [
+                'Magento\Framework\App\Cache\Frontend\Factory' => ['arguments' => $cacheFactoryArguments]
+            ];
+            $diConfig->extend($cacheFactoryConfig);
+        }
+
         $sharedInstances = [
             'Magento\Framework\App\DeploymentConfig' => $deploymentConfig,
             'Magento\Framework\App\Filesystem\DirectoryList' => $this->directoryList,
diff --git a/lib/internal/Magento/Framework/Module/ModuleList/Loader.php b/lib/internal/Magento/Framework/Module/ModuleList/Loader.php
index 6c5697243d8647a82de5e655a8b10b22677fe5cd..943ed35520cbc0406eb694274fc8143147cc9d93 100644
--- a/lib/internal/Magento/Framework/Module/ModuleList/Loader.php
+++ b/lib/internal/Magento/Framework/Module/ModuleList/Loader.php
@@ -9,6 +9,7 @@ namespace Magento\Framework\Module\ModuleList;
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\Filesystem;
 use Magento\Framework\Module\Declaration\Converter\Dom;
+use Magento\Framework\Xml\Parser;
 
 /**
  * Loader of module list information from the filesystem
@@ -29,21 +30,32 @@ class Loader
      */
     private $converter;
 
+    /**
+     * Parser
+     *
+     * @var \Magento\Framework\Xml\Parser
+     */
+    private $parser;
+
     /**
      * Constructor
      *
      * @param Filesystem $filesystem
      * @param Dom $converter
+     * @param Parser $parser
      */
-    public function __construct(Filesystem $filesystem, Dom $converter)
+    public function __construct(Filesystem $filesystem, Dom $converter, Parser $parser)
     {
         $this->filesystem = $filesystem;
         $this->converter = $converter;
+        $this->parser = $parser;
+        $this->parser->initErrorHandler();
     }
 
     /**
      * Loads the full module list information
      *
+     * @throws \Magento\Framework\Exception
      * @return array
      */
     public function load()
@@ -52,9 +64,18 @@ class Loader
         $dir = $this->filesystem->getDirectoryRead(DirectoryList::MODULES);
         foreach ($dir->search('*/*/etc/module.xml') as $file) {
             $contents = $dir->readFile($file);
-            $dom = new \DOMDocument();
-            $dom->loadXML($contents);
-            $data = $this->converter->convert($dom);
+
+            try {
+                $this->parser->loadXML($contents);
+            } catch (\Magento\Framework\Exception $e) {
+                throw new \Magento\Framework\Exception(
+                    'Invalid Document: ' . $file . PHP_EOL . ' Error: ' . $e->getMessage(),
+                    $e->getCode(),
+                    $e
+                );
+            }
+
+            $data = $this->converter->convert($this->parser->getDom());
             $name = key($data);
             $result[$name] = $data[$name];
         }
diff --git a/lib/internal/Magento/Framework/Xml/Parser.php b/lib/internal/Magento/Framework/Xml/Parser.php
index 46e1303d39fa481cb9420d620d939a06945bd878..02c762922afb447497dc935f649a783a024150d9 100644
--- a/lib/internal/Magento/Framework/Xml/Parser.php
+++ b/lib/internal/Magento/Framework/Xml/Parser.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\Framework\Xml;
 
+use \Magento\Framework\Exception;
+
 class Parser
 {
     /**
@@ -22,6 +24,11 @@ class Parser
      */
     protected $_content = [];
 
+    /**
+     * @var boolean
+     */
+    protected $errorHandlerIsActive = false;
+
     /**
      *
      */
@@ -32,6 +39,16 @@ class Parser
         return $this;
     }
 
+    /**
+     * Initializes error handler
+     *
+     * @return void
+     */
+    public function initErrorHandler()
+    {
+        $this->errorHandlerIsActive = true;
+    }
+
     /**
      * @return \DOMDocument|null
      */
@@ -135,7 +152,39 @@ class Parser
      */
     public function loadXML($string)
     {
-        $this->getDom()->loadXML($string);
+        if ($this->errorHandlerIsActive) {
+            set_error_handler([$this, 'errorHandler']);
+        }
+
+        try {
+            $this->getDom()->loadXML($string);
+        } catch (\Magento\Framework\Exception $e) {
+            restore_error_handler();
+            throw new \Magento\Framework\Exception($e->getMessage(), $e->getCode(), $e);
+        }
+
+        if ($this->errorHandlerIsActive) {
+            restore_error_handler();
+        }
+
         return $this;
     }
+
+    /**
+     * Custom XML lib error handler
+     *
+     * @param int $errorNo
+     * @param string $errorStr
+     * @param string $errorFile
+     * @param int $errorLine
+     * @throws \Magento\Framework\Exception
+     * @return void
+     */
+    public function errorHandler($errorNo, $errorStr, $errorFile, $errorLine)
+    {
+        if ($errorNo != 0) {
+            $message = "{$errorStr} in {$errorFile} on line {$errorLine}";
+            throw new \Magento\Framework\Exception($message);
+        }
+    }
 }
diff --git a/setup/pub/magento/setup/create-admin-account.js b/setup/pub/magento/setup/create-admin-account.js
index c2cabdb63cffcf9c966bc6b657730f8331a9ff8d..423ef0a341f8e86db3bc7c91e2427725054c2f10 100644
--- a/setup/pub/magento/setup/create-admin-account.js
+++ b/setup/pub/magento/setup/create-admin-account.js
@@ -18,21 +18,21 @@ angular.module('create-admin-account', ['ngStorage'])
                 return;
             }
             var p = $scope.admin.password;
-            if (p.length > 6 && p.match(/[\d]+/) && p.match(/[a-z]+/) && p.match(/[A-Z]+/) && p.match(/[!@#$%^*()_\/\\\-\+=]+/)) {
+            if (p.length >= 6 && p.match(/[\d]+/) && p.match(/[a-z]+/) && p.match(/[A-Z]+/) && p.match(/[!@#$%^*()_\/\\\-\+=]+/)) {
                 $scope.admin.passwordStatus.class = 'strong';
                 $scope.admin.passwordStatus.label = 'Strong';
-            } else if (p.length > 6 && p.match(/[\d]+/) && p.match(/[a-z]+/) && p.match(/[A-Z]+/)) {
+            } else if (p.length >= 6 && p.match(/[\d]+/) && p.match(/[a-z]+/) && p.match(/[A-Z]+/)) {
                 $scope.admin.passwordStatus.class = 'good';
                 $scope.admin.passwordStatus.label = 'Good';
-            } else if (p.length > 6 && p.match(/[\d]+/) && p.match(/[a-zA-Z]+/)) {
+            } else if (p.length >= 6 && p.match(/[\d]+/) && p.match(/[a-zA-Z]+/)) {
+                $scope.admin.passwordStatus.class = 'fair';
+                $scope.admin.passwordStatus.label = 'Fair';
+            } else if (p.length >= 6) {
                 $scope.admin.passwordStatus.class = 'weak';
                 $scope.admin.passwordStatus.label = 'Weak';
-            } else if (p.length > 6) {
-                $scope.admin.passwordStatus.class = 'to-short';
-                $scope.admin.passwordStatus.label = 'Too Short';
             } else {
-                $scope.admin.passwordStatus.class = 'none';
-                $scope.admin.passwordStatus.label = 'None';
+                $scope.admin.passwordStatus.class = 'too-short';
+                $scope.admin.passwordStatus.label = 'Too Short';
             }
         };
 
@@ -71,7 +71,7 @@ angular.module('create-admin-account', ['ngStorage'])
             require: "ngModel",
             link: function(scope, elm, attrs, ctrl){
                 var validator = function(value){
-                    var minReg = /^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{6,}$/,
+                    var minReg = /^(?=.*\d)(?=.*[a-zA-Z]).{6,}$/,
                         isValid = typeof value === 'string' && minReg.test(value);
 
                     ctrl.$setValidity('checkPassword', isValid);
diff --git a/setup/pub/styles/setup.css b/setup/pub/styles/setup.css
index e1cc3503329982b2dafb64e3a809772ce1747e47..2b738d61e6ee37fd1d75260db370b4e012fae368 100644
--- a/setup/pub/styles/setup.css
+++ b/setup/pub/styles/setup.css
@@ -3,4 +3,4 @@
  * See COPYING.txt for license details.
  */
 
-html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box}:focus{box-shadow:none;outline:0}.keyfocus :focus{box-shadow:0 0 0 1px #008bdb}embed,img,object,video{max-width:100%}.abs-clearer:after,.form-row:after,.header:after,.ie9 .alert:after,.nav:after,.row:after{content:"";display:table;clear:both}.ng-cloak{display:none!important}.hide.hide{display:none}.show.show{display:block}.text-center{text-align:center}.text-right{text-align:right}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/light/opensans-300.eot);src:url(../../pub/fonts/opensans/light/opensans-300.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/light/opensans-300.woff2) format('woff2'),url(../../pub/fonts/opensans/light/opensans-300.woff) format('woff'),url(../../pub/fonts/opensans/light/opensans-300.ttf) format('truetype'),url('../../pub/fonts/opensans/light/opensans-300.svg#Open Sans') format('svg');font-weight:300;font-style:normal}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/regular/opensans-400.eot);src:url(../../pub/fonts/opensans/regular/opensans-400.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/regular/opensans-400.woff2) format('woff2'),url(../../pub/fonts/opensans/regular/opensans-400.woff) format('woff'),url(../../pub/fonts/opensans/regular/opensans-400.ttf) format('truetype'),url('../../pub/fonts/opensans/regular/opensans-400.svg#Open Sans') format('svg');font-weight:400;font-style:normal}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/semibold/opensans-600.eot);src:url(../../pub/fonts/opensans/semibold/opensans-600.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/semibold/opensans-600.woff2) format('woff2'),url(../../pub/fonts/opensans/semibold/opensans-600.woff) format('woff'),url(../../pub/fonts/opensans/semibold/opensans-600.ttf) format('truetype'),url('../../pub/fonts/opensans/semibold/opensans-600.svg#Open Sans') format('svg');font-weight:600;font-style:normal}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/bold/opensans-700.eot);src:url(../../pub/fonts/opensans/bold/opensans-700.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/bold/opensans-700.woff2) format('woff2'),url(../../pub/fonts/opensans/bold/opensans-700.woff) format('woff'),url(../../pub/fonts/opensans/bold/opensans-700.ttf) format('truetype'),url('../../pub/fonts/opensans/bold/opensans-700.svg#Open Sans') format('svg');font-weight:700;font-style:normal}html{font-size:62.5%}body{color:#303030;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:400;line-height:1.4}h1,h2,h3,h4,h5,h6{font-weight:400;margin-top:0}p{margin:0 0 1em}a{color:#008bdb;text-decoration:none}a:hover{color:#0fa7ff;text-decoration:underline}@font-face{font-family:Icons;src:url(../../pub/fonts/icons/icons.eot);src:url(../../pub/fonts/icons/icons.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/icons/icons.woff2) format('woff2'),url(../../pub/fonts/icons/icons.woff) format('woff'),url(../../pub/fonts/icons/icons.ttf) format('truetype'),url(../../pub/fonts/icons/icons.svg#Icons) format('svg');font-weight:400;font-style:normal}[class*=icon-]{display:inline-block;line-height:1}[class*=icon-]:after{font-family:Icons}.icon-success-thick:after{content:'\e600'}.icon-success:after{content:'\e601'}.icon-collapse:after{content:'\e602'}.icon-failed-thick:after{content:'\e603'}.icon-failed:after{content:'\e604'}.icon-expand:after{content:'\e605'}.icon-warning:after{content:'\e606'}.icon-failed-round,.icon-success-round{border-radius:100%;color:#fff;font-size:2.5rem;height:1em;position:relative;text-align:center;width:1em}.icon-failed-round:after,.icon-success-round:after{bottom:0;font-size:.8em;left:0;position:absolute;right:0;top:.15em}.icon-success-round{background-color:#79a22e}.icon-success-round:after{content:'\e600'}.icon-failed-round{background-color:#e22626}.icon-failed-round:after{content:'\e603'}dl,ol,ul{margin-top:0}.list{margin-bottom:1em;padding-left:0}.list>li{display:block;margin-bottom:.75em;position:relative}.list>li>.icon-failed,.list>li>.icon-success{font-size:1.6em;left:-.1em;position:absolute;top:0}.list>li>.icon-success{color:#79a22e}.list>li>.icon-failed{color:#e22626}.list-item-failed,.list-item-icon,.list-item-success{padding-left:3.5rem}.list-item-failed:before,.list-item-success:before{font-family:Icons;font-size:1.6em;left:-.1em;position:absolute;top:-.2em}.list-item-success:before{color:#79a22e;content:'\e601'}.list-item-failed:before{color:#e22626;content:'\e604'}.list-definition{margin:0 0 3rem;padding:0}.list-definition>dt{clear:left;float:left}.list-definition>dd{margin-bottom:1em;margin-left:20rem}.btn-wrap{margin:0 auto}.btn-wrap .btn{width:100%}.btn{background:#e3e3e3;border:none;color:#514943;display:inline-block;font-size:1.6rem;font-weight:600;padding:.45em .5em;text-align:center}.btn:hover{background-color:#dbdbdb;color:#514943;text-decoration:none}.btn:active{background-color:#d6d6d6}.btn.disabled,.btn[disabled]{cursor:default;opacity:.5;pointer-events:none}.ie9 .btn.disabled,.ie9 .btn[disabled]{background-color:#f0f0f0;opacity:1;text-shadow:none}.btn-large{padding:.75em 1.25em}.btn-link{background-color:transparent;border:none;color:#008bdb;font-family:1.6rem;font-size:1.5rem}.btn-link:hover{background-color:transparent;color:#0fa7ff}.btn-prime{background-color:#eb5202;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,.25)}.btn-prime:hover{background-color:#f65405;background-repeat:repeat-x;background-image:-webkit-linear-gradient(left,color-stop(#e04f00 0),color-stop(#f65405 100%));background-image:linear-gradient(to right,#e04f00 0,#f65405 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e04f00', endColorstr='#f65405', GradientType=1);color:#fff}.btn-prime:active{background-color:#e04f00;background-repeat:repeat-x;background-image:-webkit-linear-gradient(left,color-stop(#f65405 0),color-stop(#e04f00 100%));background-image:linear-gradient(to right,#f65405 0,#e04f00 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f65405', endColorstr='#e04f00', GradientType=1)}.ie9 .btn-prime.disabled,.ie9 .btn-prime[disabled]{background-color:#fd6e23}.ie9 .btn-prime.disabled:active,.ie9 .btn-prime.disabled:hover,.ie9 .btn-prime[disabled]:active,.ie9 .btn-prime[disabled]:hover{background-color:#fd6e23;filter:none}.btn-secondary{background-color:#514943;color:#fff}.btn-secondary:hover{background-color:#5f564f;color:#fff}.btn-secondary:active{background-color:#574e48}.ie9 .btn-secondary.disabled,.ie9 .btn-secondary[disabled]{background-color:#514943}.ie9 .btn-secondary.disabled:active,.ie9 .btn-secondary.disabled:hover,.ie9 .btn-secondary[disabled]:active,.ie9 .btn-secondary[disabled]:hover{background-color:#514943;filter:none}[class*=btn-wrap-triangle]{overflow:hidden;position:relative}[class*=btn-wrap-triangle] .btn:after{border-style:solid;content:'';height:0;position:absolute;top:0;width:0}.btn-wrap-triangle-right{display:inline-block;padding-right:1.74rem;position:relative}.btn-wrap-triangle-right .btn{text-indent:.92rem}.btn-wrap-triangle-right .btn:after{border-color:transparent transparent transparent #e3e3e3;border-width:1.84rem 0 1.84rem 1.84rem;left:100%;margin-left:-1.74rem}.btn-wrap-triangle-right .btn:hover:after{border-left-color:#dbdbdb}.btn-wrap-triangle-right .btn:active:after{border-left-color:#d6d6d6}.btn-wrap-triangle-right .btn:not(.disabled):active,.btn-wrap-triangle-right .btn:not([disabled]):active{left:1px}.ie9 .btn-wrap-triangle-right .btn.disabled:after,.ie9 .btn-wrap-triangle-right .btn[disabled]:after{border-color:transparent transparent transparent #f0f0f0}.ie9 .btn-wrap-triangle-right .btn.disabled:active:after,.ie9 .btn-wrap-triangle-right .btn.disabled:hover:after,.ie9 .btn-wrap-triangle-right .btn[disabled]:active:after,.ie9 .btn-wrap-triangle-right .btn[disabled]:hover:after{border-left-color:#f0f0f0}.btn-wrap-triangle-right .btn-prime:after{border-color:transparent transparent transparent #eb5202}.btn-wrap-triangle-right .btn-prime:hover:after{border-left-color:#f65405}.btn-wrap-triangle-right .btn-prime:active:after{border-left-color:#e04f00}.btn-wrap-triangle-right .btn-prime:not(.disabled):active,.btn-wrap-triangle-right .btn-prime:not([disabled]):active{left:1px}.ie9 .btn-wrap-triangle-right .btn-prime.disabled:after,.ie9 .btn-wrap-triangle-right .btn-prime[disabled]:after{border-color:transparent transparent transparent #fd6e23}.ie9 .btn-wrap-triangle-right .btn-prime.disabled:active:after,.ie9 .btn-wrap-triangle-right .btn-prime.disabled:hover:after,.ie9 .btn-wrap-triangle-right .btn-prime[disabled]:active:after,.ie9 .btn-wrap-triangle-right .btn-prime[disabled]:hover:after{border-left-color:#fd6e23}.btn-wrap-triangle-left{display:inline-block;padding-left:1.74rem}.btn-wrap-triangle-left .btn{text-indent:-.92rem}.btn-wrap-triangle-left .btn:after{border-color:transparent #e3e3e3 transparent transparent;border-width:1.84rem 1.84rem 1.84rem 0;margin-right:-1.74rem;right:100%}.btn-wrap-triangle-left .btn:hover:after{border-right-color:#dbdbdb}.btn-wrap-triangle-left .btn:active:after{border-right-color:#d6d6d6}.btn-wrap-triangle-left .btn:not(.disabled):active,.btn-wrap-triangle-left .btn:not([disabled]):active{right:1px}.ie9 .btn-wrap-triangle-left .btn.disabled:after,.ie9 .btn-wrap-triangle-left .btn[disabled]:after{border-color:transparent #f0f0f0 transparent transparent}.ie9 .btn-wrap-triangle-left .btn.disabled:active:after,.ie9 .btn-wrap-triangle-left .btn.disabled:hover:after,.ie9 .btn-wrap-triangle-left .btn[disabled]:active:after,.ie9 .btn-wrap-triangle-left .btn[disabled]:hover:after{border-right-color:#f0f0f0}.btn-wrap-triangle-left .btn-prime:after{border-color:transparent #eb5202 transparent transparent}.btn-wrap-triangle-left .btn-prime:hover:after{border-right-color:#e04f00}.btn-wrap-triangle-left .btn-prime:active:after{border-right-color:#f65405}.btn-wrap-triangle-left .btn-prime:not(.disabled):active,.btn-wrap-triangle-left .btn-prime:not([disabled]):active{right:1px}.ie9 .btn-wrap-triangle-left .btn-prime.disabled:after,.ie9 .btn-wrap-triangle-left .btn-prime[disabled]:after{border-color:transparent #fd6e23 transparent transparent}.ie9 .btn-wrap-triangle-left .btn-prime.disabled:active:after,.ie9 .btn-wrap-triangle-left .btn-prime.disabled:hover:after,.ie9 .btn-wrap-triangle-left .btn-prime[disabled]:active:after,.ie9 .btn-wrap-triangle-left .btn-prime[disabled]:hover:after{border-right-color:#fd6e23}.btn-expand{background-color:transparent;border:none;color:#303030;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;padding:0;position:relative}.btn-expand.expanded:after{border-color:transparent transparent #303030;border-width:0 .285em .36em}.btn-expand.expanded:hover:after{border-color:transparent transparent #3d3d3d}.btn-expand:hover{background-color:transparent;border:none;color:#3d3d3d}.btn-expand:hover:after{border-color:#3d3d3d transparent transparent}.btn-expand:after{border-color:#303030 transparent transparent;border-style:solid;border-width:.36em .285em 0;content:'';height:0;left:100%;margin-left:.5em;margin-top:-.18em;position:absolute;top:50%;width:0}[class*=col-] .form-el-input,[class*=col-] .form-el-select{width:100%}.form-fieldset{border:none;margin:0 0 1em;padding:0}.form-row{margin-bottom:2.2rem}.form-row .form-row{margin-bottom:.4rem}.form-row .form-label{display:block;font-weight:600;padding:.6rem 2.1em 0 0;text-align:right}.form-row .form-label.required{position:relative}.form-row .form-label.required:after{color:#eb5202;content:'*';font-size:1.15em;position:absolute;right:.7em;top:.5em}.form-row .form-el-checkbox+.form-label:before,.form-row .form-el-radio+.form-label:before{top:.7rem}.form-row .form-el-checkbox+.form-label:after,.form-row .form-el-radio+.form-label:after{top:1.1rem}input:not([disabled]):focus,textarea:not([disabled]):focus{box-shadow:none}.form-el-input{border:1px solid #adadad;border-radius:2px;color:#303030;padding:.35em .55em .5em}.form-el-input:hover{border-color:#949494}.form-el-input:focus{border-color:#008bdb}.form-label{margin-bottom:.5em}[class*=form-label][for]{cursor:pointer}.form-el-insider-wrap{display:table;width:100%}.form-el-insider-input{display:table-cell;width:100%}.form-el-insider{border-radius:2px;display:table-cell;vertical-align:top;padding:.43em .55em .5em 0}.form-legend,.form-legend-expand,.form-legend-light{display:block;margin:0}.form-legend,.form-legend-expand{margin-bottom:2.5em;padding-top:1.5em;font-weight:600;font-size:1.25em}.form-legend{width:100%;border-top:1px solid #ccc}.form-legend-light{margin-bottom:1.5em;font-size:1em}.form-legend-expand{transition:opacity .2s linear;cursor:pointer}.form-legend-expand:hover{opacity:.85}.form-legend-expand.expanded:after{content:'\e602'}.form-legend-expand:after{margin-left:.5em;font-weight:400;font-size:1.15em;font-family:Icons;content:'\e605';vertical-align:sub}.form-el-checkbox,.form-el-radio{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.form-el-checkbox.disabled+.form-label,.form-el-checkbox.disabled+.form-label:before,.form-el-checkbox[disabled]+.form-label,.form-el-checkbox[disabled]+.form-label:before,.form-el-radio.disabled+.form-label,.form-el-radio.disabled+.form-label:before,.form-el-radio[disabled]+.form-label,.form-el-radio[disabled]+.form-label:before{cursor:default;opacity:.5;pointer-events:none}.form-el-checkbox:not(.disabled)+.form-label:hover:before,.form-el-checkbox:not([disabled])+.form-label:hover:before,.form-el-radio:not(.disabled)+.form-label:hover:before,.form-el-radio:not([disabled])+.form-label:hover:before{border-color:#514943}.form-el-checkbox+.form-label,.form-el-radio+.form-label{font-weight:400;padding-left:2em;padding-right:0;position:relative;text-align:left;transition:border-color .1s linear}.form-el-checkbox+.form-label:before,.form-el-radio+.form-label:before{border:1px solid;content:'';left:0;position:absolute;top:.1rem;transition:border-color .1s linear}.form-el-checkbox+.form-label:before{border-color:#adadad;border-radius:2px;height:1.4rem;line-height:1;width:1.4rem}.form-el-checkbox:checked+.form-label::before{content:'\e600';font-family:Icons}.form-el-radio+.form-label:before{background-color:#fff;border:1px solid #adadad;border-radius:100%;height:1.6rem;width:1.6rem}.form-el-radio+.form-label:after{background:0 0;border:.5rem solid transparent;border-radius:100%;content:'';height:0;left:.4rem;position:absolute;top:.5rem;transition:background .3s linear;width:0}.form-el-radio:checked+.form-label{cursor:default}.form-el-radio:checked+.form-label:after{border-color:#514943}.form-select-label{border:1px solid #adadad;border-radius:2px;color:#303030;cursor:pointer;display:block;overflow:hidden;position:relative}.form-select-label:hover,.form-select-label:hover:after{border-color:#949494}.form-select-label:active,.form-select-label:active:after,.form-select-label:focus,.form-select-label:focus:after{border-color:#008bdb}.form-select-label:after{background:#e3e3e3;border-left:1px solid #adadad;bottom:0;content:'';position:absolute;right:0;top:0;width:2.36em;z-index:-2}.ie9 .form-select-label:after{display:none}.form-select-label:before{border-color:#303030 transparent transparent;border-style:solid;border-width:5px 4px 0;content:'';height:0;margin-right:-4px;margin-top:-2.5px;position:absolute;right:1.18em;top:50%;width:0;z-index:-1}.ie9 .form-select-label:before{display:none}.form-select-label .form-el-select{background:0 0;border:none;border-radius:0;content:'';display:block;margin:0;padding:.35em calc(2.36em + 10%) .5em .55em;width:110%}.ie9 .form-select-label .form-el-select{padding-right:.55em;width:100%}.form-el-select{background:#fff;border:1px solid #adadad;border-radius:2px;color:#303030;display:block;padding:.35em .55em}.multiselect-custom{position:relative;height:45.2rem;border:1px solid #adadad;overflow:auto;margin:0 0 1.5rem}.multiselect-custom ul{margin:0;padding:0;list-style:none;min-width:29rem}.multiselect-custom .item{padding:1rem 1.4rem}.multiselect-custom .selected{background-color:#e0f6fe}.multiselect-custom .form-label{margin-bottom:0}[class*=form-el-].invalid{border-color:#e22626}[class*=form-el-].invalid+.error-container{display:block}.error-container{background-color:#fff8d6;border:1px solid #ee7d7d;border-radius:2px;color:#514943;display:none;font-size:1.19rem;margin-top:.2rem;padding:.4235em .6655em .605em}.check-result-message{margin-left:.5em;min-height:3.68rem;-webkit-align-items:center;-ms-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex}.check-result-text{margin-left:.5em}.pseudo-table{display:table}.pseudo-td{display:table-cell}.alert{margin-bottom:3.5rem;padding:2.5rem;-webkit-align-items:center;-ms-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex}.alert .spinner{min-width:1em}.ie9 .alert .spinner{float:left}.alert p:last-child{margin-bottom:0}.alert-info{background-color:#fafafa;border:1px solid #ccc}.alert-warning{background-color:#fff8d6;border:1px solid #fff8d6}.alert-icon{margin-right:1.5rem}.ie9 .alert-icon{float:left}[class*=icon-].alert-icon{font-size:3.8rem;min-width:3.8rem}.alert-text{margin-bottom:0}.alert-text~.alert-text{margin-top:1em}.ie9 .alert-text{display:block;margin-left:5.3rem;margin-top:1rem}.container{display:block;margin:0 auto 4rem;max-width:100rem;padding:0 2rem}.row{margin-left:0;margin-right:0}.col-l-1,.col-l-10,.col-l-11,.col-l-12,.col-l-2,.col-l-3,.col-l-4,.col-l-5,.col-l-6,.col-l-7,.col-l-8,.col-l-9,.col-m-1,.col-m-10,.col-m-11,.col-m-12,.col-m-2,.col-m-3,.col-m-4,.col-m-5,.col-m-6,.col-m-7,.col-m-8,.col-m-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{min-height:1px;padding-left:0;padding-right:0;position:relative}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}.nav{background-color:#f8f8f8;border-bottom:1px solid #e3e3e3;border-top:1px solid #e3e3e3;display:none;padding:2.2rem 1.5rem 0 0}.nav .btn-group,.nav-bar-outer-actions{float:right;margin-bottom:1.7rem}.nav .btn-group .btn-wrap,.nav-bar-outer-actions .btn-wrap{float:right;margin-left:.5rem;margin-right:.5rem}.nav-bar-outer-actions{margin-top:-10.6rem;padding-right:1.5rem}.btn-wrap-try-again{width:9.5rem}.btn-wrap-next,.btn-wrap-prev{width:8.5rem}.nav-bar{counter-reset:i;float:left;margin:0 1rem 1.7rem 0;padding:0;position:relative;white-space:nowrap}.nav-bar:before{background-color:#d4d4d4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,#d1d1d1 0,#d4d4d4 100%);background-image:linear-gradient(to bottom,#d1d1d1 0,#d4d4d4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d1d1d1', endColorstr='#d4d4d4', GradientType=0);border-bottom:1px solid #d9d9d9;border-top:1px solid #bfbfbf;content:'';height:.8rem;left:5.15rem;position:absolute;right:5.15rem;top:.7rem}.nav-bar>li{display:inline-block;font-size:0;position:relative;vertical-align:top;width:10.3rem}.nav-bar>li:first-child:after{display:none}.nav-bar>li:after{background-color:#514943;content:'';height:.5rem;left:calc(-50% + .25rem);position:absolute;right:calc(50% + .7rem);top:.9rem}.nav-bar>li.disabled:before{bottom:0;content:'';left:0;position:absolute;right:0;top:0;z-index:1}.nav-bar>li.active~li:after{display:none}.nav-bar>li.active~li a:after{background-color:transparent;border-color:transparent;color:#a6a6a6}.nav-bar>li.active a{color:#000}.nav-bar>li.active a:hover{cursor:default}.nav-bar>li.active a:after{background-color:#fff;content:''}.nav-bar a{color:#514943;display:block;font-size:1.2rem;font-weight:600;line-height:1.2;overflow:hidden;padding:3rem .5em 0;position:relative;text-align:center;text-overflow:ellipsis}.nav-bar a:hover{text-decoration:none}.nav-bar a:after{background-color:#514943;border:.4rem solid #514943;border-radius:100%;color:#fff;content:counter(i);counter-increment:i;height:.7rem;left:50%;line-height:.6;margin-left:-.8rem;position:absolute;right:auto;text-align:center;top:.4rem;width:.7rem}.nav-bar a:before{background-color:#d6d6d6;border:1px solid transparent;border-bottom-color:#d9d9d9;border-radius:100%;border-top-color:#bfbfbf;content:'';height:2.1rem;left:50%;line-height:1;margin-left:-1.2rem;position:absolute;top:0;width:2.1rem}.tooltip{display:block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.19rem;font-weight:400;line-height:1.4;opacity:0;position:absolute;visibility:visible;z-index:10}.tooltip.in{opacity:.9}.tooltip.top{margin-top:-4px;padding:8px 0}.tooltip.right{margin-left:4px;padding:0 8px}.tooltip.bottom{margin-top:4px;padding:8px 0}.tooltip.left{margin-left:-4px;padding:0 8px}.tooltip-inner{background-color:#fff;border:1px solid #adadad;border-radius:0;box-shadow:1px 1px 1px #ccc;color:#41362f;max-width:20rem;padding:.5em 1em;text-decoration:none}.tooltip-arrow,.tooltip-arrow:after{border:solid transparent;height:0;position:absolute;width:0}.tooltip-arrow:after{content:'';position:absolute}.tooltip.top .tooltip-arrow,.tooltip.top .tooltip-arrow:after{border-top-color:#949494;border-width:8px 8px 0;bottom:0;left:50%;margin-left:-8px}.tooltip.top-left .tooltip-arrow,.tooltip.top-left .tooltip-arrow:after{border-top-color:#949494;border-width:8px 8px 0;bottom:0;margin-bottom:-8px;right:8px}.tooltip.top-right .tooltip-arrow,.tooltip.top-right .tooltip-arrow:after{border-top-color:#949494;border-width:8px 8px 0;bottom:0;left:8px;margin-bottom:-8px}.tooltip.right .tooltip-arrow,.tooltip.right .tooltip-arrow:after{border-right-color:#949494;border-width:8px 8px 8px 0;left:1px;margin-top:-8px;top:50%}.tooltip.right .tooltip-arrow:after{border-right-color:#fff;border-width:6px 7px 6px 0;margin-left:0;margin-top:-6px}.tooltip.left .tooltip-arrow,.tooltip.left .tooltip-arrow:after{border-left-color:#949494;border-width:8px 0 8px 8px;margin-top:-8px;right:0;top:50%}.tooltip.bottom .tooltip-arrow,.tooltip.bottom .tooltip-arrow:after{border-bottom-color:#949494;border-width:0 8px 8px;left:50%;margin-left:-8px;top:0}.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow:after{border-bottom-color:#949494;border-width:0 8px 8px;margin-top:-8px;right:8px;top:0}.tooltip.bottom-right .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow:after{border-bottom-color:#949494;border-width:0 8px 8px;left:8px;margin-top:-8px;top:0}.password-strength{display:block;margin:0 -.3rem 1em;white-space:nowrap}.password-strength.password-strength-to-short .password-strength-item:first-child{background-color:#e22626}.password-strength.password-strength-weak .password-strength-item:first-child,.password-strength.password-strength-weak .password-strength-item:first-child+.password-strength-item{background-color:#ef672f}.password-strength.password-strength-good .password-strength-item:first-child,.password-strength.password-strength-good .password-strength-item:first-child+.password-strength-item,.password-strength.password-strength-good .password-strength-item:first-child+.password-strength-item+.password-strength-item,.password-strength.password-strength-strong .password-strength-item{background-color:#79a22e}.password-strength .password-strength-item{background-color:#ccc;display:inline-block;font-size:0;height:1.4rem;margin-right:.3rem;width:calc(25% - .6rem)}@-webkit-keyframes progress-bar-stripes{from{background-position:4rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:4rem 0}to{background-position:0 0}}.progress{background-color:#fafafa;border:1px solid #ccc;height:3rem;margin-bottom:3rem;overflow:hidden}.progress-bar{background-color:#79a22e;color:#fff;float:left;font-size:1.19rem;height:100%;line-height:3rem;text-align:center;transition:width .6s ease;width:0}.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.spinner{display:inline-block;font-size:4rem;height:1em;margin-right:1.5rem;position:relative;width:1em}@-moz-keyframes fade{0%{background-color:#514943}100%{background-color:#fff}}@-webkit-keyframes fade{0%{background-color:#514943}100%{background-color:#fff}}@-ms-keyframes fade{0%{background-color:#514943}100%{background-color:#fff}}@keyframes fade{0%{background-color:#514943}100%{background-color:#fff}}.spinner>span:nth-child(1){-webkit-animation-delay:.27s;-moz-animation-delay:.27s;-ms-animation-delay:.27s;animation-delay:.27s;-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}.spinner>span:nth-child(2){-webkit-animation-delay:.36s;-moz-animation-delay:.36s;-ms-animation-delay:.36s;animation-delay:.36s;-webkit-transform:rotate(-270deg);-moz-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}.spinner>span:nth-child(3){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;-ms-animation-delay:.45s;animation-delay:.45s;-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}.spinner>span:nth-child(4){-webkit-animation-delay:.54s;-moz-animation-delay:.54s;-ms-animation-delay:.54s;animation-delay:.54s;-webkit-transform:rotate(-180deg);-moz-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.spinner>span:nth-child(5){-webkit-animation-delay:.63s;-moz-animation-delay:.63s;-ms-animation-delay:.63s;animation-delay:.63s;-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}.spinner>span:nth-child(6){-webkit-animation-delay:.72s;-moz-animation-delay:.72s;-ms-animation-delay:.72s;animation-delay:.72s;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.spinner>span:nth-child(7){-webkit-animation-delay:.81s;-moz-animation-delay:.81s;-ms-animation-delay:.81s;animation-delay:.81s;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.spinner>span:nth-child(8){-webkit-animation-delay:.9;-moz-animation-delay:.9;-ms-animation-delay:.9;animation-delay:.9;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.spinner>span{-webkit-animation-direction:linear;-moz-animation-direction:linear;-ms-animation-direction:linear;animation-direction:linear;-webkit-animation-duration:.72s;-moz-animation-duration:.72s;-ms-animation-duration:.72s;animation-duration:.72s;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:fade;-moz-animation-name:fade;-ms-animation-name:fade;animation-name:fade;-webkit-transform:scale(0.4);-moz-transform:scale(0.4);-ms-transform:scale(0.4);transform:scale(0.4);background-color:#fff;border-radius:6px;clip:rect(0 .28571429em .1em 0);height:.1em;margin-top:.5em;position:absolute;width:1em}.ie9 .spinner{background:url(../../pub/images/ajax-loader.gif) center no-repeat}.ie9 .spinner>span{display:none}.main{padding-bottom:2rem;padding-top:3rem}.header{display:none}.header .logo{float:left;height:4.1rem;width:3.5rem}.header-title{font-size:2.8rem;letter-spacing:.02em;margin:2.5rem 0 3.5rem 5rem}.page-title{font-size:2rem;margin-bottom:1.3em}.accent-box{margin-bottom:2rem}.accent-box .btn-prime{margin-top:1.5rem}.page-landing{margin:7.6% auto 0;max-width:44rem;text-align:center}.page-landing .logo{height:5.6rem;margin-bottom:2rem;width:19.2rem}.page-landing .text-version{margin-bottom:3rem}.page-landing .text-welcome{margin-bottom:6.5rem}.page-landing .text-terms{margin-bottom:2.5rem;text-align:center}.page-landing .btn-submit{margin-bottom:20px}.page-license .license-text{margin-bottom:2rem}.page-license .page-license-footer{text-align:right}.rediness-check-item{margin-bottom:4rem}.readiness-check-title{font-size:1.4rem;font-weight:700;margin-bottom:.1rem;margin-left:7.5rem}.readiness-check-content{margin-left:7.5rem;margin-right:22rem}.readiness-check-content .readiness-check-title{margin-left:0}.readiness-check-content .list{margin-top:-.3rem}.rediness-check-side{float:right;padding-left:2.4rem;width:22rem}.rediness-check-side .side-title{margin-bottom:0}.readiness-check-icon{float:left;margin-left:2rem;margin-top:.7rem}.page-web-configuration .form-el-insider-wrap{width:auto}.page-web-configuration .form-el-insider{width:15.4rem}.page-web-configuration .form-el-insider-input .form-el-input{width:16.5rem}.customize-your-store .customize-your-store-default .legend{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.customize-your-store .advanced-modules-count,.customize-your-store .advanced-modules-select{padding-left:1.5rem}.customize-your-store .customize-your-store-advanced{min-width:0}.content-install{margin-bottom:2rem}.console{border:1px solid #ccc;font-family:'Courier New',Courier,monospace;font-weight:300;margin:1rem 0 2rem;max-height:20rem;overflow-y:auto;padding:1.5rem 2rem 2rem}.console .text-danger{color:#e22626}.console .text-success{color:#090}.console .hidden{display:none}.content-success .btn-prime{margin-top:1.5rem}.jumbo-title{font-size:3.6rem}.jumbo-title .jumbo-icon{font-size:3.8rem;margin-right:.25em;position:relative;top:.15em}@media all and (max-width:1047px){.nav{padding-bottom:5.38rem;padding-left:1.5rem;text-align:center}.nav-bar{display:inline-block;float:none;margin-right:0;vertical-align:top}.nav .btn-group,.nav-bar-outer-actions{display:inline-block;float:none;margin-top:-8.48rem;text-align:center;vertical-align:top;width:100%}.nav-bar-outer-actions{padding-right:0}.nav-bar-outer-actions .outer-actions-inner-wrap{display:inline-block}}@media all and (min-width:768px){html{margin-left:calc(100vw - 100%);margin-right:0;overflow:auto}.col-m-1,.col-m-10,.col-m-11,.col-m-12,.col-m-2,.col-m-3,.col-m-4,.col-m-5,.col-m-6,.col-m-7,.col-m-8,.col-m-9{float:left}.col-m-12{width:100%}.col-m-11{width:91.66666667%}.col-m-10{width:83.33333333%}.col-m-9{width:75%}.col-m-8{width:66.66666667%}.col-m-7{width:58.33333333%}.col-m-6{width:50%}.col-m-5{width:41.66666667%}.col-m-4{width:33.33333333%}.col-m-3{width:25%}.col-m-2{width:16.66666667%}.col-m-1{width:8.33333333%}.col-m-pull-12{right:100%}.col-m-pull-11{right:91.66666667%}.col-m-pull-10{right:83.33333333%}.col-m-pull-9{right:75%}.col-m-pull-8{right:66.66666667%}.col-m-pull-7{right:58.33333333%}.col-m-pull-6{right:50%}.col-m-pull-5{right:41.66666667%}.col-m-pull-4{right:33.33333333%}.col-m-pull-3{right:25%}.col-m-pull-2{right:16.66666667%}.col-m-pull-1{right:8.33333333%}.col-m-pull-0{right:auto}.col-m-push-12{left:100%}.col-m-push-11{left:91.66666667%}.col-m-push-10{left:83.33333333%}.col-m-push-9{left:75%}.col-m-push-8{left:66.66666667%}.col-m-push-7{left:58.33333333%}.col-m-push-6{left:50%}.col-m-push-5{left:41.66666667%}.col-m-push-4{left:33.33333333%}.col-m-push-3{left:25%}.col-m-push-2{left:16.66666667%}.col-m-push-1{left:8.33333333%}.col-m-push-0{left:auto}.col-m-offset-12{margin-left:100%}.col-m-offset-11{margin-left:91.66666667%}.col-m-offset-10{margin-left:83.33333333%}.col-m-offset-9{margin-left:75%}.col-m-offset-8{margin-left:66.66666667%}.col-m-offset-7{margin-left:58.33333333%}.col-m-offset-6{margin-left:50%}.col-m-offset-5{margin-left:41.66666667%}.col-m-offset-4{margin-left:33.33333333%}.col-m-offset-3{margin-left:25%}.col-m-offset-2{margin-left:16.66666667%}.col-m-offset-1{margin-left:8.33333333%}.col-m-offset-0{margin-left:0}}@media all and (min-width:1048px){.col-l-1,.col-l-10,.col-l-11,.col-l-12,.col-l-2,.col-l-3,.col-l-4,.col-l-5,.col-l-6,.col-l-7,.col-l-8,.col-l-9{float:left}.col-l-12{width:100%}.col-l-11{width:91.66666667%}.col-l-10{width:83.33333333%}.col-l-9{width:75%}.col-l-8{width:66.66666667%}.col-l-7{width:58.33333333%}.col-l-6{width:50%}.col-l-5{width:41.66666667%}.col-l-4{width:33.33333333%}.col-l-3{width:25%}.col-l-2{width:16.66666667%}.col-l-1{width:8.33333333%}.col-l-pull-12{right:100%}.col-l-pull-11{right:91.66666667%}.col-l-pull-10{right:83.33333333%}.col-l-pull-9{right:75%}.col-l-pull-8{right:66.66666667%}.col-l-pull-7{right:58.33333333%}.col-l-pull-6{right:50%}.col-l-pull-5{right:41.66666667%}.col-l-pull-4{right:33.33333333%}.col-l-pull-3{right:25%}.col-l-pull-2{right:16.66666667%}.col-l-pull-1{right:8.33333333%}.col-l-pull-0{right:auto}.col-l-push-12{left:100%}.col-l-push-11{left:91.66666667%}.col-l-push-10{left:83.33333333%}.col-l-push-9{left:75%}.col-l-push-8{left:66.66666667%}.col-l-push-7{left:58.33333333%}.col-l-push-6{left:50%}.col-l-push-5{left:41.66666667%}.col-l-push-4{left:33.33333333%}.col-l-push-3{left:25%}.col-l-push-2{left:16.66666667%}.col-l-push-1{left:8.33333333%}.col-l-push-0{left:auto}.col-l-offset-12{margin-left:100%}.col-l-offset-11{margin-left:91.66666667%}.col-l-offset-10{margin-left:83.33333333%}.col-l-offset-9{margin-left:75%}.col-l-offset-8{margin-left:66.66666667%}.col-l-offset-7{margin-left:58.33333333%}.col-l-offset-6{margin-left:50%}.col-l-offset-5{margin-left:41.66666667%}.col-l-offset-4{margin-left:33.33333333%}.col-l-offset-3{margin-left:25%}.col-l-offset-2{margin-left:16.66666667%}.col-l-offset-1{margin-left:8.33333333%}.col-l-offset-0{margin-left:0}}@media all and (min-width:1440px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-12{width:100%}.col-xl-11{width:91.66666667%}.col-xl-10{width:83.33333333%}.col-xl-9{width:75%}.col-xl-8{width:66.66666667%}.col-xl-7{width:58.33333333%}.col-xl-6{width:50%}.col-xl-5{width:41.66666667%}.col-xl-4{width:33.33333333%}.col-xl-3{width:25%}.col-xl-2{width:16.66666667%}.col-xl-1{width:8.33333333%}.col-xl-pull-12{right:100%}.col-xl-pull-11{right:91.66666667%}.col-xl-pull-10{right:83.33333333%}.col-xl-pull-9{right:75%}.col-xl-pull-8{right:66.66666667%}.col-xl-pull-7{right:58.33333333%}.col-xl-pull-6{right:50%}.col-xl-pull-5{right:41.66666667%}.col-xl-pull-4{right:33.33333333%}.col-xl-pull-3{right:25%}.col-xl-pull-2{right:16.66666667%}.col-xl-pull-1{right:8.33333333%}.col-xl-pull-0{right:auto}.col-xl-push-12{left:100%}.col-xl-push-11{left:91.66666667%}.col-xl-push-10{left:83.33333333%}.col-xl-push-9{left:75%}.col-xl-push-8{left:66.66666667%}.col-xl-push-7{left:58.33333333%}.col-xl-push-6{left:50%}.col-xl-push-5{left:41.66666667%}.col-xl-push-4{left:33.33333333%}.col-xl-push-3{left:25%}.col-xl-push-2{left:16.66666667%}.col-xl-push-1{left:8.33333333%}.col-xl-push-0{left:auto}.col-xl-offset-12{margin-left:100%}.col-xl-offset-11{margin-left:91.66666667%}.col-xl-offset-10{margin-left:83.33333333%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-8{margin-left:66.66666667%}.col-xl-offset-7{margin-left:58.33333333%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-5{margin-left:41.66666667%}.col-xl-offset-4{margin-left:33.33333333%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-2{margin-left:16.66666667%}.col-xl-offset-1{margin-left:8.33333333%}.col-xl-offset-0{margin-left:0}}@media all and (max-width:767px){.list-definition>dt{float:none}.list-definition>dd{margin-left:0}.form-row .form-label{text-align:left}.form-row .form-label.required:after{position:static}.nav{padding-bottom:0;padding-left:0;padding-right:0}.nav-bar-outer-actions{margin-top:0}.nav-bar{display:block;margin-bottom:0;margin-left:auto;margin-right:auto;width:30.9rem}.nav-bar:before{display:none}.nav-bar>li{float:left;min-height:9rem}.nav-bar>li:after{display:none}.nav-bar>li:nth-child(4n){clear:both}.nav-bar a{line-height:1.4}.tooltip{display:none!important}.readiness-check-content{margin-right:2rem}.form-el-insider,.form-el-insider-wrap,.page-web-configuration .form-el-insider-input,.page-web-configuration .form-el-insider-input .form-el-input{display:block;width:100%}}@media all and (max-width:479px){.nav-bar{width:23.175rem}.nav-bar>li{width:7.725rem}.nav .btn-group .btn-wrap-try-again,.nav-bar-outer-actions .btn-wrap-try-again{clear:both;display:block;float:none;margin-left:auto;margin-right:auto;margin-top:1rem;padding-top:1rem}}
\ No newline at end of file
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box}:focus{box-shadow:none;outline:0}.keyfocus :focus{box-shadow:0 0 0 1px #008bdb}embed,img,object,video{max-width:100%}.abs-clearer:after,.form-row:after,.header:after,.ie9 .alert:after,.nav:after,.row:after{content:"";display:table;clear:both}.ng-cloak{display:none!important}.hide.hide{display:none}.show.show{display:block}.text-center{text-align:center}.text-right{text-align:right}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/light/opensans-300.eot);src:url(../../pub/fonts/opensans/light/opensans-300.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/light/opensans-300.woff2) format('woff2'),url(../../pub/fonts/opensans/light/opensans-300.woff) format('woff'),url(../../pub/fonts/opensans/light/opensans-300.ttf) format('truetype'),url('../../pub/fonts/opensans/light/opensans-300.svg#Open Sans') format('svg');font-weight:300;font-style:normal}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/regular/opensans-400.eot);src:url(../../pub/fonts/opensans/regular/opensans-400.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/regular/opensans-400.woff2) format('woff2'),url(../../pub/fonts/opensans/regular/opensans-400.woff) format('woff'),url(../../pub/fonts/opensans/regular/opensans-400.ttf) format('truetype'),url('../../pub/fonts/opensans/regular/opensans-400.svg#Open Sans') format('svg');font-weight:400;font-style:normal}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/semibold/opensans-600.eot);src:url(../../pub/fonts/opensans/semibold/opensans-600.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/semibold/opensans-600.woff2) format('woff2'),url(../../pub/fonts/opensans/semibold/opensans-600.woff) format('woff'),url(../../pub/fonts/opensans/semibold/opensans-600.ttf) format('truetype'),url('../../pub/fonts/opensans/semibold/opensans-600.svg#Open Sans') format('svg');font-weight:600;font-style:normal}@font-face{font-family:'Open Sans';src:url(../../pub/fonts/opensans/bold/opensans-700.eot);src:url(../../pub/fonts/opensans/bold/opensans-700.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/opensans/bold/opensans-700.woff2) format('woff2'),url(../../pub/fonts/opensans/bold/opensans-700.woff) format('woff'),url(../../pub/fonts/opensans/bold/opensans-700.ttf) format('truetype'),url('../../pub/fonts/opensans/bold/opensans-700.svg#Open Sans') format('svg');font-weight:700;font-style:normal}html{font-size:62.5%}body{color:#303030;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:400;line-height:1.4}h1,h2,h3,h4,h5,h6{font-weight:400;margin-top:0}p{margin:0 0 1em}a{color:#008bdb;text-decoration:none}a:hover{color:#0fa7ff;text-decoration:underline}@font-face{font-family:Icons;src:url(../../pub/fonts/icons/icons.eot);src:url(../../pub/fonts/icons/icons.eot?#iefix) format('embedded-opentype'),url(../../pub/fonts/icons/icons.woff2) format('woff2'),url(../../pub/fonts/icons/icons.woff) format('woff'),url(../../pub/fonts/icons/icons.ttf) format('truetype'),url(../../pub/fonts/icons/icons.svg#Icons) format('svg');font-weight:400;font-style:normal}[class*=icon-]{display:inline-block;line-height:1}[class*=icon-]:after{font-family:Icons}.icon-success-thick:after{content:'\e600'}.icon-success:after{content:'\e601'}.icon-collapse:after{content:'\e602'}.icon-failed-thick:after{content:'\e603'}.icon-failed:after{content:'\e604'}.icon-expand:after{content:'\e605'}.icon-warning:after{content:'\e606'}.icon-failed-round,.icon-success-round{border-radius:100%;color:#fff;font-size:2.5rem;height:1em;position:relative;text-align:center;width:1em}.icon-failed-round:after,.icon-success-round:after{bottom:0;font-size:.8em;left:0;position:absolute;right:0;top:.15em}.icon-success-round{background-color:#79a22e}.icon-success-round:after{content:'\e600'}.icon-failed-round{background-color:#e22626}.icon-failed-round:after{content:'\e603'}dl,ol,ul{margin-top:0}.list{margin-bottom:1em;padding-left:0}.list>li{display:block;margin-bottom:.75em;position:relative}.list>li>.icon-failed,.list>li>.icon-success{font-size:1.6em;left:-.1em;position:absolute;top:0}.list>li>.icon-success{color:#79a22e}.list>li>.icon-failed{color:#e22626}.list-item-failed,.list-item-icon,.list-item-success{padding-left:3.5rem}.list-item-failed:before,.list-item-success:before{font-family:Icons;font-size:1.6em;left:-.1em;position:absolute;top:-.2em}.list-item-success:before{color:#79a22e;content:'\e601'}.list-item-failed:before{color:#e22626;content:'\e604'}.list-definition{margin:0 0 3rem;padding:0}.list-definition>dt{clear:left;float:left}.list-definition>dd{margin-bottom:1em;margin-left:20rem}.btn-wrap{margin:0 auto}.btn-wrap .btn{width:100%}.btn{background:#e3e3e3;border:none;color:#514943;display:inline-block;font-size:1.6rem;font-weight:600;padding:.45em .5em;text-align:center}.btn:hover{background-color:#dbdbdb;color:#514943;text-decoration:none}.btn:active{background-color:#d6d6d6}.btn.disabled,.btn[disabled]{cursor:default;opacity:.5;pointer-events:none}.ie9 .btn.disabled,.ie9 .btn[disabled]{background-color:#f0f0f0;opacity:1;text-shadow:none}.btn-large{padding:.75em 1.25em}.btn-link{background-color:transparent;border:none;color:#008bdb;font-family:1.6rem;font-size:1.5rem}.btn-link:hover{background-color:transparent;color:#0fa7ff}.btn-prime{background-color:#eb5202;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,.25)}.btn-prime:hover{background-color:#f65405;background-repeat:repeat-x;background-image:linear-gradient(to right,#e04f00 0,#f65405 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e04f00', endColorstr='#f65405', GradientType=1);color:#fff}.btn-prime:active{background-color:#e04f00;background-repeat:repeat-x;background-image:linear-gradient(to right,#f65405 0,#e04f00 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f65405', endColorstr='#e04f00', GradientType=1)}.ie9 .btn-prime.disabled,.ie9 .btn-prime[disabled]{background-color:#fd6e23}.ie9 .btn-prime.disabled:active,.ie9 .btn-prime.disabled:hover,.ie9 .btn-prime[disabled]:active,.ie9 .btn-prime[disabled]:hover{background-color:#fd6e23;-webkit-filter:none;filter:none}.btn-secondary{background-color:#514943;color:#fff}.btn-secondary:hover{background-color:#5f564f;color:#fff}.btn-secondary:active{background-color:#574e48}.ie9 .btn-secondary.disabled,.ie9 .btn-secondary[disabled]{background-color:#514943}.ie9 .btn-secondary.disabled:active,.ie9 .btn-secondary.disabled:hover,.ie9 .btn-secondary[disabled]:active,.ie9 .btn-secondary[disabled]:hover{background-color:#514943;-webkit-filter:none;filter:none}[class*=btn-wrap-triangle]{overflow:hidden;position:relative}[class*=btn-wrap-triangle] .btn:after{border-style:solid;content:'';height:0;position:absolute;top:0;width:0}.btn-wrap-triangle-right{display:inline-block;padding-right:1.74rem;position:relative}.btn-wrap-triangle-right .btn{text-indent:.92rem}.btn-wrap-triangle-right .btn:after{border-color:transparent transparent transparent #e3e3e3;border-width:1.84rem 0 1.84rem 1.84rem;left:100%;margin-left:-1.74rem}.btn-wrap-triangle-right .btn:hover:after{border-left-color:#dbdbdb}.btn-wrap-triangle-right .btn:active:after{border-left-color:#d6d6d6}.btn-wrap-triangle-right .btn:not(.disabled):active,.btn-wrap-triangle-right .btn:not([disabled]):active{left:1px}.ie9 .btn-wrap-triangle-right .btn.disabled:after,.ie9 .btn-wrap-triangle-right .btn[disabled]:after{border-color:transparent transparent transparent #f0f0f0}.ie9 .btn-wrap-triangle-right .btn.disabled:active:after,.ie9 .btn-wrap-triangle-right .btn.disabled:hover:after,.ie9 .btn-wrap-triangle-right .btn[disabled]:active:after,.ie9 .btn-wrap-triangle-right .btn[disabled]:hover:after{border-left-color:#f0f0f0}.btn-wrap-triangle-right .btn-prime:after{border-color:transparent transparent transparent #eb5202}.btn-wrap-triangle-right .btn-prime:hover:after{border-left-color:#f65405}.btn-wrap-triangle-right .btn-prime:active:after{border-left-color:#e04f00}.btn-wrap-triangle-right .btn-prime:not(.disabled):active,.btn-wrap-triangle-right .btn-prime:not([disabled]):active{left:1px}.ie9 .btn-wrap-triangle-right .btn-prime.disabled:after,.ie9 .btn-wrap-triangle-right .btn-prime[disabled]:after{border-color:transparent transparent transparent #fd6e23}.ie9 .btn-wrap-triangle-right .btn-prime.disabled:active:after,.ie9 .btn-wrap-triangle-right .btn-prime.disabled:hover:after,.ie9 .btn-wrap-triangle-right .btn-prime[disabled]:active:after,.ie9 .btn-wrap-triangle-right .btn-prime[disabled]:hover:after{border-left-color:#fd6e23}.btn-wrap-triangle-left{display:inline-block;padding-left:1.74rem}.btn-wrap-triangle-left .btn{text-indent:-.92rem}.btn-wrap-triangle-left .btn:after{border-color:transparent #e3e3e3 transparent transparent;border-width:1.84rem 1.84rem 1.84rem 0;margin-right:-1.74rem;right:100%}.btn-wrap-triangle-left .btn:hover:after{border-right-color:#dbdbdb}.btn-wrap-triangle-left .btn:active:after{border-right-color:#d6d6d6}.btn-wrap-triangle-left .btn:not(.disabled):active,.btn-wrap-triangle-left .btn:not([disabled]):active{right:1px}.ie9 .btn-wrap-triangle-left .btn.disabled:after,.ie9 .btn-wrap-triangle-left .btn[disabled]:after{border-color:transparent #f0f0f0 transparent transparent}.ie9 .btn-wrap-triangle-left .btn.disabled:active:after,.ie9 .btn-wrap-triangle-left .btn.disabled:hover:after,.ie9 .btn-wrap-triangle-left .btn[disabled]:active:after,.ie9 .btn-wrap-triangle-left .btn[disabled]:hover:after{border-right-color:#f0f0f0}.btn-wrap-triangle-left .btn-prime:after{border-color:transparent #eb5202 transparent transparent}.btn-wrap-triangle-left .btn-prime:hover:after{border-right-color:#e04f00}.btn-wrap-triangle-left .btn-prime:active:after{border-right-color:#f65405}.btn-wrap-triangle-left .btn-prime:not(.disabled):active,.btn-wrap-triangle-left .btn-prime:not([disabled]):active{right:1px}.ie9 .btn-wrap-triangle-left .btn-prime.disabled:after,.ie9 .btn-wrap-triangle-left .btn-prime[disabled]:after{border-color:transparent #fd6e23 transparent transparent}.ie9 .btn-wrap-triangle-left .btn-prime.disabled:active:after,.ie9 .btn-wrap-triangle-left .btn-prime.disabled:hover:after,.ie9 .btn-wrap-triangle-left .btn-prime[disabled]:active:after,.ie9 .btn-wrap-triangle-left .btn-prime[disabled]:hover:after{border-right-color:#fd6e23}.btn-expand{background-color:transparent;border:none;color:#303030;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;padding:0;position:relative}.btn-expand.expanded:after{border-color:transparent transparent #303030;border-width:0 .285em .36em}.btn-expand.expanded:hover:after{border-color:transparent transparent #3d3d3d}.btn-expand:hover{background-color:transparent;border:none;color:#3d3d3d}.btn-expand:hover:after{border-color:#3d3d3d transparent transparent}.btn-expand:after{border-color:#303030 transparent transparent;border-style:solid;border-width:.36em .285em 0;content:'';height:0;left:100%;margin-left:.5em;margin-top:-.18em;position:absolute;top:50%;width:0}[class*=col-] .form-el-input,[class*=col-] .form-el-select{width:100%}.form-fieldset{border:none;margin:0 0 1em;padding:0}.form-row{margin-bottom:2.2rem}.form-row .form-row{margin-bottom:.4rem}.form-row .form-label{display:block;font-weight:600;padding:.6rem 2.1em 0 0;text-align:right}.form-row .form-label.required{position:relative}.form-row .form-label.required:after{color:#eb5202;content:'*';font-size:1.15em;position:absolute;right:.7em;top:.5em}.form-row .form-el-checkbox+.form-label:before,.form-row .form-el-radio+.form-label:before{top:.7rem}.form-row .form-el-checkbox+.form-label:after,.form-row .form-el-radio+.form-label:after{top:1.1rem}input:not([disabled]):focus,textarea:not([disabled]):focus{box-shadow:none}.form-el-input{border:1px solid #adadad;border-radius:2px;color:#303030;padding:.35em .55em .5em}.form-el-input:hover{border-color:#949494}.form-el-input:focus{border-color:#008bdb}.form-label{margin-bottom:.5em}[class*=form-label][for]{cursor:pointer}.form-el-insider-wrap{display:table;width:100%}.form-el-insider-input{display:table-cell;width:100%}.form-el-insider{border-radius:2px;display:table-cell;vertical-align:top;padding:.43em .55em .5em 0}.form-legend,.form-legend-expand,.form-legend-light{display:block;margin:0}.form-legend,.form-legend-expand{margin-bottom:2.5em;padding-top:1.5em;font-weight:600;font-size:1.25em}.form-legend{width:100%;border-top:1px solid #ccc}.form-legend-light{margin-bottom:1.5em;font-size:1em}.form-legend-expand{transition:opacity .2s linear;cursor:pointer}.form-legend-expand:hover{opacity:.85}.form-legend-expand.expanded:after{content:'\e602'}.form-legend-expand:after{margin-left:.5em;font-weight:400;font-size:1.15em;font-family:Icons;content:'\e605';vertical-align:sub}.form-el-checkbox,.form-el-radio{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.form-el-checkbox.disabled+.form-label,.form-el-checkbox.disabled+.form-label:before,.form-el-checkbox[disabled]+.form-label,.form-el-checkbox[disabled]+.form-label:before,.form-el-radio.disabled+.form-label,.form-el-radio.disabled+.form-label:before,.form-el-radio[disabled]+.form-label,.form-el-radio[disabled]+.form-label:before{cursor:default;opacity:.5;pointer-events:none}.form-el-checkbox:not(.disabled)+.form-label:hover:before,.form-el-checkbox:not([disabled])+.form-label:hover:before,.form-el-radio:not(.disabled)+.form-label:hover:before,.form-el-radio:not([disabled])+.form-label:hover:before{border-color:#514943}.form-el-checkbox+.form-label,.form-el-radio+.form-label{font-weight:400;padding-left:2em;padding-right:0;position:relative;text-align:left;transition:border-color .1s linear}.form-el-checkbox+.form-label:before,.form-el-radio+.form-label:before{border:1px solid;content:'';left:0;position:absolute;top:.1rem;transition:border-color .1s linear}.form-el-checkbox+.form-label:before{border-color:#adadad;border-radius:2px;height:1.4rem;line-height:1;width:1.4rem}.form-el-checkbox:checked+.form-label::before{content:'\e600';font-family:Icons}.form-el-radio+.form-label:before{background-color:#fff;border:1px solid #adadad;border-radius:100%;height:1.6rem;width:1.6rem}.form-el-radio+.form-label:after{background:0 0;border:.5rem solid transparent;border-radius:100%;content:'';height:0;left:.4rem;position:absolute;top:.5rem;transition:background .3s linear;width:0}.form-el-radio:checked+.form-label{cursor:default}.form-el-radio:checked+.form-label:after{border-color:#514943}.form-select-label{border:1px solid #adadad;border-radius:2px;color:#303030;cursor:pointer;display:block;overflow:hidden;position:relative}.form-select-label:hover,.form-select-label:hover:after{border-color:#949494}.form-select-label:active,.form-select-label:active:after,.form-select-label:focus,.form-select-label:focus:after{border-color:#008bdb}.form-select-label:after{background:#e3e3e3;border-left:1px solid #adadad;bottom:0;content:'';position:absolute;right:0;top:0;width:2.36em;z-index:-2}.ie9 .form-select-label:after{display:none}.form-select-label:before{border-color:#303030 transparent transparent;border-style:solid;border-width:5px 4px 0;content:'';height:0;margin-right:-4px;margin-top:-2.5px;position:absolute;right:1.18em;top:50%;width:0;z-index:-1}.ie9 .form-select-label:before{display:none}.form-select-label .form-el-select{background:0 0;border:none;border-radius:0;content:'';display:block;margin:0;padding:.35em calc(2.36em + 10%) .5em .55em;width:110%}.ie9 .form-select-label .form-el-select{padding-right:.55em;width:100%}.form-el-select{background:#fff;border:1px solid #adadad;border-radius:2px;color:#303030;display:block;padding:.35em .55em}.multiselect-custom{position:relative;height:45.2rem;border:1px solid #adadad;overflow:auto;margin:0 0 1.5rem}.multiselect-custom ul{margin:0;padding:0;list-style:none;min-width:29rem}.multiselect-custom .item{padding:1rem 1.4rem}.multiselect-custom .selected{background-color:#e0f6fe}.multiselect-custom .form-label{margin-bottom:0}[class*=form-el-].invalid{border-color:#e22626}[class*=form-el-].invalid+.error-container{display:block}.error-container{background-color:#fff8d6;border:1px solid #ee7d7d;border-radius:2px;color:#514943;display:none;font-size:1.19rem;margin-top:.2rem;padding:.4235em .6655em .605em}.check-result-message{margin-left:.5em;min-height:3.68rem;-webkit-align-items:center;-ms-align-items:center;-ms-flex-align:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex}.check-result-text{margin-left:.5em}.pseudo-table{display:table}.pseudo-td{display:table-cell}.alert{margin-bottom:3.5rem;padding:2.5rem;-webkit-align-items:center;-ms-align-items:center;-ms-flex-align:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex}.alert .spinner{min-width:1em}.ie9 .alert .spinner{float:left}.alert p:last-child{margin-bottom:0}.alert-info{background-color:#fafafa;border:1px solid #ccc}.alert-warning{background-color:#fff8d6;border:1px solid #fff8d6}.alert-icon{margin-right:1.5rem}.ie9 .alert-icon{float:left}[class*=icon-].alert-icon{font-size:3.8rem;min-width:3.8rem}.alert-text{margin-bottom:0}.alert-text~.alert-text{margin-top:1em}.ie9 .alert-text{display:block;margin-left:5.3rem;margin-top:1rem}.container{display:block;margin:0 auto 4rem;max-width:100rem;padding:0 2rem}.row{margin-left:0;margin-right:0}.col-l-1,.col-l-10,.col-l-11,.col-l-12,.col-l-2,.col-l-3,.col-l-4,.col-l-5,.col-l-6,.col-l-7,.col-l-8,.col-l-9,.col-m-1,.col-m-10,.col-m-11,.col-m-12,.col-m-2,.col-m-3,.col-m-4,.col-m-5,.col-m-6,.col-m-7,.col-m-8,.col-m-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{min-height:1px;padding-left:0;padding-right:0;position:relative}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}.nav{background-color:#f8f8f8;border-bottom:1px solid #e3e3e3;border-top:1px solid #e3e3e3;display:none;padding:2.2rem 1.5rem 0 0}.nav .btn-group,.nav-bar-outer-actions{float:right;margin-bottom:1.7rem}.nav .btn-group .btn-wrap,.nav-bar-outer-actions .btn-wrap{float:right;margin-left:.5rem;margin-right:.5rem}.nav-bar-outer-actions{margin-top:-10.6rem;padding-right:1.5rem}.btn-wrap-try-again{width:9.5rem}.btn-wrap-next,.btn-wrap-prev{width:8.5rem}.nav-bar{counter-reset:i;float:left;margin:0 1rem 1.7rem 0;padding:0;position:relative;white-space:nowrap}.nav-bar:before{background-color:#d4d4d4;background-repeat:repeat-x;background-image:linear-gradient(to bottom,#d1d1d1 0,#d4d4d4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d1d1d1', endColorstr='#d4d4d4', GradientType=0);border-bottom:1px solid #d9d9d9;border-top:1px solid #bfbfbf;content:'';height:.8rem;left:5.15rem;position:absolute;right:5.15rem;top:.7rem}.nav-bar>li{display:inline-block;font-size:0;position:relative;vertical-align:top;width:10.3rem}.nav-bar>li:first-child:after{display:none}.nav-bar>li:after{background-color:#514943;content:'';height:.5rem;left:calc(-50% + .25rem);position:absolute;right:calc(50% + .7rem);top:.9rem}.nav-bar>li.disabled:before{bottom:0;content:'';left:0;position:absolute;right:0;top:0;z-index:1}.nav-bar>li.active~li:after{display:none}.nav-bar>li.active~li a:after{background-color:transparent;border-color:transparent;color:#a6a6a6}.nav-bar>li.active a{color:#000}.nav-bar>li.active a:hover{cursor:default}.nav-bar>li.active a:after{background-color:#fff;content:''}.nav-bar a{color:#514943;display:block;font-size:1.2rem;font-weight:600;line-height:1.2;overflow:hidden;padding:3rem .5em 0;position:relative;text-align:center;text-overflow:ellipsis}.nav-bar a:hover{text-decoration:none}.nav-bar a:after{background-color:#514943;border:.4rem solid #514943;border-radius:100%;color:#fff;content:counter(i);counter-increment:i;height:.7rem;left:50%;line-height:.6;margin-left:-.8rem;position:absolute;right:auto;text-align:center;top:.4rem;width:.7rem}.nav-bar a:before{background-color:#d6d6d6;border:1px solid transparent;border-bottom-color:#d9d9d9;border-radius:100%;border-top-color:#bfbfbf;content:'';height:2.1rem;left:50%;line-height:1;margin-left:-1.2rem;position:absolute;top:0;width:2.1rem}.tooltip{display:block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.19rem;font-weight:400;line-height:1.4;opacity:0;position:absolute;visibility:visible;z-index:10}.tooltip.in{opacity:.9}.tooltip.top{margin-top:-4px;padding:8px 0}.tooltip.right{margin-left:4px;padding:0 8px}.tooltip.bottom{margin-top:4px;padding:8px 0}.tooltip.left{margin-left:-4px;padding:0 8px}.tooltip-inner{background-color:#fff;border:1px solid #adadad;border-radius:0;box-shadow:1px 1px 1px #ccc;color:#41362f;max-width:20rem;padding:.5em 1em;text-decoration:none}.tooltip-arrow,.tooltip-arrow:after{border:solid transparent;height:0;position:absolute;width:0}.tooltip-arrow:after{content:'';position:absolute}.tooltip.top .tooltip-arrow,.tooltip.top .tooltip-arrow:after{border-top-color:#949494;border-width:8px 8px 0;bottom:0;left:50%;margin-left:-8px}.tooltip.top-left .tooltip-arrow,.tooltip.top-left .tooltip-arrow:after{border-top-color:#949494;border-width:8px 8px 0;bottom:0;margin-bottom:-8px;right:8px}.tooltip.top-right .tooltip-arrow,.tooltip.top-right .tooltip-arrow:after{border-top-color:#949494;border-width:8px 8px 0;bottom:0;left:8px;margin-bottom:-8px}.tooltip.right .tooltip-arrow,.tooltip.right .tooltip-arrow:after{border-right-color:#949494;border-width:8px 8px 8px 0;left:1px;margin-top:-8px;top:50%}.tooltip.right .tooltip-arrow:after{border-right-color:#fff;border-width:6px 7px 6px 0;margin-left:0;margin-top:-6px}.tooltip.left .tooltip-arrow,.tooltip.left .tooltip-arrow:after{border-left-color:#949494;border-width:8px 0 8px 8px;margin-top:-8px;right:0;top:50%}.tooltip.bottom .tooltip-arrow,.tooltip.bottom .tooltip-arrow:after{border-bottom-color:#949494;border-width:0 8px 8px;left:50%;margin-left:-8px;top:0}.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow:after{border-bottom-color:#949494;border-width:0 8px 8px;margin-top:-8px;right:8px;top:0}.tooltip.bottom-right .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow:after{border-bottom-color:#949494;border-width:0 8px 8px;left:8px;margin-top:-8px;top:0}.password-strength{display:block;margin:0 -.3rem 1em;white-space:nowrap}.password-strength.password-strength-too-short .password-strength-item:first-child,.password-strength.password-strength-weak .password-strength-item:first-child,.password-strength.password-strength-weak .password-strength-item:first-child+.password-strength-item{background-color:#e22626}.password-strength.password-strength-fair .password-strength-item:first-child,.password-strength.password-strength-fair .password-strength-item:first-child+.password-strength-item,.password-strength.password-strength-fair .password-strength-item:first-child+.password-strength-item+.password-strength-item{background-color:#ef672f}.password-strength.password-strength-good .password-strength-item:first-child,.password-strength.password-strength-good .password-strength-item:first-child+.password-strength-item,.password-strength.password-strength-good .password-strength-item:first-child+.password-strength-item+.password-strength-item,.password-strength.password-strength-good .password-strength-item:first-child+.password-strength-item+.password-strength-item+.password-strength-item,.password-strength.password-strength-strong .password-strength-item{background-color:#79a22e}.password-strength .password-strength-item{background-color:#ccc;display:inline-block;font-size:0;height:1.4rem;margin-right:.3rem;width:calc(20% - .6rem)}@-webkit-keyframes progress-bar-stripes{from{background-position:4rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:4rem 0}to{background-position:0 0}}.progress{background-color:#fafafa;border:1px solid #ccc;height:3rem;margin-bottom:3rem;overflow:hidden}.progress-bar{background-color:#79a22e;color:#fff;float:left;font-size:1.19rem;height:100%;line-height:3rem;text-align:center;transition:width .6s ease;width:0}.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.spinner{display:inline-block;font-size:4rem;height:1em;margin-right:1.5rem;position:relative;width:1em}@-webkit-keyframes fade{0%{background-color:#514943}100%{background-color:#fff}}@keyframes fade{0%{background-color:#514943}100%{background-color:#fff}}.spinner>span:nth-child(1){-webkit-animation-delay:.27s;animation-delay:.27s;-webkit-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}.spinner>span:nth-child(2){-webkit-animation-delay:.36s;animation-delay:.36s;-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}.spinner>span:nth-child(3){-webkit-animation-delay:.45s;animation-delay:.45s;-webkit-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}.spinner>span:nth-child(4){-webkit-animation-delay:.54s;animation-delay:.54s;-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.spinner>span:nth-child(5){-webkit-animation-delay:.63s;animation-delay:.63s;-webkit-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}.spinner>span:nth-child(6){-webkit-animation-delay:.72s;animation-delay:.72s;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.spinner>span:nth-child(7){-webkit-animation-delay:.81s;animation-delay:.81s;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.spinner>span:nth-child(8){-webkit-animation-delay:.9;animation-delay:.9;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.spinner>span{-webkit-animation-direction:linear;animation-direction:linear;-webkit-animation-duration:.72s;animation-duration:.72s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:fade;animation-name:fade;-webkit-transform:scale(0.4);-ms-transform:scale(0.4);transform:scale(0.4);background-color:#fff;border-radius:6px;clip:rect(0 .28571429em .1em 0);height:.1em;margin-top:.5em;position:absolute;width:1em}.ie9 .spinner{background:url(../../pub/images/ajax-loader.gif) center no-repeat}.ie9 .spinner>span{display:none}.main{padding-bottom:2rem;padding-top:3rem}.header{display:none}.header .logo{float:left;height:4.1rem;width:3.5rem}.header-title{font-size:2.8rem;letter-spacing:.02em;margin:2.5rem 0 3.5rem 5rem}.page-title{font-size:2rem;margin-bottom:1.3em}.accent-box{margin-bottom:2rem}.accent-box .btn-prime{margin-top:1.5rem}.page-landing{margin:7.6% auto 0;max-width:44rem;text-align:center}.page-landing .logo{height:5.6rem;margin-bottom:2rem;width:19.2rem}.page-landing .text-version{margin-bottom:3rem}.page-landing .text-welcome{margin-bottom:6.5rem}.page-landing .text-terms{margin-bottom:2.5rem;text-align:center}.page-landing .btn-submit{margin-bottom:20px}.page-license .license-text{margin-bottom:2rem}.page-license .page-license-footer{text-align:right}.rediness-check-item{margin-bottom:4rem}.readiness-check-title{font-size:1.4rem;font-weight:700;margin-bottom:.1rem;margin-left:7.5rem}.readiness-check-content{margin-left:7.5rem;margin-right:22rem}.readiness-check-content .readiness-check-title{margin-left:0}.readiness-check-content .list{margin-top:-.3rem}.rediness-check-side{float:right;padding-left:2.4rem;width:22rem}.rediness-check-side .side-title{margin-bottom:0}.readiness-check-icon{float:left;margin-left:2rem;margin-top:.7rem}.page-web-configuration .form-el-insider-wrap{width:auto}.page-web-configuration .form-el-insider{width:15.4rem}.page-web-configuration .form-el-insider-input .form-el-input{width:16.5rem}.customize-your-store .customize-your-store-default .legend{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.customize-your-store .advanced-modules-count,.customize-your-store .advanced-modules-select{padding-left:1.5rem}.customize-your-store .customize-your-store-advanced{min-width:0}.content-install{margin-bottom:2rem}.console{border:1px solid #ccc;font-family:'Courier New',Courier,monospace;font-weight:300;margin:1rem 0 2rem;max-height:20rem;overflow-y:auto;padding:1.5rem 2rem 2rem}.console .text-danger{color:#e22626}.console .text-success{color:#090}.console .hidden{display:none}.content-success .btn-prime{margin-top:1.5rem}.jumbo-title{font-size:3.6rem}.jumbo-title .jumbo-icon{font-size:3.8rem;margin-right:.25em;position:relative;top:.15em}@media all and (max-width:1047px){.nav{padding-bottom:5.38rem;padding-left:1.5rem;text-align:center}.nav-bar{display:inline-block;float:none;margin-right:0;vertical-align:top}.nav .btn-group,.nav-bar-outer-actions{display:inline-block;float:none;margin-top:-8.48rem;text-align:center;vertical-align:top;width:100%}.nav-bar-outer-actions{padding-right:0}.nav-bar-outer-actions .outer-actions-inner-wrap{display:inline-block}}@media all and (min-width:768px){html{margin-left:calc(100vw - 100%);margin-right:0;overflow:auto}.col-m-1,.col-m-10,.col-m-11,.col-m-12,.col-m-2,.col-m-3,.col-m-4,.col-m-5,.col-m-6,.col-m-7,.col-m-8,.col-m-9{float:left}.col-m-12{width:100%}.col-m-11{width:91.66666667%}.col-m-10{width:83.33333333%}.col-m-9{width:75%}.col-m-8{width:66.66666667%}.col-m-7{width:58.33333333%}.col-m-6{width:50%}.col-m-5{width:41.66666667%}.col-m-4{width:33.33333333%}.col-m-3{width:25%}.col-m-2{width:16.66666667%}.col-m-1{width:8.33333333%}.col-m-pull-12{right:100%}.col-m-pull-11{right:91.66666667%}.col-m-pull-10{right:83.33333333%}.col-m-pull-9{right:75%}.col-m-pull-8{right:66.66666667%}.col-m-pull-7{right:58.33333333%}.col-m-pull-6{right:50%}.col-m-pull-5{right:41.66666667%}.col-m-pull-4{right:33.33333333%}.col-m-pull-3{right:25%}.col-m-pull-2{right:16.66666667%}.col-m-pull-1{right:8.33333333%}.col-m-pull-0{right:auto}.col-m-push-12{left:100%}.col-m-push-11{left:91.66666667%}.col-m-push-10{left:83.33333333%}.col-m-push-9{left:75%}.col-m-push-8{left:66.66666667%}.col-m-push-7{left:58.33333333%}.col-m-push-6{left:50%}.col-m-push-5{left:41.66666667%}.col-m-push-4{left:33.33333333%}.col-m-push-3{left:25%}.col-m-push-2{left:16.66666667%}.col-m-push-1{left:8.33333333%}.col-m-push-0{left:auto}.col-m-offset-12{margin-left:100%}.col-m-offset-11{margin-left:91.66666667%}.col-m-offset-10{margin-left:83.33333333%}.col-m-offset-9{margin-left:75%}.col-m-offset-8{margin-left:66.66666667%}.col-m-offset-7{margin-left:58.33333333%}.col-m-offset-6{margin-left:50%}.col-m-offset-5{margin-left:41.66666667%}.col-m-offset-4{margin-left:33.33333333%}.col-m-offset-3{margin-left:25%}.col-m-offset-2{margin-left:16.66666667%}.col-m-offset-1{margin-left:8.33333333%}.col-m-offset-0{margin-left:0}}@media all and (min-width:1048px){.col-l-1,.col-l-10,.col-l-11,.col-l-12,.col-l-2,.col-l-3,.col-l-4,.col-l-5,.col-l-6,.col-l-7,.col-l-8,.col-l-9{float:left}.col-l-12{width:100%}.col-l-11{width:91.66666667%}.col-l-10{width:83.33333333%}.col-l-9{width:75%}.col-l-8{width:66.66666667%}.col-l-7{width:58.33333333%}.col-l-6{width:50%}.col-l-5{width:41.66666667%}.col-l-4{width:33.33333333%}.col-l-3{width:25%}.col-l-2{width:16.66666667%}.col-l-1{width:8.33333333%}.col-l-pull-12{right:100%}.col-l-pull-11{right:91.66666667%}.col-l-pull-10{right:83.33333333%}.col-l-pull-9{right:75%}.col-l-pull-8{right:66.66666667%}.col-l-pull-7{right:58.33333333%}.col-l-pull-6{right:50%}.col-l-pull-5{right:41.66666667%}.col-l-pull-4{right:33.33333333%}.col-l-pull-3{right:25%}.col-l-pull-2{right:16.66666667%}.col-l-pull-1{right:8.33333333%}.col-l-pull-0{right:auto}.col-l-push-12{left:100%}.col-l-push-11{left:91.66666667%}.col-l-push-10{left:83.33333333%}.col-l-push-9{left:75%}.col-l-push-8{left:66.66666667%}.col-l-push-7{left:58.33333333%}.col-l-push-6{left:50%}.col-l-push-5{left:41.66666667%}.col-l-push-4{left:33.33333333%}.col-l-push-3{left:25%}.col-l-push-2{left:16.66666667%}.col-l-push-1{left:8.33333333%}.col-l-push-0{left:auto}.col-l-offset-12{margin-left:100%}.col-l-offset-11{margin-left:91.66666667%}.col-l-offset-10{margin-left:83.33333333%}.col-l-offset-9{margin-left:75%}.col-l-offset-8{margin-left:66.66666667%}.col-l-offset-7{margin-left:58.33333333%}.col-l-offset-6{margin-left:50%}.col-l-offset-5{margin-left:41.66666667%}.col-l-offset-4{margin-left:33.33333333%}.col-l-offset-3{margin-left:25%}.col-l-offset-2{margin-left:16.66666667%}.col-l-offset-1{margin-left:8.33333333%}.col-l-offset-0{margin-left:0}}@media all and (min-width:1440px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-12{width:100%}.col-xl-11{width:91.66666667%}.col-xl-10{width:83.33333333%}.col-xl-9{width:75%}.col-xl-8{width:66.66666667%}.col-xl-7{width:58.33333333%}.col-xl-6{width:50%}.col-xl-5{width:41.66666667%}.col-xl-4{width:33.33333333%}.col-xl-3{width:25%}.col-xl-2{width:16.66666667%}.col-xl-1{width:8.33333333%}.col-xl-pull-12{right:100%}.col-xl-pull-11{right:91.66666667%}.col-xl-pull-10{right:83.33333333%}.col-xl-pull-9{right:75%}.col-xl-pull-8{right:66.66666667%}.col-xl-pull-7{right:58.33333333%}.col-xl-pull-6{right:50%}.col-xl-pull-5{right:41.66666667%}.col-xl-pull-4{right:33.33333333%}.col-xl-pull-3{right:25%}.col-xl-pull-2{right:16.66666667%}.col-xl-pull-1{right:8.33333333%}.col-xl-pull-0{right:auto}.col-xl-push-12{left:100%}.col-xl-push-11{left:91.66666667%}.col-xl-push-10{left:83.33333333%}.col-xl-push-9{left:75%}.col-xl-push-8{left:66.66666667%}.col-xl-push-7{left:58.33333333%}.col-xl-push-6{left:50%}.col-xl-push-5{left:41.66666667%}.col-xl-push-4{left:33.33333333%}.col-xl-push-3{left:25%}.col-xl-push-2{left:16.66666667%}.col-xl-push-1{left:8.33333333%}.col-xl-push-0{left:auto}.col-xl-offset-12{margin-left:100%}.col-xl-offset-11{margin-left:91.66666667%}.col-xl-offset-10{margin-left:83.33333333%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-8{margin-left:66.66666667%}.col-xl-offset-7{margin-left:58.33333333%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-5{margin-left:41.66666667%}.col-xl-offset-4{margin-left:33.33333333%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-2{margin-left:16.66666667%}.col-xl-offset-1{margin-left:8.33333333%}.col-xl-offset-0{margin-left:0}}@media all and (max-width:767px){.list-definition>dt{float:none}.list-definition>dd{margin-left:0}.form-row .form-label{text-align:left}.form-row .form-label.required:after{position:static}.nav{padding-bottom:0;padding-left:0;padding-right:0}.nav-bar-outer-actions{margin-top:0}.nav-bar{display:block;margin-bottom:0;margin-left:auto;margin-right:auto;width:30.9rem}.nav-bar:before{display:none}.nav-bar>li{float:left;min-height:9rem}.nav-bar>li:after{display:none}.nav-bar>li:nth-child(4n){clear:both}.nav-bar a{line-height:1.4}.tooltip{display:none!important}.readiness-check-content{margin-right:2rem}.form-el-insider,.form-el-insider-wrap,.page-web-configuration .form-el-insider-input,.page-web-configuration .form-el-insider-input .form-el-input{display:block;width:100%}}@media all and (max-width:479px){.nav-bar{width:23.175rem}.nav-bar>li{width:7.725rem}.nav .btn-group .btn-wrap-try-again,.nav-bar-outer-actions .btn-wrap-try-again{clear:both;display:block;float:none;margin-left:auto;margin-right:auto;margin-top:1rem;padding-top:1rem}}
\ No newline at end of file
diff --git a/setup/src/Magento/Setup/Controller/DatabaseCheck.php b/setup/src/Magento/Setup/Controller/DatabaseCheck.php
index 0f5f911bd16268575ecd44f9e5a3408d705347aa..809496c9a6a0304f12bfc5d5a9b4cd11c221d8df 100644
--- a/setup/src/Magento/Setup/Controller/DatabaseCheck.php
+++ b/setup/src/Magento/Setup/Controller/DatabaseCheck.php
@@ -47,10 +47,13 @@ class DatabaseCheck extends AbstractActionController
     public function indexAction()
     {
         $params = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
+
         try {
             $installer = $this->installerFactory->create($this->webLogger);
             $password = isset($params['password']) ? $params['password'] : '';
             $installer->checkDatabaseConnection($params['name'], $params['host'], $params['user'], $password);
+            $tablePrefix = isset($params['tablePrefix']) ? $params['tablePrefix'] : '';
+            $installer->checkDatabaseTablePrefix($tablePrefix);
             return new JsonModel(['success' => true]);
         } catch (\Exception $e) {
             return new JsonModel(['success' => false, 'error' => $e->getMessage()]);
diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php
index 6e4ed5761aa0807670519790364e68ceff0d3634..aaac7d81ac2e8f9fd85973faaa53170d317df449 100644
--- a/setup/src/Magento/Setup/Model/Installer.php
+++ b/setup/src/Magento/Setup/Model/Installer.php
@@ -875,6 +875,24 @@ class Installer
         return true;
     }
 
+    /**
+     * Check if database table prefix is valid
+     *
+     * @param string $prefix
+     * @return boolean
+     * @throws \InvalidArgumentException
+     */
+    public function checkDatabaseTablePrefix($prefix)
+    {
+        //The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_);
+        // the first character should be a letter.
+        if ($prefix !== '' && !preg_match('/^([a-zA-Z])([[:alnum:]_]+)$/', $prefix)) {
+            throw new \InvalidArgumentException('Please correct the table prefix format.');
+        }
+
+        return true;
+    }
+
     /**
      * Return messages
      *
@@ -994,6 +1012,9 @@ class Installer
             $config[DbConfig::KEY_USER],
             $config[DbConfig::KEY_PASS]
         );
+        if (isset($config[DbConfig::KEY_PREFIX])) {
+            $this->checkDatabaseTablePrefix($config[DbConfig::KEY_PREFIX]);
+        }
     }
 
     /**
diff --git a/setup/view/magento/setup/add-database.phtml b/setup/view/magento/setup/add-database.phtml
index 7f6c7e68d8fa6f6b51134429ed79a92c93b1b40e..797ba456e7882c1f889385f7463fdfdc2b809698 100644
--- a/setup/view/magento/setup/add-database.phtml
+++ b/setup/view/magento/setup/add-database.phtml
@@ -337,7 +337,7 @@
             id="dbTablePrefix"
             class="form-el-input"
             tooltip-placement="right"
-            tooltip="Enter a tracking prefix to be used for database tables created for this Magento installation. (ex: 'mg1_' )."
+            tooltip="Enter a prefix for database tables created in this installation. Use letters, numbers or underscores, and begin with a letter (Ex: ‘mg1_’)"
             tooltip-trigger="focus"
             tooltip-append-to-body="true"
             type="text"
diff --git a/setup/view/magento/setup/create-admin-account.phtml b/setup/view/magento/setup/create-admin-account.phtml
index 14ffe9061f505af3662035080142413cc50f0483..cb6b54e2c631d1b13a4bf2a181e2bf8522804275 100644
--- a/setup/view/magento/setup/create-admin-account.phtml
+++ b/setup/view/magento/setup/create-admin-account.phtml
@@ -15,10 +15,11 @@ $passwordWizard = sprintf(
             <div class=\'password-strength-item\'></div>
             <div class=\'password-strength-item\'></div>
             <div class=\'password-strength-item\'></div>
+            <div class=\'password-strength-item\'></div>
         </div>
     <p>%s</p>',
     'Password Strength:',
-    'Must be a mix of at least 7 alpha and numeric characters.(Ex.: BuyIt54).'
+    'Enter a mix of 6 or more numbers and letters. For a stronger password, include at least one small letter, big letter, and symbol (Ex: BuyIt$54).'
 );
 ?>
 
@@ -144,7 +145,7 @@ $passwordWizard = sprintf(
                 >
             <div class="error-container">
                 <span ng-show="account.adminPassword.$error.checkPassword">
-                    Please enter at least 7 alpha-numeric characters.
+                    Please enter a mix of at least 6 alpha-numeric characters.
                 </span>
                 <span ng-show="account.adminPassword.$error.required">
                     Please enter your new password.
diff --git a/setup/view/styles/components/tooltips/_password-strength.less b/setup/view/styles/components/tooltips/_password-strength.less
index 9f77e70ef6ea06ec64658afff53083d2d6e35f39..1d80388483533f0f9a3f349a5a8c0fe6fb1fed6b 100644
--- a/setup/view/styles/components/tooltips/_password-strength.less
+++ b/setup/view/styles/components/tooltips/_password-strength.less
@@ -7,7 +7,7 @@
     display: block;
     margin: 0 -.3rem 1em;
     white-space: nowrap;
-    &.password-strength-to-short {
+    &.password-strength-too-short {
         .password-strength-item {
             &:first-child {
                 background-color: @color-failed;
@@ -17,13 +17,22 @@
     &.password-strength-weak {
         .password-strength-item:first-child,
         .password-strength-item:first-child + .password-strength-item {
+            background-color: @color-failed;
+        }
+    }
+    &.password-strength-fair {
+        .password-strength-item:first-child,
+        .password-strength-item:first-child + .password-strength-item,
+        .password-strength-item:first-child + .password-strength-item + .password-strength-item {
             background-color: @color-warning;
         }
     }
     &.password-strength-good {
         .password-strength-item:first-child,
         .password-strength-item:first-child + .password-strength-item,
-        .password-strength-item:first-child + .password-strength-item + .password-strength-item {
+        .password-strength-item:first-child + .password-strength-item + .password-strength-item,
+        .password-strength-item:first-child + .password-strength-item + .password-strength-item
+            + .password-strength-item {
             background-color: @color-success;
         }
     }
@@ -38,6 +47,6 @@
         font-size: 0;
         height: 1.4rem;
         margin-right: .3rem;
-        width: ~'calc(25% - .6rem)';
+        width: ~'calc(20% - .6rem)';
     }
 }