/*

 Copyright 2019-2020 The Go Authors. All rights reserved.
 Use of this source code is governed by a BSD-style
 license that can be found in the LICENSE file.
*/
(function(){var a=document.querySelector(".js-header"),e=document.querySelectorAll(".js-headerMenuButton");e.forEach(function(b){b.addEventListener("click",function(c){c.preventDefault();a.classList.toggle("is-active");b.setAttribute("aria-expanded",a.classList.contains("is-active"))})});var d=document.querySelector(".js-scrim");d&&d.hasOwnProperty("addEventListener")&&d.addEventListener("click",function(b){b.preventDefault();a.classList.remove("is-active");e.forEach(function(c){c.setAttribute("aria-expanded",
a.classList.contains("is-active"))})})})();(function(){window.dataLayer=window.dataLayer||[];window.dataLayer.push({"gtm.start":(new Date).getTime(),event:"gtm.js"})})();
