{"version":3,"sources":["webpack://TRBOT/./js/animation/fade-up.js","webpack://TRBOT/./js/animation/slide.js","webpack://TRBOT/webpack/bootstrap","webpack://TRBOT/webpack/runtime/define property getters","webpack://TRBOT/webpack/runtime/hasOwnProperty shorthand","webpack://TRBOT/webpack/runtime/make namespace object","webpack://TRBOT/./node_modules/tabbable/dist/index.esm.js","webpack://TRBOT/./node_modules/focus-trap/dist/focus-trap.esm.js","webpack://TRBOT/./js/components/app-header.js","webpack://TRBOT/./js/components/accordion.js","webpack://TRBOT/./js/components/global-alert.js","webpack://TRBOT/./js/components/logo-zone.js","webpack://TRBOT/./js/utilities/external-link-class.js","webpack://TRBOT/./js/utilities/responsive-image.js","webpack://TRBOT/./js/app-critical.js"],"names":["observer","IntersectionObserver","entries","forEach","entry","isIntersecting","target","classList","add","unobserve","root","threshold","rootMargin","window","addEventListener","event","Array","from","document","getElementsByClassName","section","observe","slideUp","duration","style","transitionProperty","transitionDuration","boxSizing","height","offsetHeight","overflow","paddingTop","paddingBottom","marginTop","marginBottom","setTimeout","display","removeProperty","slideDown","getComputedStyle","contains","slideToggle","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","activeFocusDelay","candidateSelectors","candidateSelector","join","matches","Element","msMatchesSelector","webkitMatchesSelector","getCandidates","el","includeContainer","filter","candidates","slice","apply","querySelectorAll","unshift","getTabindex","node","tabindexAttr","parseInt","getAttribute","isNaN","contentEditable","isContentEditable","nodeName","tabIndex","sortOrderedTabbables","a","b","documentOrder","isInput","tagName","isNonTabbableRadio","type","isRadio","name","radioSet","radioScope","form","ownerDocument","queryRadios","CSS","escape","err","console","error","message","checked","nodes","i","length","getCheckedRadio","isTabbableRadio","isNodeMatchingSelectorFocusable","options","disabled","isHiddenInput","displayCheck","visibility","nodeUnderDetails","parentElement","_node$getBoundingClie","getBoundingClientRect","width","isHidden","children","some","child","isDetailsWithSummary","isNodeMatchingSelectorTabbable","focusableCandidateSelector","concat","isFocusable","Error","_defineProperty","configurable","writable","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","push","trapQueue","activeFocusTraps","activateTrap","trap","activeTrap","pause","trapIndex","indexOf","splice","deactivateTrap","unpause","delay","fn","findIndex","arr","idx","every","valueOrHandler","_len","arguments","params","_key","createFocusTrap","elements","userOptions","doc","config","source","getOwnPropertyDescriptors","defineProperties","_objectSpread2","returnFocusOnDeactivate","escapeDeactivates","delayInitialFocus","state","containers","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","active","paused","containersContain","element","container","getNodeForOption","optionName","optionValue","querySelector","getInitialFocusNode","activeElement","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","map","regularTabbables","orderedTabbables","tabbableNodes","bind","candidate","candidateTabindex","sort","lastTabbableNode","group","tryFocus","focus","preventScroll","toLowerCase","select","isSelectableInput","checkPointerDown","e","clickOutsideDeactivates","deactivate","returnFocus","allowOutsideClick","preventDefault","checkFocusIn","targetContained","Document","stopImmediatePropagation","checkKey","keyCode","isEscapeEvent","isTabEvent","destinationNode","containerIndex","_ref","shiftKey","startOfGroupIndex","_ref2","destinationGroupIndex","lastOfGroupIndex","_ref3","_destinationGroupIndex","checkTab","checkClick","addListeners","capture","passive","removeListeners","removeEventListener","activate","activateOptions","this","onActivate","deactivateOptions","clearTimeout","onDeactivate","previousActiveElement","updateContainerElements","containerElements","elementsAsArray","Boolean","focusTrap","utilityNav","primaryNav","portalNavTrigger","portalNav","largeScreenUtilityNavWrapper","largeScreenPrimaryNavWrapper","smallScreenNavPanel","smallScreenUtilityNavWrapper","smallScreenPrimaryNavWrapper","smallScreenNavPanelOpenTrigger","smallScreenNavPanelCloseTrigger","init","App","appHeader","cloneNode","scrollThrottle","toggleHeaderIsScrolledClass","globalSearchPanel__open","globalSearchPanel__close","globalSearch__submit","togglePortalUtilityNavMenu","primaryNavItem","primaryNavItemPanel__close","primaryNavItemPanel__open","mediaQueries","isLargeUp","largeScreenNav__build","smallScreenNav__destroy","smallScreenNav__build","largeScreenNav__destroy","utilityNavPortalMenuTrigger","utilityNavPortalMenu","toggle","setAttribute","utils","parentNode","remove","pageYOffset","documentElement","body","scrollTop","callback","appendChild","innerHTML","selectors","item","removeAttribute","smallScreenNavPanel__open","opacity","smallScreenNavPanel__close","smallScreenNavPanel__initFocusables","openPanel","primaryNavItemPanelTrigger","initialFocus","primaryNavItemPanel","globalSearchPanel","landingUrl","paramValue","location","href","App__accordion","accordionGroupItem__title","accordionGroupItem","closest","open","close","bottom","innerHeight","clientHeight","scrollBy","top","behavior","App__globalAlert","expiration","alertClose","globalAlertBanner","createCookie","adjustBodyTopMargin","parts","cookie","split","pop","shift","getCookie","days","expires","date","Date","setTime","getTime","toGMTString","logoZoneItem","logoZoneItemLink","link","hasAttribute","insertAdjacentHTML","create","imageUrl","URL","imageURL","responsiveImage","origin","pathname","class","altText","sizes","srcsetValues","srcsetWidths","srcsetWidth","App__appHeader","accordion","globalAlert","logoZone","App__logoZone","closeOverlayPanels","spaceBuffer","appMain","externalLinkClass","App__externalLinkClass","App__responsiveImage","lg","mediaQueryList__lg","matchMedia","addListener","mediaQuery__lg"],"mappings":"mCAAA,IAMMA,EAAW,IAAIC,sBAAqB,SAAAC,GAEzCA,EAAQC,SAAQ,SAAAC,GACXA,EAAMC,iBACTD,EAAME,OAAOC,UAAUC,IAAI,aAC3BR,EAASS,UAAUL,EAAME,cAXJ,CACvBI,KAAM,KACNC,UAAW,IACXC,WAAY,sBAabC,OAAOC,iBAAiB,oBAAoB,SAACC,GAI5C,IAFA,IAEA,MAFiBC,MAAMC,KAAKC,SAASC,uBAAuB,YAE5D,eAA8B,CAAzB,IAAIC,EAAO,KACfpB,EAASqB,QAAQD,Q,gBCpBnBP,OAAOS,QAAU,SAAShB,GAAsB,IAAdiB,EAAc,uDAAL,IAE1CjB,EAAOkB,MAAMC,mBAAqB,0BAClCnB,EAAOkB,MAAME,mBAAqBH,EAAW,KAC7CjB,EAAOkB,MAAMG,UAAY,aACzBrB,EAAOkB,MAAMI,OAAStB,EAAOuB,aAAe,KAC5CvB,EAAOuB,aACPvB,EAAOkB,MAAMM,SAAW,SACxBxB,EAAOkB,MAAMI,OAAS,EACtBtB,EAAOkB,MAAMO,WAAa,EAC1BzB,EAAOkB,MAAMQ,cAAgB,EAC7B1B,EAAOkB,MAAMS,UAAY,EACzB3B,EAAOkB,MAAMU,aAAe,EAC5BrB,OAAOsB,YAAY,WAChB7B,EAAOkB,MAAMY,QAAU,OACvB9B,EAAOkB,MAAMa,eAAe,UAC5B/B,EAAOkB,MAAMa,eAAe,eAC5B/B,EAAOkB,MAAMa,eAAe,kBAC5B/B,EAAOkB,MAAMa,eAAe,cAC5B/B,EAAOkB,MAAMa,eAAe,iBAC5B/B,EAAOkB,MAAMa,eAAe,YAC5B/B,EAAOkB,MAAMa,eAAe,uBAC5B/B,EAAOkB,MAAMa,eAAe,yBAE5Bd,IAIJV,OAAOyB,UAAY,SAAShC,GAAsB,IAAdiB,EAAc,uDAAL,IAE3CjB,EAAOkB,MAAMa,eAAe,WAC5B,IAAID,EAAUvB,OAAO0B,iBAAiBjC,GAAQ8B,QAC9B,SAAZA,IAAoBA,EAAU,SAClC9B,EAAOkB,MAAMY,QAAUA,EACvB,IAAIR,EAAStB,EAAOuB,aACpBvB,EAAOkB,MAAMM,SAAW,SACxBxB,EAAOkB,MAAMI,OAAS,EACtBtB,EAAOkB,MAAMO,WAAa,EAC1BzB,EAAOkB,MAAMQ,cAAgB,EAC7B1B,EAAOkB,MAAMS,UAAY,EACzB3B,EAAOkB,MAAMU,aAAe,EAC5B5B,EAAOuB,aACPvB,EAAOkB,MAAMG,UAAY,aACzBrB,EAAOkB,MAAMC,mBAAqB,0BAClCnB,EAAOkB,MAAME,mBAAqBH,EAAW,KAC7CjB,EAAOkB,MAAMI,OAASA,EAAS,KAC/BtB,EAAOkB,MAAMa,eAAe,eAC5B/B,EAAOkB,MAAMa,eAAe,kBAC5B/B,EAAOkB,MAAMa,eAAe,cAC5B/B,EAAOkB,MAAMa,eAAe,iBAC5BxB,OAAOsB,YAAY,WACb7B,EAAOC,UAAUiC,SAAS,iBAC9BlC,EAAOkB,MAAMa,eAAe,UAE7B/B,EAAOkB,MAAMa,eAAe,YAC5B/B,EAAOkB,MAAMa,eAAe,uBAC5B/B,EAAOkB,MAAMa,eAAe,yBAC1Bd,IAILV,OAAO4B,YAAc,SAASnC,GAAwB,IAAhBiB,EAAgB,uDAAL,IAC/C,MAAgD,SAA5CV,OAAO0B,iBAAiBjC,GAAQ8B,QAC5BE,UAAUhC,EAAQiB,GAElBD,QAAQhB,EAAQiB,MCjEtBmB,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,IAOV,OAHAE,EAAoBL,GAAUI,EAAQA,EAAOD,QAASJ,GAG/CK,EAAOD,QCpBfJ,EAAoBO,EAAI,SAASH,EAASI,GACzC,IAAI,IAAIC,KAAOD,EACXR,EAAoBU,EAAEF,EAAYC,KAAST,EAAoBU,EAAEN,EAASK,IAC5EE,OAAOC,eAAeR,EAASK,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3ET,EAAoBU,EAAI,SAASK,EAAKC,GAAQ,OAAOL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,ICC/FhB,EAAoBoB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CX,OAAOC,eAAeR,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DZ,OAAOC,eAAeR,EAAS,aAAc,CAAEmB,OAAO,K;;;;;ACDvD,ICmDIC,EDnDAC,EAAqB,CAAC,QAAS,SAAU,WAAY,UAAW,SAAU,aAAc,kBAAmB,kBAAmB,mDAAoD,gCAAiC,WACnNC,EAAmCD,EAAmBE,KAAK,KAC3DC,EAA6B,oBAAZC,QAA0B,aAAiBA,QAAQZ,UAAUW,SAAWC,QAAQZ,UAAUa,mBAAqBD,QAAQZ,UAAUc,sBAElJC,EAAgB,SAAuBC,EAAIC,EAAkBC,GAC/D,IAAIC,EAAa/D,MAAM4C,UAAUoB,MAAMC,MAAML,EAAGM,iBAAiBb,IAOjE,OALIQ,GAAoBN,EAAQT,KAAKc,EAAIP,IACvCU,EAAWI,QAAQP,GAGrBG,EAAaA,EAAWD,OAAOA,IAQ7BM,EAAc,SAAqBC,GACrC,IAAIC,EAAeC,SAASF,EAAKG,aAAa,YAAa,IAE3D,OAAKC,MAAMH,GAPW,SAA2BD,GACjD,MAAgC,SAAzBA,EAAKK,gBAYRC,CAAkBN,GACb,EAQc,UAAlBA,EAAKO,UAA0C,UAAlBP,EAAKO,UAA0C,YAAlBP,EAAKO,UAA6D,OAAlCP,EAAKG,aAAa,YAI1GH,EAAKQ,SAHH,EAfAP,GAqBPQ,EAAuB,SAA8BC,EAAGC,GAC1D,OAAOD,EAAEF,WAAaG,EAAEH,SAAWE,EAAEE,cAAgBD,EAAEC,cAAgBF,EAAEF,SAAWG,EAAEH,UAGpFK,EAAU,SAAiBb,GAC7B,MAAwB,UAAjBA,EAAKc,SAuDVC,EAAqB,SAA4Bf,GACnD,OALY,SAAiBA,GAC7B,OAAOa,EAAQb,IAAuB,UAAdA,EAAKgB,KAItBC,CAAQjB,KAlCK,SAAyBA,GAC7C,IAAKA,EAAKkB,KACR,OAAO,EAGT,IAMIC,EANAC,EAAapB,EAAKqB,MAAQrB,EAAKsB,cAE/BC,EAAc,SAAqBL,GACrC,OAAOE,EAAWvB,iBAAiB,6BAA+BqB,EAAO,OAK3E,GAAsB,oBAAX1F,aAAgD,IAAfA,OAAOgG,KAAoD,mBAAtBhG,OAAOgG,IAAIC,OAC1FN,EAAWI,EAAY/F,OAAOgG,IAAIC,OAAOzB,EAAKkB,YAE9C,IACEC,EAAWI,EAAYvB,EAAKkB,MAC5B,MAAOQ,GAGP,OADAC,QAAQC,MAAM,2IAA4IF,EAAIG,UACvJ,EAIX,IAAIC,EAjCgB,SAAyBC,EAAOV,GACpD,IAAK,IAAIW,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAChC,GAAID,EAAMC,GAAGF,SAAWC,EAAMC,GAAGX,OAASA,EACxC,OAAOU,EAAMC,GA8BHE,CAAgBf,EAAUnB,EAAKqB,MAC7C,OAAQS,GAAWA,IAAY9B,EAQNmC,CAAgBnC,IAkCvCoC,EAAkC,SAAyCC,EAASrC,GACtF,QAAIA,EAAKsC,UAxFS,SAAuBtC,GACzC,OAAOa,EAAQb,IAAuB,WAAdA,EAAKgB,KAuFRuB,CAAcvC,IAhCtB,SAAkBA,EAAMwC,GACrC,GAA0C,WAAtCtF,iBAAiB8C,GAAMyC,WACzB,OAAO,EAGT,IACIC,EADkBxD,EAAQT,KAAKuB,EAAM,iCACAA,EAAK2C,cAAgB3C,EAE9D,GAAId,EAAQT,KAAKiE,EAAkB,yBACjC,OAAO,EAGT,GAAKF,GAAiC,SAAjBA,GAQd,GAAqB,kBAAjBA,EAAkC,CAC3C,IAAII,EAAwB5C,EAAK6C,wBAC7BC,EAAQF,EAAsBE,MAC9BvG,EAASqG,EAAsBrG,OAEnC,OAAiB,IAAVuG,GAA0B,IAAXvG,QAZtB,KAAOyD,GAAM,CACX,GAAuC,SAAnC9C,iBAAiB8C,GAAMjD,QACzB,OAAO,EAGTiD,EAAOA,EAAK2C,cAUhB,OAAO,EAIqCI,CAAS/C,EAAMqC,EAAQG,eApF1C,SAA8BxC,GAIvD,MAHyB,YAAjBA,EAAKc,SAAyBnF,MAAM4C,UAAUoB,MAAMC,MAAMI,EAAKgD,UAAUC,MAAK,SAAUC,GAC9F,MAAyB,YAAlBA,EAAMpC,WAoFfqC,CAAqBnD,KAOnBoD,EAAiC,SAAwCf,EAASrC,GACpF,SAAKoC,EAAgCC,EAASrC,IAASe,EAAmBf,IAASD,EAAYC,GAAQ,IAmDrGqD,EAA4CtE,EAAmBuE,OAAO,UAAUrE,KAAK,KAErFsE,EAAc,SAAqBvD,EAAMqC,GAG3C,GAFAA,EAAUA,GAAW,IAEhBrC,EACH,MAAM,IAAIwD,MAAM,oBAGlB,OAAuD,IAAnDtE,EAAQT,KAAKuB,EAAMqD,IAIhBjB,EAAgCC,EAASrC;;;;;ACpNlD,SAASyD,EAAgBpF,EAAKN,EAAKc,GAYjC,OAXId,KAAOM,EACTJ,OAAOC,eAAeG,EAAKN,EAAK,CAC9Bc,MAAOA,EACPV,YAAY,EACZuF,cAAc,EACdC,UAAU,IAGZtF,EAAIN,GAAOc,EAGNR,EAGT,SAASuF,EAAQC,EAAQC,GACvB,IAAIC,EAAO9F,OAAO8F,KAAKF,GAEvB,GAAI5F,OAAO+F,sBAAuB,CAChC,IAAIC,EAAUhG,OAAO+F,sBAAsBH,GACvCC,IAAgBG,EAAUA,EAAQxE,QAAO,SAAUyE,GACrD,OAAOjG,OAAOkG,yBAAyBN,EAAQK,GAAK/F,eAEtD4F,EAAKK,KAAKxE,MAAMmE,EAAME,GAGxB,OAAOF,EAyBT,IACMM,EADFC,GACED,EAAY,GACT,CACLE,aAAc,SAAsBC,GAClC,GAAIH,EAAUpC,OAAS,EAAG,CACxB,IAAIwC,EAAaJ,EAAUA,EAAUpC,OAAS,GAE1CwC,IAAeD,GACjBC,EAAWC,QAIf,IAAIC,EAAYN,EAAUO,QAAQJ,IAEf,IAAfG,GAIFN,EAAUQ,OAAOF,EAAW,GAH5BN,EAAUD,KAAKI,IAOnBM,eAAgB,SAAwBN,GACtC,IAAIG,EAAYN,EAAUO,QAAQJ,IAEf,IAAfG,GACFN,EAAUQ,OAAOF,EAAW,GAG1BN,EAAUpC,OAAS,GACrBoC,EAAUA,EAAUpC,OAAS,GAAG8C,aAkBpCC,EAAQ,SAAeC,GACzB,OAAOnI,WAAWmI,EAAI,IAKpBC,EAAY,SAAmBC,EAAKF,GACtC,IAAIG,GAAO,EASX,OARAD,EAAIE,OAAM,SAAUxG,EAAOmD,GACzB,OAAIiD,EAAGpG,KACLuG,EAAMpD,GACC,MAKJoD,GAWLE,EAAiB,SAAwBzG,GAC3C,IAAK,IAAI0G,EAAOC,UAAUvD,OAAQwD,EAAS,IAAI9J,MAAM4J,EAAO,EAAIA,EAAO,EAAI,GAAIG,EAAO,EAAGA,EAAOH,EAAMG,IACpGD,EAAOC,EAAO,GAAKF,UAAUE,GAG/B,MAAwB,mBAAV7G,EAAuBA,EAAMe,WAAM,EAAQ6F,GAAU5G,GAGjE8G,EAAkB,SAAyBC,EAAUC,GACvD,IAwBIrB,EAxBAsB,EAAMjK,SAENkK,EA5GN,SAAwB9K,GACtB,IAAK,IAAI+G,EAAI,EAAGA,EAAIwD,UAAUvD,OAAQD,IAAK,CACzC,IAAIgE,EAAyB,MAAhBR,UAAUxD,GAAawD,UAAUxD,GAAK,GAE/CA,EAAI,EACN4B,EAAQ3F,OAAO+H,IAAS,GAAMlL,SAAQ,SAAUiD,GAC9C0F,EAAgBxI,EAAQ8C,EAAKiI,EAAOjI,OAE7BE,OAAOgI,0BAChBhI,OAAOiI,iBAAiBjL,EAAQgD,OAAOgI,0BAA0BD,IAEjEpC,EAAQ3F,OAAO+H,IAASlL,SAAQ,SAAUiD,GACxCE,OAAOC,eAAejD,EAAQ8C,EAAKE,OAAOkG,yBAAyB6B,EAAQjI,OAKjF,OAAO9C,EA2FMkL,CAAe,CAC1BC,yBAAyB,EACzBC,mBAAmB,EACnBC,mBAAmB,GAClBT,GAECU,EAAQ,CAEVC,WAAY,GAQZC,eAAgB,GAChBC,4BAA6B,KAC7BC,wBAAyB,KACzBC,QAAQ,EACRC,QAAQ,GAINC,EAAoB,SAA2BC,GACjD,OAAOR,EAAMC,WAAWvD,MAAK,SAAU+D,GACrC,OAAOA,EAAU7J,SAAS4J,OAI1BE,EAAmB,SAA0BC,GAC/C,IAAIC,EAAcpB,EAAOmB,GAEzB,IAAKC,EACH,OAAO,KAGT,IAAInH,EAAOmH,EAEX,GAA2B,iBAAhBA,KACTnH,EAAO8F,EAAIsB,cAAcD,IAGvB,MAAM,IAAI3D,MAAM,IAAIF,OAAO4D,EAAY,8BAI3C,GAA2B,mBAAhBC,KACTnH,EAAOmH,KAGL,MAAM,IAAI3D,MAAM,IAAIF,OAAO4D,EAAY,4BAI3C,OAAOlH,GAGLqH,EAAsB,WACxB,IAAIrH,EAEJ,GAAyC,OAArCiH,EAAiB,gBACnBjH,EAAOiH,EAAiB,qBACnB,GAAIH,EAAkBhB,EAAIwB,eAC/BtH,EAAO8F,EAAIwB,kBACN,CACL,IAAIC,EAAqBhB,EAAME,eAAe,GAE9CzG,EADwBuH,GAAsBA,EAAmBC,mBACrCP,EAAiB,iBAG/C,IAAKjH,EACH,MAAM,IAAIwD,MAAM,gEAGlB,OAAOxD,GAGLyH,EAAsB,WAkBxB,GAjBAlB,EAAME,eAAiBF,EAAMC,WAAWkB,KAAI,SAAUV,GACpD,ID9D+B3E,EAE/BsF,EACAC,EC2DIC,GD5DJF,EAAmB,GACnBC,EAAmB,GACNtI,EC0DgB0H,GD7DjC3E,EAAUA,GAAW,IAGsB7C,iBAAkB4D,EAA+B0E,KAAK,KAAMzF,IAC5FvH,SAAQ,SAAUiN,EAAW/F,GACtC,IAAIgG,EAAoBjI,EAAYgI,GAEV,IAAtBC,EACFL,EAAiBvD,KAAK2D,GAEtBH,EAAiBxD,KAAK,CACpBxD,cAAeoB,EACfxB,SAAUwH,EACVhI,KAAM+H,OAIQH,EAAiBK,KAAKxH,GAAsBiH,KAAI,SAAUhH,GAC5E,OAAOA,EAAEV,QACRsD,OAAOqE,IC4CN,GAAIE,EAAc5F,OAAS,EACzB,MAAO,CACL+E,UAAWA,EACXQ,kBAAmBK,EAAc,GACjCK,iBAAkBL,EAAcA,EAAc5F,OAAS,OAK1DxC,QAAO,SAAU0I,GAClB,QAASA,KAIP5B,EAAME,eAAexE,QAAU,IAAMgF,EAAiB,iBACxD,MAAM,IAAIzD,MAAM,wGAIhB4E,EAAW,SAASA,EAASpI,GAC3BA,IAAS8F,EAAIwB,gBAIZtH,GAASA,EAAKqI,OAKnBrI,EAAKqI,MAAM,CACTC,gBAAiBvC,EAAOuC,gBAE1B/B,EAAMI,wBAA0B3G,EApKZ,SAA2BA,GACjD,OAAOA,EAAKc,SAA0C,UAA/Bd,EAAKc,QAAQyH,eAAoD,mBAAhBvI,EAAKwI,OAqKvEC,CAAkBzI,IACpBA,EAAKwI,UAVLJ,EAASf,OAqBTqB,EAAmB,SAA0BC,GAC3C7B,EAAkB6B,EAAE1N,UAKpBqK,EAAeS,EAAO6C,wBAAyBD,GAEjDnE,EAAKqE,WAAW,CAYdC,YAAa/C,EAAOK,0BAA4B7C,EAAYoF,EAAE1N,UAQ9DqK,EAAeS,EAAOgD,kBAAmBJ,IAM7CA,EAAEK,mBAIAC,EAAe,SAAsBN,GACvC,IAAIO,EAAkBpC,EAAkB6B,EAAE1N,QAEtCiO,GAAmBP,EAAE1N,kBAAkBkO,SACrCD,IACF3C,EAAMI,wBAA0BgC,EAAE1N,SAIpC0N,EAAES,2BACFhB,EAAS7B,EAAMI,yBAA2BU,OA0F1CgC,EAAW,SAAkBV,GAC/B,IAAiC,IAA7B5C,EAAOM,mBAzTK,SAAuBsC,GACzC,MAAiB,WAAVA,EAAE5K,KAA8B,QAAV4K,EAAE5K,KAA+B,KAAd4K,EAAEW,QAwTNC,CAAcZ,GAGtD,OAFAA,EAAEK,sBACFxE,EAAKqE,cAvTM,SAAoBF,GACnC,MAAiB,QAAVA,EAAE5K,KAA+B,IAAd4K,EAAEW,SA0TtBE,CAAWb,IAzFF,SAAkBA,GAC/BlB,IACA,IAAIgC,EAAkB,KAEtB,GAAIlD,EAAME,eAAexE,OAAS,EAAG,CAInC,IAAIyH,EAAiBxE,EAAUqB,EAAME,gBAAgB,SAAUkD,GAE7D,OADgBA,EAAK3C,UACJ7J,SAASwL,EAAE1N,WAG9B,GAAIyO,EAAiB,EAKjBD,EAFEd,EAAEiB,SAEcrD,EAAME,eAAeF,EAAME,eAAexE,OAAS,GAAGiG,iBAGtD3B,EAAME,eAAe,GAAGe,uBAEvC,GAAImB,EAAEiB,SAAU,CAGrB,IAAIC,EAAoB3E,EAAUqB,EAAME,gBAAgB,SAAUqD,GAChE,IAAItC,EAAoBsC,EAAMtC,kBAC9B,OAAOmB,EAAE1N,SAAWuM,KAUtB,GAPIqC,EAAoB,GAAKtD,EAAME,eAAeiD,GAAgB1C,YAAc2B,EAAE1N,SAIhF4O,EAAoBH,GAGlBG,GAAqB,EAAG,CAI1B,IAAIE,EAA8C,IAAtBF,EAA0BtD,EAAME,eAAexE,OAAS,EAAI4H,EAAoB,EAE5GJ,EADuBlD,EAAME,eAAesD,GACT7B,sBAEhC,CAGL,IAAI8B,EAAmB9E,EAAUqB,EAAME,gBAAgB,SAAUwD,GAC/D,IAAI/B,EAAmB+B,EAAM/B,iBAC7B,OAAOS,EAAE1N,SAAWiN,KAUtB,GAPI8B,EAAmB,GAAKzD,EAAME,eAAeiD,GAAgB1C,YAAc2B,EAAE1N,SAI/E+O,EAAmBN,GAGjBM,GAAoB,EAAG,CAIzB,IAAIE,EAAyBF,IAAqBzD,EAAME,eAAexE,OAAS,EAAI,EAAI+H,EAAmB,EAG3GP,EADwBlD,EAAME,eAAeyD,GACT1C,yBAIxCiC,EAAkBxC,EAAiB,iBAGjCwC,IACFd,EAAEK,iBACFZ,EAASqB,IAaTU,CAASxB,IAKTyB,EAAa,SAAoBzB,GAC/BrD,EAAeS,EAAO6C,wBAAyBD,IAI/C7B,EAAkB6B,EAAE1N,SAIpBqK,EAAeS,EAAOgD,kBAAmBJ,KAI7CA,EAAEK,iBACFL,EAAES,6BAMAiB,EAAe,WACjB,GAAK9D,EAAMK,OA4BX,OAvBAtC,EAAiBC,aAAaC,GAG9B1F,EAAmBiH,EAAOO,kBAAoBtB,GAAM,WAClDoD,EAASf,QACNe,EAASf,KACdvB,EAAIrK,iBAAiB,UAAWwN,GAAc,GAC9CnD,EAAIrK,iBAAiB,YAAaiN,EAAkB,CAClD4B,SAAS,EACTC,SAAS,IAEXzE,EAAIrK,iBAAiB,aAAciN,EAAkB,CACnD4B,SAAS,EACTC,SAAS,IAEXzE,EAAIrK,iBAAiB,QAAS2O,EAAY,CACxCE,SAAS,EACTC,SAAS,IAEXzE,EAAIrK,iBAAiB,UAAW4N,EAAU,CACxCiB,SAAS,EACTC,SAAS,IAEJ/F,GAGLgG,EAAkB,WACpB,GAAKjE,EAAMK,OASX,OALAd,EAAI2E,oBAAoB,UAAWxB,GAAc,GACjDnD,EAAI2E,oBAAoB,YAAa/B,GAAkB,GACvD5C,EAAI2E,oBAAoB,aAAc/B,GAAkB,GACxD5C,EAAI2E,oBAAoB,QAASL,GAAY,GAC7CtE,EAAI2E,oBAAoB,UAAWpB,GAAU,GACtC7E,GAqFT,OA/EAA,EAAO,CACLkG,SAAU,SAAkBC,GAC1B,GAAIpE,EAAMK,OACR,OAAOgE,KAGTnD,IACAlB,EAAMK,QAAS,EACfL,EAAMM,QAAS,EACfN,EAAMG,4BAA8BZ,EAAIwB,cACxC,IAAIuD,EAAaF,GAAmBA,EAAgBE,WAAaF,EAAgBE,WAAa9E,EAAO8E,WAOrG,OALIA,GACFA,IAGFR,IACOO,MAET/B,WAAY,SAAoBiC,GAC9B,IAAKvE,EAAMK,OACT,OAAOgE,KAGTG,aAAajM,GACb0L,IACAjE,EAAMK,QAAS,EACfL,EAAMM,QAAS,EACfvC,EAAiBQ,eAAeN,GAChC,IAAIwG,EAAeF,QAAwDrN,IAAnCqN,EAAkBE,aAA6BF,EAAkBE,aAAejF,EAAOiF,aAc/H,OAZIA,GACFA,KAGgBF,QAAuDrN,IAAlCqN,EAAkBhC,YAA4BgC,EAAkBhC,YAAc/C,EAAOK,0BAG1HpB,GAAM,WAxQa,IAA4BiG,EAyQ7C7C,GAzQ6C6C,EAyQjB1E,EAAMG,4BAxQ7BO,EAAiB,mBACPgE,OA2QZL,MAETlG,MAAO,WACL,OAAI6B,EAAMM,SAAWN,EAAMK,SAI3BL,EAAMM,QAAS,EACf2D,KAJSI,MAOX7F,QAAS,WACP,OAAKwB,EAAMM,QAAWN,EAAMK,QAI5BL,EAAMM,QAAS,EACfY,IACA4C,IACOO,MANEA,MAQXM,wBAAyB,SAAiCC,GACxD,IAAIC,EAAkB,GAAG9H,OAAO6H,GAAmB1L,OAAO4L,SAS1D,OARA9E,EAAMC,WAAa4E,EAAgB1D,KAAI,SAAUX,GAC/C,MAA0B,iBAAZA,EAAuBjB,EAAIsB,cAAcL,GAAWA,KAGhER,EAAMK,QACRa,IAGKmD,QAINM,wBAAwBtF,GACtBpB,GC+ET,EAxoBuB,CAErBuC,QAAS,KACTuE,WAAW,EAGXC,WAAY,KACZC,WAAY,KAEZC,iBAAkB,KAClBC,UAAW,KAGXC,6BAA8B,KAC9BC,6BAA8B,KAC9BC,oBAA8B,KAC9BC,6BAA8B,KAC9BC,6BAA8B,KAE9BC,gCAAgC,EAChCC,iCAAiC,EAEjCC,KAAM,WAUJ,GARAC,IAAIC,UAAUrF,QAAUlL,SAASuL,cAAc,yBAE/C+E,IAAIC,UAAUT,6BAA+B9P,SAASuL,cAAc,oEACpE+E,IAAIC,UAAUR,6BAA+B/P,SAASuL,cAAc,iFACpE+E,IAAIC,UAAUP,oBAA+BhQ,SAASuL,cAAc,8CACpE+E,IAAIC,UAAUN,6BAA+BjQ,SAASuL,cAAc,uFACpE+E,IAAIC,UAAUL,6BAA+BlQ,SAASuL,cAAc,uFAE/DvL,SAASuL,cAAc,sCAA0CvL,SAASuL,cAAc,qCAAuC,CAElI+E,IAAIC,UAAUb,WAAa1P,SAASuL,cAAc,qCAAqCiF,WAAU,GACjGF,IAAIC,UAAUZ,WAAa3P,SAASuL,cAAc,qCAAqCiF,WAAU,GAEjG7Q,OAAOC,iBAAiB,UAAU,SAACkN,GAC/BoC,aAAaoB,IAAIC,UAAUE,gBAC3BH,IAAIC,UAAUE,eAAiBxP,YAAW,WAExCqP,IAAIC,UAAUG,gCACb,OAEL,GAGF,IAAId,EAAmB5P,SAASuL,cAAc,sDACzCqE,IACHU,IAAIC,UAAUX,iBAAmBA,EAAiBY,WAAU,IAG9D,IAAIX,EAAY7P,SAASuL,cAAc,+CAClCsE,IACHS,IAAIC,UAAUV,UAAYA,EAAUW,WAAU,IAWhDF,IAAIC,UAAUrF,QAAQtL,iBAAiB,SAAS,SAACkN,GAC/C,IAAMA,EAAE1N,OAAOiE,QAAQ,2GACrB,OAAO,EAETyJ,EAAEK,iBAG+D,QAD9BmD,IAAIC,UAAUrF,QAAQK,cAAc,4CACrCjH,aAAa,eAC7CgM,IAAIC,UAAUI,0BAEdL,IAAIC,UAAUK,8BAOlBN,IAAIC,UAAUrF,QAAQtL,iBAAiB,SAAS,SAACkN,GAC/C,IAAMA,EAAE1N,OAAOiE,QAAQ,uDACrB,OAAO,EAETyJ,EAAEK,iBAEFmD,IAAIC,UAAUK,8BAMhBN,IAAIC,UAAUrF,QAAQtL,iBAAiB,UAAU,SAACkN,GAChD,IAAMA,EAAE1N,OAAOiE,QAAQ,iDACrB,OAAO,EAETyJ,EAAEK,iBAEFmD,IAAIC,UAAUM,0BAMhBP,IAAIC,UAAUrF,QAAQtL,iBAAiB,SAAS,SAACkN,GAC/C,IAAMA,EAAE1N,OAAOiE,QAAQ,sDACrB,OAAO,EAETyJ,EAAEK,iBAEFmD,IAAIC,UAAUO,2BAA4BhE,EAAE1N,WAM9CkR,IAAIC,UAAUrF,QAAQtL,iBAAiB,SAAS,SAACkN,GAC/C,IAAMA,EAAE1N,OAAOiE,QAAQ,qDACrB,OAAO,EAETyJ,EAAEK,iBAEF,IAAI4D,EAAiBjE,EAAE1N,OAAO0H,cACzBiK,EAAe1R,UAAUiC,SAAS,WACrCgP,IAAIC,UAAUS,2BAA2BD,GAEzCT,IAAIC,UAAUU,0BAA0BF,GAG1CT,IAAIC,UAAUrF,QAAQK,cAAc,0DAA0DjL,MAAMY,QAAU,OAC9GoP,IAAIC,UAAUrF,QAAQK,cAAc,wDAAwDjL,MAAMY,QAAU,YAK9GoP,IAAIC,UAAUrF,QAAQtL,iBAAiB,SAAS,SAACkN,GAC/C,IAAMA,EAAE1N,OAAOiE,QAAQ,wDACrB,OAAO,EAETyJ,EAAEK,iBAEF,IAAI4D,EAAiBT,IAAIC,UAAUrF,QAAQK,cAAc,iDACzD+E,IAAIC,UAAUS,2BAA2BD,GACzCT,IAAIC,UAAUK,2BAEdN,IAAIC,UAAUrF,QAAQK,cAAc,0DAA0DjL,MAAMY,QAAU,SAC9GoP,IAAIC,UAAUrF,QAAQK,cAAc,wDAAwDjL,MAAMY,QAAU,UAK9GoP,IAAIC,UAAUrF,QAAQtL,iBAAiB,SAAS,SAACkN,GAC/C,IAAMA,EAAE1N,OAAOiE,QAAQ,0DACrB,OAAO,EAETyJ,EAAEK,oBAkBCmD,IAAIY,aAAaC,UACpBb,IAAIC,UAAUa,sBAAuBd,IAAIC,UAAUc,yBAEnDf,IAAIC,UAAUe,sBAAuBhB,IAAIC,UAAUgB,2BAOzDT,2BAA4B,SAAWU,GACrC,IAAIC,EAAuBzR,SAASuL,cAAc,+CAElDiG,EAA4BnS,UAAUqS,OAAO,yBAC7CF,EAA4BnS,UAAUqS,OAAO,uBAE7CD,EAAqBpS,UAAUqS,OAAO,WAEjCD,EAAqBpS,UAAUiC,SAAS,YAC3CtB,SAASuL,cAAc,0BAA0BlM,UAAUC,IAAI,aAE/DkS,EAA4BG,aAAa,gBAAiB,QAC1DH,EAA4BG,aAAa,aAAc,yBACvDF,EAAqBE,aAAa,cAAe,SACjDrB,IAAIC,UAAUd,UAAYa,IAAIsB,MAAMnC,UAAU3F,gBAAgB2H,EAAqBI,WAAY,CAC7F3E,mBAAmB,IAErBoD,IAAIC,UAAUd,UAAUZ,aAExB7O,SAASuL,cAAc,0BAA0BlM,UAAUyS,OAAO,aAElEN,EAA4BG,aAAa,gBAAiB,SAC1DH,EAA4BG,aAAa,aAAc,wBACvDF,EAAqBE,aAAa,cAAe,QAC5CrB,IAAIC,UAAUd,WACjBa,IAAIC,UAAUd,UAAUzC,eAK9B0D,4BAA6B,YACX/Q,OAAOoS,cAAgB/R,SAASgS,iBAAmBhS,SAASiS,KAAKJ,YAAc7R,SAASiS,MAAMC,WAC7F,GACf5B,IAAIC,UAAUrF,QAAQ7L,UAAUC,IAAI,eAEpCgR,IAAIC,UAAUrF,QAAQ7L,UAAUyS,OAAO,gBAI3CV,sBAAuB,SAAWe,GAEhC,SAAM7B,IAAIC,UAAUb,aAAiBY,IAAIC,UAAUZ,cAInD3P,SAASuL,cAAc,QAAQlM,UAAUyS,OAAO,qBAErBxB,IAAIC,UAAUR,6BAA6BxE,cAAc,uCAKpF+E,IAAIC,UAAUT,6BAA6BsC,YAAa9B,IAAIC,UAAUb,YACtEY,IAAIC,UAAUR,6BAA6BqC,YAAa9B,IAAIC,UAAUZ,iBAEtEwC,OAGFZ,wBAAyB,WAGvBjB,IAAIC,UAAUT,6BAA6BuC,UAAY,GACvD/B,IAAIC,UAAUR,6BAA6BsC,UAAY,IAGzDf,sBAAuB,SAAUa,GAE/B,IAAM7B,IAAIC,UAAUb,aAAiBY,IAAIC,UAAUZ,WACjD,OAAO,EAGkBW,IAAIC,UAAUL,6BAA6B3E,cAAc,qCAIpF+E,IAAIC,UAAUN,6BAA6BmC,YAAa9B,IAAIC,UAAUb,YACtEY,IAAIC,UAAUL,6BAA6BkC,YAAa9B,IAAIC,UAAUZ,YAEjEW,IAAIC,UAAUX,kBACjBU,IAAIC,UAAUrF,QAAQK,cAAc,uDAAuD6G,YAAY9B,IAAIC,UAAUX,kBAGlHU,IAAIC,UAAUV,WACjBS,IAAIC,UAAUrF,QAAQK,cAAc,uDAAuD6G,YAAY9B,IAAIC,UAAUV,WAGvH,IAAIyC,EAAY,GAGhBA,EAAY,CACV,oDACA,+CAEA,wDACA,oDAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKZ,aAAa,WAAY,SAGzGW,EAAY,CACV,8BACA,wDACA,8BACA,oCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eAIhGlC,IAAIC,UAAUJ,+BAAiCG,IAAIC,UAAUrF,QAAQK,cAAc,yDAC/E+E,IAAIC,UAAUJ,iCAChBG,IAAIC,UAAUJ,+BAA+BvQ,iBAAiB,SAAS,SAACkN,GACpEA,EAAEK,iBACFmD,IAAIC,UAAUkC,+BAIlBnC,IAAIC,UAAUJ,+BAA+B7P,MAAMoS,QAAU,GAM/DpC,IAAIC,UAAUH,gCAAkCE,IAAIC,UAAUrF,QAAQK,cAAc,0DAChF+E,IAAIC,UAAUH,iCAChBE,IAAIC,UAAUH,gCAAgCxQ,iBAAiB,SAAS,SAACkN,GACrEA,EAAEK,iBACFmD,IAAIC,UAAUoC,gCAKpBR,KAGFd,wBAAyB,WAEvBf,IAAIC,UAAUN,6BAA6BoC,UAAY,GACvD/B,IAAIC,UAAUL,6BAA6BmC,UAAY,GACvD/B,IAAIC,UAAUP,oBAAoB3Q,UAAUyS,OAAO,WACnDxB,IAAIC,UAAUJ,gCAAiC,EAC/CG,IAAIC,UAAUH,iCAAkC,EAEhDE,IAAIC,UAAUrF,QAAQlH,iBAAiB,gDAAgD/E,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,gBAGhII,oCAAqC,WACnC,IAAIN,EAAY,GAGhBA,EAAY,CACV,0BACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKZ,aAAa,WAAY,SAGzGW,EAAY,CACV,yDACA,yDACA,oDACA,sCACA,0CAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,gBAGlGC,0BAA2B,WAGzBnC,IAAIC,UAAUqC,sCAGdtC,IAAIC,UAAUJ,+BAA+B7P,MAAMoS,QAAU,EAK7DpC,IAAIC,UAAUH,gCAAgC5D,QAE9C8D,IAAIC,UAAUP,oBAAoB3Q,UAAUC,IAAI,WAChDgR,IAAIC,UAAUrF,QAAQlH,iBAAiB,yCAAyC/E,SAAQ,SAACsT,GAAD,OAAUA,EAAKlT,UAAUyS,OAAO,cAEnHxB,IAAIY,aAAaC,WAEpBnR,SAASuL,cAAc,QAAQlM,UAAUC,IAAI,oBAS/CgR,IAAIC,UAAUd,UAAYa,IAAIsB,MAAMnC,UAAU3F,gBAAgB,yBAC9DwG,IAAIC,UAAUd,UAAUZ,YAG1B8D,2BAA4B,WAG1B,IAAIL,EAAY,GAGhBA,EAAY,CACV,yDACA,yDACA,oDACA,sCACA,0CAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKZ,aAAa,WAAY,SAGzGW,EAAY,CACV,8BACA,wDACA,8BACA,oCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eAEhGlC,IAAIC,UAAUrF,QAAQlH,iBAAiB,yCAAyC/E,SAAQ,SAACsT,GAAD,OAAUA,EAAKlT,UAAUyS,OAAO,cAEnHxB,IAAIY,aAAaC,YAGpBnR,SAASuL,cAAc,QAAQlM,UAAUyS,OAAO,oBAGhDxB,IAAIC,UAAUK,2BAGdN,IAAIC,UAAUP,oBAAoB3Q,UAAUyS,OAAO,WAGnDxB,IAAIC,UAAUJ,+BAA+B7P,MAAMoS,QAAU,IAE7DpC,IAAIC,UAAUJ,+BAA+B3D,SAO/C8D,IAAIC,UAAUrF,QAAQK,cAAc,+BAA+BiH,gBAAgB,YACnFlC,IAAIC,UAAUrF,QAAQlH,iBAAiB,wCAAwC/E,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eAQjHlC,IAAIC,UAAUd,WACjBa,IAAIC,UAAUd,UAAUzC,cAI5BiE,0BAA2B,SAAWF,GAIpC,IAAI8B,EAAYvC,IAAIC,UAAUrF,QAAQK,cAAc,iDAC/CsH,GACHA,EAAUxT,UAAUyS,OAAO,WAG7B,IAAIgB,EAA6B/B,EAAexF,cAAc,qDAC9DuH,EAA2BnB,aAAa,gBAAiB,QAE/BZ,EAAexF,cAAc,8CACnCoG,aAAa,cAAe,SAEhDZ,EAAe1R,UAAUC,IAAI,WAE7B,IAAIgT,EAAY,GAGhBA,EAAY,CACV,0BACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKZ,aAAa,WAAY,SAEpGrB,IAAIY,aAAaC,WACpBnR,SAASuL,cAAc,0BAA0BlM,UAAUC,IAAI,aAG/DwT,EAA2BN,gBAAgB,YAC3CzB,EAAe/M,iBAAiB,gDAAgD/E,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eAEvHlC,IAAIC,UAAUd,UAAYa,IAAIsB,MAAMnC,UAAU3F,gBAAgB,wBAAyB,CACnFoD,mBAAmB,IAGvBoD,IAAIC,UAAUd,UAAUZ,aAExByB,IAAIC,UAAUrF,QAAQK,cAAc,oDAAoDlM,UAAUC,IAAI,mBAGtGyR,EAAe/M,iBAAiB,gDAAgD/E,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eACvHF,EAAY,CACV,yDACA,uDACA,0CAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eAEhGlC,IAAIC,UAAUd,UAAYa,IAAIsB,MAAMnC,UAAU3F,gBAAgB,wBAAyB,CACnFiJ,aAAczC,IAAIC,UAAUrF,QAAQK,cAAc,0DAGtD+E,IAAIC,UAAUd,UAAUZ,aAI5BmC,2BAA4B,SAAWD,GAGrC,GAAKA,EAAiB,CACpB,IAAI+B,EAA6B/B,EAAexF,cAAc,qDAC1DyH,EAAsBjC,EAAexF,cAAc,8CAEvDwF,EAAe1R,UAAUyS,OAAO,WAGhCf,EAAe/M,iBAAiB,gDAAgD/E,SAAQ,SAACsT,GAAD,OAAUA,EAAKZ,aAAa,WAAY,SAEhImB,EAA2BnB,aAAa,gBAAiB,SACzDqB,EAAoBrB,aAAa,cAAe,QAGlD,IAAIW,EAAY,GAEXhC,IAAIY,aAAaC,WACpBmB,EAAY,CACV,0BACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eAEhGxS,SAASuL,cAAc,0BAA0BlM,UAAUyS,OAAO,eAElExB,IAAIC,UAAUrF,QAAQK,cAAc,oDAAoDlM,UAAUyS,OAAO,mBAGzGQ,EAAY,CACV,0BACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKZ,aAAa,WAAY,SAGzGrB,IAAIC,UAAUqC,uCAGXtC,IAAIC,UAAUd,WACjBa,IAAIC,UAAUd,UAAUzC,cAI5B2D,wBAAyB,WAGvB,IAAIsC,EAAoBjT,SAASuL,cAAc,kEAE/C0H,EAAkBtB,aAAa,eAAe,GAC9CsB,EAAkB1H,cAAc,oBAAoBiB,QAEpD8D,IAAIC,UAAUrF,QAAQK,cAAc,0DAA0DjL,MAAMY,QAAU,OAC9GoP,IAAIC,UAAUrF,QAAQK,cAAc,wDAAwDjL,MAAMY,QAAU,SAE5GoP,IAAIC,UAAUrF,QAAQK,cAAc,oDAAoDlM,UAAUC,IAAI,mBAEtG,IAAIgT,EAAY,GAGhBA,EAAY,CACV,0BACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKZ,aAAa,WAAY,SAEpGrB,IAAIY,aAAaC,WACpBnR,SAASuL,cAAc,0BAA0BlM,UAAUC,IAAI,aAG/DgT,EAAY,CACV,sDACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,iBAGhGF,EAAY,CACV,yDACA,uDACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,gBAGlGlC,IAAIC,UAAUd,UAAYa,IAAIsB,MAAMnC,UAAU3F,gBAAgB,wBAAyB,CACnFiJ,aAAczC,IAAIC,UAAUrF,QAAQK,cAAc,mCAClD2B,mBAAmB,IAIvBoD,IAAIC,UAAUd,UAAUZ,YAG1B+B,yBAA0B,WAGA5Q,SAASuL,cAAc,kEAC7BoG,aAAa,eAAe,GAE9CrB,IAAIC,UAAUrF,QAAQK,cAAc,0DAA0DjL,MAAMY,QAAU,SAC9GoP,IAAIC,UAAUrF,QAAQK,cAAc,wDAAwDjL,MAAMY,QAAU,OAE5GoP,IAAIC,UAAUrF,QAAQK,cAAc,oDAAoDlM,UAAUyS,OAAO,mBAEzG,IAAIQ,EAAY,GAEXhC,IAAIY,aAAaC,WAEpBmB,EAAY,CACV,0BACA,gCAEFhC,IAAIC,UAAUrF,QAAQlH,iBAAiBsO,EAAUlP,QAAQnE,SAAQ,SAACsT,GAAD,OAAUA,EAAKC,gBAAgB,eAEhGxS,SAASuL,cAAc,0BAA0BlM,UAAUyS,OAAO,aAE7DxB,IAAIC,UAAUd,WACjBa,IAAIC,UAAUd,UAAUzC,WAAW,CACjCmC,aAAcmB,IAAIC,UAAUrF,QAAQK,cAAc,mDAAmDiB,WAIrG8D,IAAIC,UAAUd,WAChBa,IAAIC,UAAUd,UAAUzC,WAAW,CACjCmC,aAAcmB,IAAIC,UAAUrF,QAAQK,cAAc,0DAA0DiB,WAMpHqE,qBAAsB,WAEpB,IAAIoC,EAAoBjT,SAASuL,cAAc,kEACzC2H,EAAaD,EAAkB3O,aAAa,oBAC5C6O,EAAaF,EAAkB1H,cAAc,mCAAmCvI,MAEtF,GAAoB,KAAfmQ,EACH,OAAO,EAEPxT,OAAOyT,SAASC,KAAhB,UAA0BH,EAA1B,oBAAgDC,KCloBhDG,EAAiB,CAErBjD,KAAM,WAEJrQ,SAASgE,iBAAiB,yCAAyC/E,SAAU,SAAUsU,GACrFA,EAA0B3T,iBAAiB,SAAS,SAASkN,GAC3DA,EAAEK,iBACF,IAAIqG,EAAqB1G,EAAE1N,OAAOqU,QAAQ,kCACsB,SAA3DF,EAA0BjP,aAAa,iBAC1CgP,EAAeI,KAAMF,GAErBF,EAAeK,MAAOH,UAM9BE,KAAM,SAAUF,GACdA,EAAmBjI,cAAc,yCAAyCoG,aAAa,gBAAiB,QACxG6B,EAAmBjI,cAAc,2CAA2CjL,MAAMY,QAAU,QAC5FsS,EAAmBjI,cAAc,2CAA2CoG,aAAa,cAAe,SAG/D6B,EAAmBjI,cAAc,yCAAyCvE,wBAC3E4M,QAAUjU,OAAOkU,aAAe7T,SAASgS,gBAAgB8B,eAC/FnU,OAAOoU,SAAS,CACdC,IAAK,IACLC,SAAU,YAKhBN,MAAO,SAAUH,GACfA,EAAmBjI,cAAc,yCAAyCoG,aAAa,gBAAiB,SACxG6B,EAAmBjI,cAAc,2CAA2CjL,MAAMY,QAAU,OAC5FsS,EAAmBjI,cAAc,2CAA2CoG,aAAa,cAAe,UAK5G,ICxCMuC,EAAmB,CAEvB7D,KAAM,WACJ,IAGI8D,EAHEC,EAAapU,SAASuL,cAAc,kDACpC8I,EAAoBrU,SAASuL,cAAc,sCAG7C8I,IACFF,EAAaE,EAAkB/P,aAAa,mBAAqB,IAkB/D8P,GACFA,EAAWxU,iBAAiB,SAhBX,SAAUkN,GAC3BA,EAAEK,iBAEF+G,EAAiBI,aAAa,WAAY,YAAaH,GACvDE,EAAkBhV,UAAUyS,OAAO,cACnCxB,IAAIsB,MAAM2C,yBAWuC,GAIlC,cAZC,SAAUlP,GAC1B,IACImP,GADQ,KAAOxU,SAASyU,QACVC,MAAM,KAAOrP,EAAO,KACtC,GAAoB,GAAhBmP,EAAMpO,OAAa,OAAOoO,EAAMG,MAAMD,MAAM,KAAKE,QAQxCC,CAAU,YAEnBR,GACFA,EAAkBhV,UAAUyS,OAAO,cAGjCuC,GACFA,EAAkBhV,UAAUC,IAAI,eAWtCgV,aAAc,SAAWjP,EAAMrC,EAAO8R,GACpC,IAAIC,EAAU,GACd,GAAID,EAAM,CACR,IAAIE,EAAO,IAAIC,KACfD,EAAKE,QAAQF,EAAKG,UAAmB,GAAPL,EAAY,GAAK,GAAK,KACpDC,EAAU,aAAeC,EAAKI,mBAE9BL,EAAU,GAEZ/U,SAASyU,OAASpP,EAAO,IAAMrC,EAAQ+R,EAAU,aAKrD,IChCA,EA/BsB,CAEpB1E,KAAM,WACkBrQ,SAASgE,iBAAiB,4BAGlC/E,SAAQ,SAAUoW,GAE9BA,EAAarR,iBAAiB,KAAK/E,SAAQ,SAAUqW,GACnDA,EAAiB1V,iBAAiB,SAAS,SAACkN,GAC1CA,EAAEK,uBAINkI,EAAazV,iBAAiB,SAAS,SAACkN,GACtC,IAAIyI,EAAOF,EAAa9J,cAAc,KAClCnM,EAASmW,EAAKjR,aAAa,UAE/B,GAAKiR,EAAO,CACV,GAAgB,WAAXnW,EAEH,OADAO,OAAO+T,KAAM6B,IACN,EAEP5V,OAAOyT,SAAWmC,WCM9B,EA7B+B,CAE7BjW,IAAK,WAUHU,SAASgE,iBATO,CACd,gMACA,mMACA,oKACA,0BACA,4LACA,sLAGkCZ,QAAQnE,SAAQ,SAAUsT,GAE1DA,EAAKiD,aAAa,SACa,OAA9BjD,EAAKjO,aAAa,SAAkD,KAA9BiO,EAAKjO,aAAa,UAEzDiO,EAAKlT,UAAUC,IAAI,oBACnBiT,EAAKZ,aAAa,SAAU,UAC5BY,EAAKkD,mBACH,YACA,+GCqBV,EA1C6B,CAE3BC,OAAQ,SAAUlP,GAEhBA,EAAQmP,SAAW,IAAIC,IAAKpP,EAAQqP,UAEpC,IAAIC,EAAgC,OAEpCA,EAAkBA,EAAkB,SAAWtP,EAAQmP,SAASI,OAASvP,EAAQmP,SAASK,SAAW,IAKrGF,GAFAA,GADAA,GADAA,GAAoC,mBACA,WAAatP,EAAQyP,MAAQ,KAC7B,SAAWzP,EAAQ0P,QAAU,KAE7B,WAAa1P,EAAQ2P,MAAM/S,OAAS,IAGxE,IAAIgT,EAAe,GAqBnB,OApBA5P,EAAQ6P,aAAapX,SAAS,SAAAqX,GAC5BF,EAAa7N,KAAM/B,EAAQmP,SAASK,SAAW,UAAYM,EAAc,IAAMA,EAAc,QAE/FR,EAAkBA,EAAkB,YAAcM,EAAahT,OAAS,IAExE0S,GAAoC,MCIpCxF,G,gBAAO3Q,OAAO2Q,IAAM,IAExBA,EAAIC,UAAcgG,EAElBjG,EAAIkG,UAAclD,EAClBhD,EAAImG,YAAcvC,EAClB5D,EAAIoG,SAAcC,EAElBrG,EAAIsB,MAAQ,CACRgF,mBAAoB,WAiBhB,GAfKtG,EAAIC,UAAUrF,SAAaoF,EAAIC,UAAUrF,QAAQK,cAAc,uDAChE+E,EAAIC,UAAUoC,6BAIbrC,EAAIC,UAAUrF,SAAaoF,EAAIC,UAAUrF,QAAQK,cAAc,gEAChE+E,EAAIC,UAAUK,2BAIbN,EAAIC,UAAUrF,SAAaoF,EAAIC,UAAUrF,QAAQK,cAAc,kDAChE+E,EAAIC,UAAUS,2BAA4BV,EAAIC,UAAUrF,QAAQK,cAAc,kDAI7E+E,EAAIC,UAAUrF,SAAaoF,EAAIC,UAAUrF,QAAQK,cAAc,uDAAyD,CACzH,IAAIiG,EAA8BlB,EAAIC,UAAUrF,QAAQK,cAAc,0EACtE+E,EAAIC,UAAUO,2BAA2BU,KAGjD+C,oBAAqB,WAEjB,IAAIsC,EAAc,EACbvG,EAAIY,aAAaC,YAEbnR,SAASuL,cAAc,8DACxBsL,GAA4B7W,SAASuL,cAAc,4DAA4D5K,cAE9GX,SAASuL,cAAc,gEACxBsL,GAA4B7W,SAASuL,cAAc,8DAA8D5K,cAEhHX,SAASuL,cAAc,mDACxBsL,GAA4B7W,SAASuL,cAAc,iDAAiD5K,eAI5G,IAAImW,EAAU9W,SAASuL,cAAc,aAChCuL,IACDA,EAAQxW,MAAMO,WAAagW,EAAc,OAGjDE,kBAAmBC,EACnBvH,UAAWA,EAEXqG,gBAAiBmB,GAMrB3G,EAAIY,aAAe,CACfgG,GAAI,gCACJ/F,UAAW,IAIf,IAAMgG,EAAqBxX,OAAOyX,WAAW9G,EAAIY,aAAagG,IAE9D5G,EAAIY,aAAaC,YAAYgG,EAAmB9T,QAEhD8T,EAAmBE,aAAY,SAACC,GAExBH,EAAmB9T,SACnBiN,EAAIY,aAAaC,WAAY,EAC7Bb,EAAIsB,MAAMgF,qBACVtG,EAAIC,UAAUa,sBAAsBd,EAAIC,UAAUc,2BAalDf,EAAIY,aAAaC,WAAY,EAC7Bb,EAAIsB,MAAMgF,qBACVtG,EAAIC,UAAUe,sBAAsBhB,EAAIC,UAAUgB,6B","file":"critical.js","sourcesContent":["const observerOptions = {\r\n\troot: null,\r\n\tthreshold: 0.15,\r\n\trootMargin: '0px 0px -50px 0px'\r\n};\r\n\r\nconst observer = new IntersectionObserver(entries => {\r\n\t\r\n\tentries.forEach(entry => {\r\n\t\tif (entry.isIntersecting) {\r\n\t\t\tentry.target.classList.add('animation');\r\n\t\t\tobserver.unobserve(entry.target);\r\n\t\t}\r\n\t});\r\n}, observerOptions);\r\n\r\nwindow.addEventListener('DOMContentLoaded', (event) => {\r\n\t\r\n\tconst sections = Array.from(document.getElementsByClassName('animate'));\r\n\t\r\n\tfor (let section of sections) {\r\n\t\tobserver.observe(section);\r\n\t}\r\n});\r\n","/* SLIDE UP */\r\nwindow.slideUp = function(target, duration=500) {\r\n\r\n\ttarget.style.transitionProperty = 'height, margin, padding';\r\n\ttarget.style.transitionDuration = duration + 'ms';\r\n\ttarget.style.boxSizing = 'border-box';\r\n\ttarget.style.height = target.offsetHeight + 'px';\r\n\ttarget.offsetHeight;\r\n\ttarget.style.overflow = 'hidden';\r\n\ttarget.style.height = 0;\r\n\ttarget.style.paddingTop = 0;\r\n\ttarget.style.paddingBottom = 0;\r\n\ttarget.style.marginTop = 0;\r\n\ttarget.style.marginBottom = 0;\r\n\twindow.setTimeout( () => {\r\n\t\t\t\ttarget.style.display = 'none';\r\n\t\t\t\ttarget.style.removeProperty('height');\r\n\t\t\t\ttarget.style.removeProperty('padding-top');\r\n\t\t\t\ttarget.style.removeProperty('padding-bottom');\r\n\t\t\t\ttarget.style.removeProperty('margin-top');\r\n\t\t\t\ttarget.style.removeProperty('margin-bottom');\r\n\t\t\t\ttarget.style.removeProperty('overflow');\r\n\t\t\t\ttarget.style.removeProperty('transition-duration');\r\n\t\t\t\ttarget.style.removeProperty('transition-property');\r\n\t\t\t\t//alert(\"!\");\r\n\t}, duration);\r\n};\r\n\r\n/* SLIDE DOWN */\r\nwindow.slideDown = function(target, duration=500) {\r\n\r\n\t\ttarget.style.removeProperty('display');\r\n\t\tlet display = window.getComputedStyle(target).display;\r\n\t\tif (display === 'none') display = 'block';\r\n\t\ttarget.style.display = display;\r\n\t\tlet height = target.offsetHeight;\r\n\t\ttarget.style.overflow = 'hidden';\r\n\t\ttarget.style.height = 0;\r\n\t\ttarget.style.paddingTop = 0;\r\n\t\ttarget.style.paddingBottom = 0;\r\n\t\ttarget.style.marginTop = 0;\r\n\t\ttarget.style.marginBottom = 0;\r\n\t\ttarget.offsetHeight;\r\n\t\ttarget.style.boxSizing = 'border-box';\r\n\t\ttarget.style.transitionProperty = \"height, margin, padding\";\r\n\t\ttarget.style.transitionDuration = duration + 'ms';\r\n\t\ttarget.style.height = height + 'px';\r\n\t\ttarget.style.removeProperty('padding-top');\r\n\t\ttarget.style.removeProperty('padding-bottom');\r\n\t\ttarget.style.removeProperty('margin-top');\r\n\t\ttarget.style.removeProperty('margin-bottom');\r\n\t\twindow.setTimeout( () => {\r\n\t\t\tif (!target.classList.contains(\"c-mobile-nav\")) {\r\n\t\t\t\ttarget.style.removeProperty('height');\r\n\t\t\t}\r\n\t\t\ttarget.style.removeProperty('overflow');\r\n\t\t\ttarget.style.removeProperty('transition-duration');\r\n\t\t\ttarget.style.removeProperty('transition-property');\r\n\t\t}, duration);\r\n};\r\n\r\n/* TOOGLE */\r\nwindow.slideToggle = function(target, duration = 500) {\r\n\t\tif (window.getComputedStyle(target).display === 'none') {\r\n\t\t\treturn slideDown(target, duration);\r\n\t\t} else {\r\n\t\t\treturn slideUp(target, duration);\r\n\t\t}\r\n};\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*!\n* tabbable 5.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\nvar candidateSelectors = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])', 'details>summary:first-of-type', 'details'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar matches = typeof Element === 'undefined' ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n\n candidates = candidates.filter(filter);\n return candidates;\n};\n\nvar isContentEditable = function isContentEditable(node) {\n return node.contentEditable === 'true';\n};\n\nvar getTabindex = function getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n\n if (!isNaN(tabindexAttr)) {\n return tabindexAttr;\n } // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n\n\n if (isContentEditable(node)) {\n return 0;\n } // in Chrome, , and elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n\n\n if ((node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n return 0;\n }\n\n return node.tabIndex;\n};\n\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\n\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\n\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\n\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\n\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\n\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n\n var radioScope = node.form || node.ownerDocument;\n\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n\n var radioSet;\n\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\n\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\n\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\nvar isHidden = function isHidden(node, displayCheck) {\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n\n if (!displayCheck || displayCheck === 'full') {\n while (node) {\n if (getComputedStyle(node).display === 'none') {\n return true;\n }\n\n node = node.parentElement;\n }\n } else if (displayCheck === 'non-zero-area') {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n\n return width === 0 && height === 0;\n }\n\n return false;\n};\n\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled || isHiddenInput(node) || isHidden(node, options.displayCheck) ||\n /* For a details element with a summary, the summary element gets the focused */\n isDetailsWithSummary(node)) {\n return false;\n }\n\n return true;\n};\n\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (!isNodeMatchingSelectorFocusable(options, node) || isNonTabbableRadio(node) || getTabindex(node) < 0) {\n return false;\n }\n\n return true;\n};\n\nvar tabbable = function tabbable(el, options) {\n options = options || {};\n var regularTabbables = [];\n var orderedTabbables = [];\n var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n candidates.forEach(function (candidate, i) {\n var candidateTabindex = getTabindex(candidate);\n\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate\n });\n }\n });\n var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function (a) {\n return a.node;\n }).concat(regularTabbables);\n return tabbableNodes;\n};\n\nvar focusable = function focusable(el, options) {\n options = options || {};\n var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n return candidates;\n};\n\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n\n if (!node) {\n throw new Error('No node provided');\n }\n\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n\n return isNodeMatchingSelectorTabbable(options, node);\n};\n\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');\n\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n\n if (!node) {\n throw new Error('No node provided');\n }\n\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n* focus-trap 6.4.0\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nimport { tabbable, isFocusable } from 'tabbable';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar activeFocusDelay;\n\nvar activeFocusTraps = function () {\n var trapQueue = [];\n return {\n activateTrap: function activateTrap(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n deactivateTrap: function deactivateTrap(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n}();\n\nvar isSelectableInput = function isSelectableInput(node) {\n return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n};\n\nvar isEscapeEvent = function isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n};\n\nvar isTabEvent = function isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n};\n\nvar delay = function delay(fn) {\n return setTimeout(fn, 0);\n}; // Array.find/findIndex() are not supported on IE; this replicates enough\n// of Array.findIndex() for our needs\n\n\nvar findIndex = function findIndex(arr, fn) {\n var idx = -1;\n arr.every(function (value, i) {\n if (fn(value)) {\n idx = i;\n return false; // break\n }\n\n return true; // next\n });\n return idx;\n};\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\n\n\nvar valueOrHandler = function valueOrHandler(value) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n\n return typeof value === 'function' ? value.apply(void 0, params) : value;\n};\n\nvar createFocusTrap = function createFocusTrap(elements, userOptions) {\n var doc = document;\n\n var config = _objectSpread2({\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true\n }, userOptions);\n\n var state = {\n // @type {Array}\n containers: [],\n // list of objects identifying the first and last tabbable nodes in all containers/groups in\n // the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{ container: HTMLElement, firstTabbableNode: HTMLElement|null, lastTabbableNode: HTMLElement|null }>}\n tabbableGroups: [],\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n var containersContain = function containersContain(element) {\n return state.containers.some(function (container) {\n return container.contains(element);\n });\n };\n\n var getNodeForOption = function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n\n if (!optionValue) {\n return null;\n }\n\n var node = optionValue;\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n\n if (!node) {\n throw new Error(\"`\".concat(optionName, \"` refers to no known node\"));\n }\n }\n\n if (typeof optionValue === 'function') {\n node = optionValue();\n\n if (!node) {\n throw new Error(\"`\".concat(optionName, \"` did not return a node\"));\n }\n }\n\n return node;\n };\n\n var getInitialFocusNode = function getInitialFocusNode() {\n var node;\n\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (containersContain(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n var firstTabbableGroup = state.tabbableGroups[0];\n var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error('Your focus-trap needs to have at least one focusable element');\n }\n\n return node;\n };\n\n var updateTabbableNodes = function updateTabbableNodes() {\n state.tabbableGroups = state.containers.map(function (container) {\n var tabbableNodes = tabbable(container);\n\n if (tabbableNodes.length > 0) {\n return {\n container: container,\n firstTabbableNode: tabbableNodes[0],\n lastTabbableNode: tabbableNodes[tabbableNodes.length - 1]\n };\n }\n\n return undefined;\n }).filter(function (group) {\n return !!group;\n }); // remove groups with no tabbable nodes\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n\n if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus')) {\n throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');\n }\n };\n\n var tryFocus = function tryFocus(node) {\n if (node === doc.activeElement) {\n return;\n }\n\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus({\n preventScroll: !!config.preventScroll\n });\n state.mostRecentlyFocusedNode = node;\n\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n\n var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {\n var node = getNodeForOption('setReturnFocus');\n return node ? node : previousActiveElement;\n }; // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n\n\n var checkPointerDown = function checkPointerDown(e) {\n if (containersContain(e.target)) {\n // allow the click since it ocurred inside the trap\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // if, on deactivation, we should return focus to the node originally-focused\n // when the trap was activated (or the configured `setReturnFocus` node),\n // then assume it's also OK to return focus to the outside node that was\n // just clicked, causing deactivation, as long as that node is focusable;\n // if it isn't focusable, then return focus to the original node focused\n // on activation (or the configured `setReturnFocus` node)\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked, whether it's focusable or not; by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node)\n returnFocus: config.returnFocusOnDeactivate && !isFocusable(e.target)\n });\n return;\n } // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n\n\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n } // otherwise, prevent the click\n\n\n e.preventDefault();\n }; // In case focus escapes the trap for some strange reason, pull it back in.\n\n\n var checkFocusIn = function checkFocusIn(e) {\n var targetContained = containersContain(e.target); // In Firefox when you Tab out of an iframe the Document is briefly focused.\n\n if (targetContained || e.target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = e.target;\n }\n } else {\n // escaped! pull it back in to where it just left\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }; // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n\n\n var checkTab = function checkTab(e) {\n updateTabbableNodes();\n var destinationNode = null;\n\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's tabbable\n // with tabIndex='-1' and was given initial focus\n var containerIndex = findIndex(state.tabbableGroups, function (_ref) {\n var container = _ref.container;\n return container.contains(e.target);\n });\n\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back in to...\n if (e.shiftKey) {\n // ...the last node in the last group\n destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (e.shiftKey) {\n // REVERSE\n // is the target the first tabbable node in a group?\n var startOfGroupIndex = findIndex(state.tabbableGroups, function (_ref2) {\n var firstTabbableNode = _ref2.firstTabbableNode;\n return e.target === firstTabbableNode;\n });\n\n if (startOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e.target) {\n // an exception case where the target is the container itself, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = destinationGroup.lastTabbableNode;\n }\n } else {\n // FORWARD\n // is the target the last tabbable node in a group?\n var lastOfGroupIndex = findIndex(state.tabbableGroups, function (_ref3) {\n var lastTabbableNode = _ref3.lastTabbableNode;\n return e.target === lastTabbableNode;\n });\n\n if (lastOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e.target) {\n // an exception case where the target is the container itself, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n\n var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n destinationNode = _destinationGroup.firstTabbableNode;\n }\n }\n } else {\n destinationNode = getNodeForOption('fallbackFocus');\n }\n\n if (destinationNode) {\n e.preventDefault();\n tryFocus(destinationNode);\n } // else, let the browser take care of [shift+]tab and move the focus\n\n };\n\n var checkKey = function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n trap.deactivate();\n return;\n }\n\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n };\n\n var checkClick = function checkClick(e) {\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n\n if (containersContain(e.target)) {\n return;\n }\n\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n }; //\n // EVENT LISTENERS\n //\n\n\n var addListeners = function addListeners() {\n if (!state.active) {\n return;\n } // There can be only one listening focus trap at a time\n\n\n activeFocusTraps.activateTrap(trap); // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n\n activeFocusDelay = config.delayInitialFocus ? delay(function () {\n tryFocus(getInitialFocusNode());\n }) : tryFocus(getInitialFocusNode());\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false\n });\n return trap;\n };\n\n var removeListeners = function removeListeners() {\n if (!state.active) {\n return;\n }\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n return trap;\n }; //\n // TRAP DEFINITION\n //\n\n\n trap = {\n activate: function activate(activateOptions) {\n if (state.active) {\n return this;\n }\n\n updateTabbableNodes();\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n var onActivate = activateOptions && activateOptions.onActivate ? activateOptions.onActivate : config.onActivate;\n\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return this;\n },\n deactivate: function deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n\n clearTimeout(activeFocusDelay);\n removeListeners();\n state.active = false;\n state.paused = false;\n activeFocusTraps.deactivateTrap(trap);\n var onDeactivate = deactivateOptions && deactivateOptions.onDeactivate !== undefined ? deactivateOptions.onDeactivate : config.onDeactivate;\n\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus = deactivateOptions && deactivateOptions.returnFocus !== undefined ? deactivateOptions.returnFocus : config.returnFocusOnDeactivate;\n\n if (returnFocus) {\n delay(function () {\n tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n });\n }\n\n return this;\n },\n pause: function pause() {\n if (state.paused || !state.active) {\n return this;\n }\n\n state.paused = true;\n removeListeners();\n return this;\n },\n unpause: function unpause() {\n if (!state.paused || !state.active) {\n return this;\n }\n\n state.paused = false;\n updateTabbableNodes();\n addListeners();\n return this;\n },\n updateContainerElements: function updateContainerElements(containerElements) {\n var elementsAsArray = [].concat(containerElements).filter(Boolean);\n state.containers = elementsAsArray.map(function (element) {\n return typeof element === 'string' ? doc.querySelector(element) : element;\n });\n\n if (state.active) {\n updateTabbableNodes();\n }\n\n return this;\n }\n }; // initialize container elements\n\n trap.updateContainerElements(elements);\n return trap;\n};\n\nexport { createFocusTrap };\n//# sourceMappingURL=focus-trap.esm.js.map\n","const App__appHeader = {\r\n\r\n element: null,\r\n focusTrap: false,\r\n\r\n // Clone navs\r\n utilityNav: null,\r\n primaryNav: null,\r\n\r\n portalNavTrigger: null,\r\n portalNav: null,\r\n\r\n // Cache some elements for easier targeting\r\n largeScreenUtilityNavWrapper: null,\r\n largeScreenPrimaryNavWrapper: null,\r\n smallScreenNavPanel: null,\r\n smallScreenUtilityNavWrapper: null,\r\n smallScreenPrimaryNavWrapper: null,\r\n\r\n smallScreenNavPanelOpenTrigger: false,\r\n smallScreenNavPanelCloseTrigger: false,\r\n\r\n init: function () {\r\n\r\n App.appHeader.element = document.querySelector('[data-hook=appHeader]');\r\n\r\n App.appHeader.largeScreenUtilityNavWrapper = document.querySelector('[data-hook=appHeader] > [data-hook=appHeader__utilityNavWrapper]');\r\n App.appHeader.largeScreenPrimaryNavWrapper = document.querySelector('[data-hook=appHeader__primaryBanner] [data-hook=appHeader__primaryNavWrapper]');\r\n App.appHeader.smallScreenNavPanel = document.querySelector('[data-hook=appHeader__smallScreenNavPanel]');\r\n App.appHeader.smallScreenUtilityNavWrapper = document.querySelector('[data-hook=appHeader__smallScreenNavPanel] [data-hook=appHeader__utilityNavWrapper]');\r\n App.appHeader.smallScreenPrimaryNavWrapper = document.querySelector('[data-hook=appHeader__smallScreenNavPanel] [data-hook=appHeader__primaryNavWrapper]');\r\n\r\n if ( document.querySelector('[data-hook=appHeader__primaryNav]') && document.querySelector('[data-hook=appHeader__utilityNav]') ) {\r\n\r\n App.appHeader.utilityNav = document.querySelector('[data-hook=appHeader__utilityNav]').cloneNode(true),\r\n App.appHeader.primaryNav = document.querySelector('[data-hook=appHeader__primaryNav]').cloneNode(true),\r\n\r\n window.addEventListener('scroll', (e) => {\r\n clearTimeout(App.appHeader.scrollThrottle);\r\n App.appHeader.scrollThrottle = setTimeout(function () {\r\n // throttle code inside scroll to once every 20 milliseconds\r\n App.appHeader.toggleHeaderIsScrolledClass();\r\n }, 20);\r\n },\r\n false\r\n );\r\n\r\n let portalNavTrigger = document.querySelector('[data-hook=appHeader__utilityNavPortalMenuTrigger]');\r\n if ( portalNavTrigger ) {\r\n App.appHeader.portalNavTrigger = portalNavTrigger.cloneNode(true);\r\n }\r\n\r\n let portalNav = document.querySelector('[data-hook=appHeader__utilityNavPortalMenu]');\r\n if ( portalNav ) {\r\n App.appHeader.portalNav = portalNav.cloneNode(true);\r\n }\r\n\r\n /* Setup click handlers\r\n * These are setup as delegated event listeners on appHeader since we are\r\n * rebuilding these navs as needed for small/large screens.\r\n * =========================================================================== */\r\n\r\n /* Click handler for: appHeader__globalSearchPanelTrigger\r\n * Toggles global search panel\r\n * =========================================================================== */\r\n App.appHeader.element.addEventListener('click', (e) => {\r\n if ( !e.target.matches('[data-hook=appHeader__globalSearchPanelTrigger], [data-hook=appHeader__smallScreenNavPanelSearchButton]') ) {\r\n return false;\r\n }\r\n e.preventDefault();\r\n\r\n let appHeader__globalSearchPanel = App.appHeader.element.querySelector('[data-hook=appHeader__globalSearchPanel]');\r\n if ( appHeader__globalSearchPanel.getAttribute('aria-hidden') == 'true' ) {\r\n App.appHeader.globalSearchPanel__open();\r\n } else {\r\n App.appHeader.globalSearchPanel__close();\r\n }\r\n });\r\n\r\n /* Click handler for: appHeader__globalSearchPanelCloseButton\r\n * Toggles global search panel\r\n * =========================================================================== */\r\n App.appHeader.element.addEventListener('click', (e) => {\r\n if ( !e.target.matches('[data-hook=appHeader__globalSearchPanelCloseButton]') ) {\r\n return false;\r\n }\r\n e.preventDefault();\r\n\r\n App.appHeader.globalSearchPanel__close();\r\n });\r\n\r\n /* Submit handler for: appHeader__globalSearchHeaderForm\r\n * REdirects to proper search results url\r\n * =========================================================================== */\r\n App.appHeader.element.addEventListener('submit', (e) => {\r\n if ( !e.target.matches('[data-hook=appHeader__globalSearchHeaderForm]') ) {\r\n return false;\r\n }\r\n e.preventDefault();\r\n\r\n App.appHeader.globalSearch__submit();\r\n });\r\n\r\n /* Click handler for: appHeader__primaryNavItemPanelTrigger\r\n * Toggles Portal Dashboard utility menu\r\n * =========================================================================== */\r\n App.appHeader.element.addEventListener('click', (e) => {\r\n if ( !e.target.matches('[data-hook=appHeader__utilityNavPortalMenuTrigger]') ) {\r\n return false;\r\n }\r\n e.preventDefault();\r\n\r\n App.appHeader.togglePortalUtilityNavMenu( e.target );\r\n });\r\n\r\n /* Click handler for: appHeader__primaryNavItemPanelTrigger\r\n * Toggles Subnav panel\r\n * =========================================================================== */\r\n App.appHeader.element.addEventListener('click', (e) => {\r\n if ( !e.target.matches('[data-hook=appHeader__primaryNavItemPanelTrigger]') ) {\r\n return false;\r\n }\r\n e.preventDefault();\r\n\r\n let primaryNavItem = e.target.parentElement;\r\n if ( primaryNavItem.classList.contains('is-open') ) {\r\n App.appHeader.primaryNavItemPanel__close(primaryNavItem);\r\n } else {\r\n App.appHeader.primaryNavItemPanel__open(primaryNavItem);\r\n }\r\n\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelSearchButton]').style.display = \"none\";\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelBackButton]').style.display = \"inline\";\r\n });\r\n\r\n /* Click handler for: appHeader__smallScreenNavPanelBackButton\r\n * =========================================================================== */\r\n App.appHeader.element.addEventListener('click', (e) => {\r\n if ( !e.target.matches('[data-hook=appHeader__smallScreenNavPanelBackButton]') ) {\r\n return false;\r\n }\r\n e.preventDefault();\r\n\r\n let primaryNavItem = App.appHeader.element.querySelector('[data-hook=appHeader__primaryNavItem].is-open');\r\n App.appHeader.primaryNavItemPanel__close(primaryNavItem);\r\n App.appHeader.globalSearchPanel__close();\r\n\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelSearchButton]').style.display = \"inline\";\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelBackButton]').style.display = \"none\";\r\n });\r\n\r\n /* Click handler for: appHeader__smallScreenNavPanelSearchButton\r\n * =========================================================================== */\r\n App.appHeader.element.addEventListener('click', (e) => {\r\n if ( !e.target.matches('[data-hook=appHeader__smallScreenNavPanelSearchButton]') ) {\r\n return false;\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n /* Click handler for: appHeader__smallScreenNavPanelTrigger\r\n * =========================================================================== */\r\n // App.appHeader.element.querySelectorAll('[data-hook=appHeader__smallScreenNavPanelTrigger]').forEach(function (smallScreenNavPanelTrigger) {\r\n // smallScreenNavPanelTrigger.addEventListener('click', (e) => {\r\n // e.preventDefault();\r\n // let smallScreenNavPanelTrigger = App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelTrigger]');\r\n\r\n // if (smallScreenNavPanelTrigger.classList.contains('is-active')) {\r\n // App.appHeader.smallScreenNavPanel__close();\r\n // } else {\r\n // App.appHeader.smallScreenNavPanel__open();\r\n // }\r\n // });\r\n // });\r\n\r\n if ( App.mediaQueries.isLargeUp ) {\r\n App.appHeader.largeScreenNav__build( App.appHeader.smallScreenNav__destroy );\r\n } else {\r\n App.appHeader.smallScreenNav__build( App.appHeader.largeScreenNav__destroy );\r\n }\r\n\r\n }\r\n\r\n },\r\n\r\n togglePortalUtilityNavMenu: function ( utilityNavPortalMenuTrigger ) {\r\n let utilityNavPortalMenu = document.querySelector('[data-hook=appHeader__utilityNavPortalMenu]');\r\n\r\n utilityNavPortalMenuTrigger.classList.toggle('has-icon-chevron-down');\r\n utilityNavPortalMenuTrigger.classList.toggle('has-icon-chevron-up');\r\n\r\n utilityNavPortalMenu.classList.toggle('is-open');\r\n\r\n if ( utilityNavPortalMenu.classList.contains('is-open') ) {\r\n document.querySelector('[data-hook=appOverlay]').classList.add('is-active');\r\n\r\n utilityNavPortalMenuTrigger.setAttribute('aria-expanded', 'true');\r\n utilityNavPortalMenuTrigger.setAttribute('aria-label', 'Close Portal Nav Menu');\r\n utilityNavPortalMenu.setAttribute('aria-hidden', 'false');\r\n App.appHeader.focusTrap = App.utils.focusTrap.createFocusTrap(utilityNavPortalMenu.parentNode, {\r\n allowOutsideClick: true,\r\n });\r\n App.appHeader.focusTrap.activate();\r\n } else {\r\n document.querySelector('[data-hook=appOverlay]').classList.remove('is-active');\r\n\r\n utilityNavPortalMenuTrigger.setAttribute('aria-expanded', 'false');\r\n utilityNavPortalMenuTrigger.setAttribute('aria-label', 'Open Portal Nav Menu');\r\n utilityNavPortalMenu.setAttribute('aria-hidden', 'true');\r\n if ( App.appHeader.focusTrap ) {\r\n App.appHeader.focusTrap.deactivate();\r\n }\r\n }\r\n },\r\n\r\n toggleHeaderIsScrolledClass: function () {\r\n let scrollTop = window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n if ( scrollTop > 10 ) {\r\n App.appHeader.element.classList.add('is-scrolled');\r\n } else {\r\n App.appHeader.element.classList.remove('is-scrolled');\r\n }\r\n },\r\n\r\n largeScreenNav__build: function ( callback ) {\r\n // console.log('App.appHeader.largeScreenNav__build()');\r\n if ( !App.appHeader.utilityNav && !App.appHeader.primaryNav ) {\r\n return false;\r\n }\r\n\r\n document.querySelector('body').classList.remove('remove-scrollbar');\r\n\r\n let largeScreenNavExists = App.appHeader.largeScreenPrimaryNavWrapper.querySelector('[data-hook=appHeader__primaryNav]');\r\n if ( largeScreenNavExists ) {\r\n return false;\r\n }\r\n\r\n App.appHeader.largeScreenUtilityNavWrapper.appendChild( App.appHeader.utilityNav );\r\n App.appHeader.largeScreenPrimaryNavWrapper.appendChild( App.appHeader.primaryNav );\r\n\r\n callback();\r\n },\r\n\r\n largeScreenNav__destroy: function () {\r\n // console.log('App.appHeader.largeScreenNav__destroy()');\r\n\r\n App.appHeader.largeScreenUtilityNavWrapper.innerHTML = \"\";\r\n App.appHeader.largeScreenPrimaryNavWrapper.innerHTML = \"\";\r\n },\r\n\r\n smallScreenNav__build: function (callback) {\r\n // console.log('App.appHeader.smallScreenNav__build()');\r\n if ( !App.appHeader.utilityNav && !App.appHeader.primaryNav ) {\r\n return false;\r\n }\r\n\r\n let smallScreenNavExists = App.appHeader.smallScreenPrimaryNavWrapper.querySelector('[data-hook=appHeader__primaryNav]');\r\n if ( smallScreenNavExists ) {\r\n }\r\n\r\n App.appHeader.smallScreenUtilityNavWrapper.appendChild( App.appHeader.utilityNav );\r\n App.appHeader.smallScreenPrimaryNavWrapper.appendChild( App.appHeader.primaryNav );\r\n\r\n if ( App.appHeader.portalNavTrigger ) {\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenPortalMenuWrapper]').appendChild(App.appHeader.portalNavTrigger);\r\n }\r\n\r\n if ( App.appHeader.portalNav ) {\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenPortalMenuWrapper]').appendChild(App.appHeader.portalNav);\r\n }\r\n\r\n let selectors = [];\r\n\r\n // PREVENT focus on...\r\n selectors = [\r\n '[data-hook=appHeader__smallScreenNavPanel] button',\r\n '[data-hook=appHeader__smallScreenNavPanel] a',\r\n\r\n '[data-hook=appHeader__smallScreenSideNavPanel] button',\r\n '[data-hook=appHeader__smallScreenSideNavPanel] a',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.setAttribute('tabindex', '-1'));\r\n\r\n // ALLOW focus on...\r\n selectors = [\r\n '[data-hook=appHeader__logo]',\r\n '[data-hook=appHeader__smallScreenNavPanelOpenTrigger]',\r\n '[data-hook=sideNav] > p > a',\r\n '[data-hook=sideNav__menuTrigger]',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n\r\n /* Click handler for: appHeader__smallScreenNavPanelOpenTrigger\r\n * =========================================================================== */\r\n App.appHeader.smallScreenNavPanelOpenTrigger = App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelOpenTrigger]');\r\n if (App.appHeader.smallScreenNavPanelOpenTrigger) {\r\n App.appHeader.smallScreenNavPanelOpenTrigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n App.appHeader.smallScreenNavPanel__open();\r\n }\r\n );\r\n\r\n App.appHeader.smallScreenNavPanelOpenTrigger.style.opacity = 1;\r\n\r\n }\r\n\r\n /* Click handler for: appHeader__smallScreenNavPanelCloseTrigger\r\n * =========================================================================== */\r\n App.appHeader.smallScreenNavPanelCloseTrigger = App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelCloseTrigger]');\r\n if (App.appHeader.smallScreenNavPanelCloseTrigger) {\r\n App.appHeader.smallScreenNavPanelCloseTrigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n App.appHeader.smallScreenNavPanel__close();\r\n }\r\n );\r\n }\r\n\r\n callback();\r\n },\r\n\r\n smallScreenNav__destroy: function () {\r\n // console.log('App.appHeader.smallScreenNav__destroy');\r\n App.appHeader.smallScreenUtilityNavWrapper.innerHTML = \"\";\r\n App.appHeader.smallScreenPrimaryNavWrapper.innerHTML = \"\";\r\n App.appHeader.smallScreenNavPanel.classList.remove('is-open');\r\n App.appHeader.smallScreenNavPanelOpenTrigger = false;\r\n App.appHeader.smallScreenNavPanelCloseTrigger = false;\r\n\r\n App.appHeader.element.querySelectorAll('[data-hook=appHeader__primaryNavItemPanel] a').forEach((item) => item.removeAttribute('tabindex'));\r\n },\r\n\r\n smallScreenNavPanel__initFocusables: function () {\r\n let selectors = [];\r\n\r\n // PREVENT focus on...\r\n selectors = [\r\n '[data-hook=appHeader] a',\r\n '[data-hook=appHeader] button',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.setAttribute('tabindex', '-1'));\r\n\r\n // ALLOW focus on...\r\n selectors = [\r\n '[data-hook=appHeader__smallScreenNavPanelCloseTrigger]',\r\n '[data-hook=appHeader__smallScreenNavPanelSearchButton]',\r\n '[data-hook=appHeader__primaryNavItemPanelTrigger]',\r\n '[data-hook=appHeader__utilityNav] a',\r\n '[data-hook=appHeader__primaryNavCta] a',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n },\r\n\r\n smallScreenNavPanel__open: function () {\r\n // console.log('App.appHeader.smallScreenNavPanel__open()');\r\n\r\n App.appHeader.smallScreenNavPanel__initFocusables();\r\n\r\n // Adjust open trigger\r\n App.appHeader.smallScreenNavPanelOpenTrigger.style.opacity = 0;\r\n // App.appHeader.smallScreenNavPanelOpenTrigger.setAttribute('aria-expanded', 'true');\r\n\r\n // Adjust close trigger\r\n // App.appHeader.smallScreenNavPanelCloseTrigger.setAttribute('aria-expanded', 'true');\r\n App.appHeader.smallScreenNavPanelCloseTrigger.focus();\r\n\r\n App.appHeader.smallScreenNavPanel.classList.add('is-open');\r\n App.appHeader.element.querySelectorAll('[data-hook=appHeader__primaryNavItem]').forEach((item) => item.classList.remove('is-open'));\r\n\r\n if ( App.mediaQueries.isLargeUp ) {\r\n } else {\r\n document.querySelector('body').classList.add('remove-scrollbar');\r\n }\r\n\r\n // Hide OneTrust cookie button/banner\r\n // let oneTrust = document.getElementById('onetrust-consent-sdk');\r\n // if ( oneTrust ) {\r\n // oneTrust.style.display = 'none';\r\n // }\r\n\r\n App.appHeader.focusTrap = App.utils.focusTrap.createFocusTrap('[data-hook=appHeader]');\r\n App.appHeader.focusTrap.activate();\r\n },\r\n\r\n smallScreenNavPanel__close: function () {\r\n // console.log('App.appHeader.smallScreenNavPanel__close()');\r\n\r\n let selectors = [];\r\n\r\n // PREVENT focus on...\r\n selectors = [\r\n '[data-hook=appHeader__smallScreenNavPanelCloseTrigger]',\r\n '[data-hook=appHeader__smallScreenNavPanelSearchButton]',\r\n '[data-hook=appHeader__primaryNavItemPanelTrigger]',\r\n '[data-hook=appHeader__utilityNav] a',\r\n '[data-hook=appHeader__primaryNavCta] a',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.setAttribute('tabindex', '-1'));\r\n\r\n // ALLOW focus on...\r\n selectors = [\r\n '[data-hook=appHeader__logo]',\r\n '[data-hook=appHeader__smallScreenNavPanelOpenTrigger]',\r\n '[data-hook=sideNav] > p > a',\r\n '[data-hook=sideNav__menuTrigger]',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n\r\n App.appHeader.element.querySelectorAll('[data-hook=appHeader__primaryNavItem]').forEach((item) => item.classList.remove('is-open'));\r\n\r\n if ( App.mediaQueries.isLargeUp ) {\r\n // ...\r\n } else {\r\n document.querySelector('body').classList.remove('remove-scrollbar');\r\n\r\n // Make sure Global Search is closed\r\n App.appHeader.globalSearchPanel__close();\r\n\r\n // Close the panel\r\n App.appHeader.smallScreenNavPanel.classList.remove('is-open');\r\n\r\n // Adjust open trigger\r\n App.appHeader.smallScreenNavPanelOpenTrigger.style.opacity = 100;\r\n // App.appHeader.smallScreenNavPanelOpenTrigger.setAttribute('aria-expanded', 'false')\r\n App.appHeader.smallScreenNavPanelOpenTrigger.focus();\r\n\r\n // Adjust close trigger\r\n // App.appHeader.smallScreenNavPanelCloseTrigger.setAttribute('aria-expanded', 'false');\r\n }\r\n\r\n // Restore focusability on other items\r\n App.appHeader.element.querySelector('[data-hook=appHeader__logo]').removeAttribute('tabindex');\r\n App.appHeader.element.querySelectorAll('[data-hook=appHeader__alertBanner] a').forEach((item) => item.removeAttribute('tabindex'));\r\n\r\n // Show OneTrust cookie button/banner\r\n // let oneTrust = document.getElementById('onetrust-consent-sdk');\r\n // if ( oneTrust ) {\r\n // oneTrust.style.display = 'initial';\r\n // }\r\n\r\n if ( App.appHeader.focusTrap ) {\r\n App.appHeader.focusTrap.deactivate();\r\n }\r\n },\r\n\r\n primaryNavItemPanel__open: function ( primaryNavItem ) {\r\n // console.log('App.appHeader.primaryNavItemPanel__open()');\r\n\r\n // Check for and close other open panel\r\n let openPanel = App.appHeader.element.querySelector('[data-hook=appHeader__primaryNavItem].is-open');\r\n if ( openPanel ) {\r\n openPanel.classList.remove('is-open');\r\n }\r\n\r\n let primaryNavItemPanelTrigger = primaryNavItem.querySelector('[data-hook=appHeader__primaryNavItemPanelTrigger]');\r\n primaryNavItemPanelTrigger.setAttribute('aria-expanded', 'true');\r\n\r\n let primaryNavItemPanel = primaryNavItem.querySelector('[data-hook=appHeader__primaryNavItemPanel]');\r\n primaryNavItemPanel.setAttribute('aria-hidden', 'false');\r\n\r\n primaryNavItem.classList.add('is-open');\r\n\r\n let selectors = [];\r\n\r\n // PREVENT focus on...\r\n selectors = [\r\n '[data-hook=appHeader] a',\r\n '[data-hook=appHeader] button',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.setAttribute('tabindex', '-1'));\r\n\r\n if ( App.mediaQueries.isLargeUp ) {\r\n document.querySelector('[data-hook=appOverlay]').classList.add('is-active');\r\n\r\n // ALLOW focus on this item and it's sub elements\r\n primaryNavItemPanelTrigger.removeAttribute('tabindex');\r\n primaryNavItem.querySelectorAll('[data-hook=appHeader__primaryNavItemPanel] a').forEach((item) => item.removeAttribute('tabindex'));\r\n\r\n App.appHeader.focusTrap = App.utils.focusTrap.createFocusTrap('[data-hook=appHeader]', {\r\n allowOutsideClick: true,\r\n }\r\n );\r\n App.appHeader.focusTrap.activate();\r\n } else {\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelHeader]').classList.add('is-back-to-main');\r\n\r\n // ALLOW focus on...\r\n primaryNavItem.querySelectorAll('[data-hook=appHeader__primaryNavItemPanel] a').forEach((item) => item.removeAttribute('tabindex'));\r\n selectors = [\r\n '[data-hook=appHeader__smallScreenNavPanelCloseTrigger]',\r\n '[data-hook=appHeader__smallScreenNavPanelBackButton]',\r\n '[data-hook=appHeader__primaryNavCta] a',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n\r\n App.appHeader.focusTrap = App.utils.focusTrap.createFocusTrap('[data-hook=appHeader]', {\r\n initialFocus: App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelBackButton]'),\r\n }\r\n );\r\n App.appHeader.focusTrap.activate();\r\n }\r\n },\r\n\r\n primaryNavItemPanel__close: function ( primaryNavItem ) {\r\n // console.log('App.appHeader.primaryNavItemPanel__close()');\r\n\r\n if ( primaryNavItem ) {\r\n let primaryNavItemPanelTrigger = primaryNavItem.querySelector('[data-hook=appHeader__primaryNavItemPanelTrigger]');\r\n let primaryNavItemPanel = primaryNavItem.querySelector('[data-hook=appHeader__primaryNavItemPanel]');\r\n\r\n primaryNavItem.classList.remove('is-open');\r\n\r\n // PREVENT focus on this item's sub elements\r\n primaryNavItem.querySelectorAll('[data-hook=appHeader__primaryNavItemPanel] a').forEach((item) => item.setAttribute('tabindex', '-1'));\r\n\r\n primaryNavItemPanelTrigger.setAttribute('aria-expanded', 'false');\r\n primaryNavItemPanel.setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n let selectors = [];\r\n\r\n if ( App.mediaQueries.isLargeUp ) {\r\n selectors = [\r\n '[data-hook=appHeader] a',\r\n '[data-hook=appHeader] button',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n\r\n document.querySelector('[data-hook=appOverlay]').classList.remove('is-active');\r\n } else {\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelHeader]').classList.remove('is-back-to-main');\r\n\r\n // PREVENT focus on...\r\n selectors = [\r\n '[data-hook=appHeader] a',\r\n '[data-hook=appHeader] button',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.setAttribute('tabindex', '-1'));\r\n\r\n // Allow focus on...\r\n App.appHeader.smallScreenNavPanel__initFocusables();\r\n }\r\n\r\n if ( App.appHeader.focusTrap ) {\r\n App.appHeader.focusTrap.deactivate();\r\n }\r\n },\r\n\r\n globalSearchPanel__open: function () {\r\n // console.log('App.appHeader.globalSearchPanel__open()');\r\n\r\n let globalSearchPanel = document.querySelector('[data-hook=appHeader] [data-hook=appHeader__globalSearchPanel]');\r\n\r\n globalSearchPanel.setAttribute('aria-hidden', false);\r\n globalSearchPanel.querySelector('input[type=text]').focus();\r\n\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelSearchButton]').style.display = \"none\";\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelBackButton]').style.display = \"inline\";\r\n\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelHeader]').classList.add('is-back-to-main');\r\n\r\n let selectors = [];\r\n\r\n // PREVENT focus on...\r\n selectors = [\r\n '[data-hook=appHeader] a',\r\n '[data-hook=appHeader] button',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.setAttribute('tabindex', '-1'));\r\n\r\n if ( App.mediaQueries.isLargeUp ) {\r\n document.querySelector('[data-hook=appOverlay]').classList.add('is-active');\r\n\r\n // ALLOW focus on...\r\n selectors = [\r\n '[data-hook=appHeader__globalSearchPanelCloseButton]',\r\n '[data-hook=appHeader] form *',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n } else {\r\n // ALLOW focus on...\r\n selectors = [\r\n '[data-hook=appHeader__smallScreenNavPanelCloseTrigger]',\r\n '[data-hook=appHeader__smallScreenNavPanelBackButton]',\r\n '[data-hook=appHeader] form *',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n }\r\n\r\n App.appHeader.focusTrap = App.utils.focusTrap.createFocusTrap('[data-hook=appHeader]', {\r\n initialFocus: App.appHeader.element.querySelector('[data-hook=globalSearch__input]'),\r\n allowOutsideClick: true,\r\n }\r\n );\r\n\r\n App.appHeader.focusTrap.activate();\r\n },\r\n\r\n globalSearchPanel__close: function () {\r\n // console.log('App.appHeader.globalSearchPanel__close()');\r\n\r\n let globalSearchPanel = document.querySelector('[data-hook=appHeader] [data-hook=appHeader__globalSearchPanel]');\r\n globalSearchPanel.setAttribute('aria-hidden', true);\r\n\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelSearchButton]').style.display = \"inline\";\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelBackButton]').style.display = \"none\";\r\n\r\n App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelHeader]').classList.remove('is-back-to-main');\r\n\r\n let selectors = [];\r\n\r\n if ( App.mediaQueries.isLargeUp ) {\r\n // ALLOW focus on...\r\n selectors = [\r\n '[data-hook=appHeader] a',\r\n '[data-hook=appHeader] button',\r\n ];\r\n App.appHeader.element.querySelectorAll(selectors.join()).forEach((item) => item.removeAttribute('tabindex'));\r\n\r\n document.querySelector('[data-hook=appOverlay]').classList.remove('is-active');\r\n\r\n if ( App.appHeader.focusTrap ) {\r\n App.appHeader.focusTrap.deactivate({\r\n onDeactivate: App.appHeader.element.querySelector('[data-hook=appHeader__globalSearchPanelTrigger]').focus(),\r\n });\r\n }\r\n } else {\r\n if (App.appHeader.focusTrap) {\r\n App.appHeader.focusTrap.deactivate({\r\n onDeactivate: App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanelSearchButton]').focus(),\r\n });\r\n }\r\n }\r\n },\r\n\r\n globalSearch__submit: function () {\r\n // console.log('App.appHeader.globalSearch__submit()');\r\n let globalSearchPanel = document.querySelector('[data-hook=appHeader] [data-hook=appHeader__globalSearchPanel]');\r\n const landingUrl = globalSearchPanel.getAttribute('data-landing-url');\r\n const paramValue = globalSearchPanel.querySelector('[data-hook=globalSearch__input]').value;\r\n\r\n if ( paramValue === \"\" ) {\r\n return false;\r\n } else {\r\n window.location.href = `${landingUrl}?keyword=${paramValue}`;\r\n }\r\n },\r\n}\r\n\r\nexport default App__appHeader;\r\n","\r\nconst App__accordion = {\r\n\r\n init: function() {\r\n // Attach event listeners\r\n document.querySelectorAll('[data-hook=accordionGroupItem__title]').forEach ( function( accordionGroupItem__title ) {\r\n accordionGroupItem__title.addEventListener('click', function(e) {\r\n e.preventDefault()\r\n let accordionGroupItem = e.target.closest('[data-hook=accordionGroupItem]');\r\n if ( accordionGroupItem__title.getAttribute('aria-expanded') == 'false' ) {\r\n App__accordion.open( accordionGroupItem )\r\n } else {\r\n App__accordion.close( accordionGroupItem )\r\n }\r\n })\r\n })\r\n },\r\n\r\n open: function( accordionGroupItem ) {\r\n accordionGroupItem.querySelector('[data-hook=accordionGroupItem__title]').setAttribute('aria-expanded', 'true')\r\n accordionGroupItem.querySelector('[data-hook=accordionGroupItem__content]').style.display = 'block'\r\n accordionGroupItem.querySelector('[data-hook=accordionGroupItem__content]').setAttribute('aria-hidden', 'false')\r\n\r\n // If bottom of title is not in viewport, scroll up a bit to make it obvious that new content has appeared\r\n let accordionGroupItemTitleBoundingBox = accordionGroupItem.querySelector('[data-hook=accordionGroupItem__title]').getBoundingClientRect()\r\n if ( accordionGroupItemTitleBoundingBox.bottom > (window.innerHeight || document.documentElement.clientHeight) ) {\r\n window.scrollBy({\r\n top: 200,\r\n behavior: 'smooth'\r\n });\r\n }\r\n },\r\n\r\n close: function( accordionGroupItem ) {\r\n accordionGroupItem.querySelector('[data-hook=accordionGroupItem__title]').setAttribute('aria-expanded', 'false')\r\n accordionGroupItem.querySelector('[data-hook=accordionGroupItem__content]').style.display = 'none'\r\n accordionGroupItem.querySelector('[data-hook=accordionGroupItem__content]').setAttribute('aria-hidden', 'true')\r\n }\r\n}\r\n\r\n\r\nexport default App__accordion;\r\n","\r\nconst App__globalAlert = {\r\n\r\n init: function () {\r\n const alertClose = document.querySelector(\"[data-hook=appHeader__alertBannerCloseTrigger]\");\r\n const globalAlertBanner = document.querySelector(\"[data-hook=appHeader__alertBanner]\");\r\n\r\n let expiration;\r\n if (globalAlertBanner) {\r\n expiration = globalAlertBanner.getAttribute(\"data-expiration\") / 24;\r\n }\r\n\r\n const closeAlert = function (e) {\r\n e.preventDefault();\r\n // alertBar.classList.add(\"hide\");\r\n App__globalAlert.createCookie(\"alertBar\", \"hideAlert\", expiration);\r\n globalAlertBanner.classList.remove(\"is-visible\");\r\n App.utils.adjustBodyTopMargin();\r\n };\r\n\r\n const getCookie = function (name) {\r\n let value = \"; \" + document.cookie;\r\n let parts = value.split(\"; \" + name + \"=\");\r\n if (parts.length == 2) return parts.pop().split(\";\").shift();\r\n };\r\n\r\n\r\n if (alertClose) {\r\n alertClose.addEventListener(\"click\", closeAlert, false);\r\n }\r\n\r\n let cookieis = getCookie(\"alertBar\");\r\n if (cookieis === \"hideAlert\") {\r\n if (globalAlertBanner) {\r\n globalAlertBanner.classList.remove(\"is-visible\");\r\n }\r\n } else {\r\n if (globalAlertBanner) {\r\n globalAlertBanner.classList.add(\"is-visible\");\r\n }\r\n }\r\n\r\n // if ( App.mediaQueries.isLargeUp ) {\r\n // } else {\r\n // document.querySelector('body').style.paddingTop = document.querySelector('[data-hook=appHeader]').offsetHeight + 'px';\r\n // }\r\n\r\n },\r\n\r\n createCookie: function ( name, value, days ) {\r\n let expires = \"\";\r\n if (days) {\r\n let date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n expires = \"; expires=\" + date.toGMTString();\r\n } else {\r\n expires = \"\";\r\n }\r\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\r\n }\r\n\r\n};\r\n\r\nexport default App__globalAlert;\r\n","const App__logoZone = {\r\n\r\n init: function() {\r\n const logoZoneItems = document.querySelectorAll('[data-hook=logoZoneItem]');\r\n\r\n // Make entire card clickable\r\n logoZoneItems.forEach(function( logoZoneItem ) {\r\n\r\n logoZoneItem.querySelectorAll('a').forEach(function( logoZoneItemLink ) {\r\n logoZoneItemLink.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n });\r\n });\r\n\r\n logoZoneItem.addEventListener('click', (e) => {\r\n let link = logoZoneItem.querySelector('a');\r\n let target = link.getAttribute('target');\r\n\r\n if ( link ) {\r\n if ( target === '_blank' ) {\r\n window.open( link );\r\n return false;\r\n } else {\r\n window.location = link;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default App__logoZone;\r\n","const App__externalLinkClass = {\r\n\r\n add: function () {\r\n let selectors = [\r\n '.app-header__alert-banner-content a:not([href*=\"bot.com\"]):not([href*=\"bot-lh\"]):not([href*=\"website-app-trbot\"]):not([href=\"#\"]):not([href^=\"#main\"]):not([href^=\"/\"]):not([href^=\"mailto\"])',\r\n '.app-header__utility-nav-portal-menu a:not([href*=\"bot.com\"]):not([href*=\"bot-lh\"]):not([href*=\"website-app-trbot\"]):not([href=\"#\"]):not([href^=\"#main\"]):not([href^=\"/\"]):not([href^=\"mailto\"])',\r\n 'main a:not([href*=\"bot.com\"]):not([href*=\"bot-lh\"]):not([href*=\"website-app-trbot\"]):not([href^=\"#\"]):not([href^=\"#main\"]):not([href^=\"/\"]):not([href^=\"mailto\"])',\r\n 'main a[target=\"_blank\"]',\r\n '.app-footer__primary-nav-list a:not([href*=\"bot.com\"]):not([href*=\"bot-lh\"]):not([href*=\"website-app-trbot\"]):not([href=\"#\"]):not([href^=\"#main\"]):not([href^=\"/\"]):not([href^=\"mailto\"])',\r\n '.app-footer .logo-zone a:not([href*=\"bot.com\"]):not([href*=\"bot-lh\"]):not([href*=\"website-app-trbot\"]):not([href=\"#\"]):not([href^=\"#main\"]):not([href^=\"/\"]):not([href^=\"mailto\"])',\r\n ];\r\n\r\n document.querySelectorAll(selectors.join()).forEach(function (item) {\r\n if (\r\n item.hasAttribute('href') &&\r\n (item.getAttribute('href') !== null && item.getAttribute('href') !== '')\r\n ) {\r\n item.classList.add('is-external-link');\r\n item.setAttribute('target', '_blank');\r\n item.insertAdjacentHTML(\r\n 'beforeend',\r\n ' (Opens in a new window)'\r\n );\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\nexport default App__externalLinkClass;\r\n","const App__responsiveImage = {\r\n\r\n create: function( options ) {\r\n // Convert imageUrl to URL object so we can remove any url params\r\n options.imageUrl = new URL( options.imageURL );\r\n\r\n let responsiveImage = '
{\r\n srcsetValues.push( options.imageUrl.pathname + '?width=' + srcsetWidth + ' ' + srcsetWidth + 'w');\r\n });\r\n responsiveImage = responsiveImage + ' srcset=\"' + srcsetValues.join() + '\"';\r\n\r\n responsiveImage = responsiveImage + '>';\r\n\r\n /*\r\n
\r\n */\r\n\r\n return responsiveImage;\r\n }\r\n\r\n}\r\n\r\nexport default App__responsiveImage;\r\n","import \"../styles/app-critical.scss\";\r\n\r\n/*\r\n * Other 3rd Party Dependencies\r\n * =========================================================================== */\r\nimport * as focusTrap from \"focus-trap\";\r\n\r\n/*\r\n * Custom Dependencies\r\n * =========================================================================== */\r\n// Components\r\nimport App__appHeader from \"./components/app-header\";\r\nimport App__accordion from \"./components/accordion\";\r\nimport App__globalAlert from \"./components/global-alert\";\r\nimport App__logoZone from \"./components/logo-zone\";\r\n// Utilities\r\nimport App__externalLinkClass from \"./utilities/external-link-class\";\r\nimport App__responsiveImage from \"./utilities/responsive-image\";\r\n// Animation\r\nimport \"./animation/fade-up\";\r\nimport \"./animation/slide\";\r\n\r\n\r\n/*\r\n * Setup the global App object\r\n * =========================================================================== */\r\nlet App = (window.App = {});\r\n\r\nApp.appHeader = App__appHeader;\r\n// Components\r\nApp.accordion = App__accordion;\r\nApp.globalAlert = App__globalAlert;\r\nApp.logoZone = App__logoZone;\r\n\r\nApp.utils = {\r\n closeOverlayPanels: function () {\r\n // Check for and close smallScreenNavPanel\r\n if ( App.appHeader.element && App.appHeader.element.querySelector('[data-hook=appHeader__smallScreenNavPanel].is-open') ) {\r\n App.appHeader.smallScreenNavPanel__close();\r\n }\r\n\r\n // Check for and close globalSearchPanel\r\n if ( App.appHeader.element && App.appHeader.element.querySelector('[data-hook=appHeader__globalSearchPanel][aria-hidden=false]') ) {\r\n App.appHeader.globalSearchPanel__close();\r\n }\r\n\r\n // Check for and close primaryNavItem\r\n if ( App.appHeader.element && App.appHeader.element.querySelector('[data-hook=appHeader__primaryNavItem].is-open') ) {\r\n App.appHeader.primaryNavItemPanel__close( App.appHeader.element.querySelector('[data-hook=appHeader__primaryNavItem].is-open') );\r\n }\r\n\r\n // Check for and close portalNav\r\n if ( App.appHeader.element && App.appHeader.element.querySelector('[data-hook=appHeader__utilityNavPortalMenu].is-open') ) {\r\n let utilityNavPortalMenuTrigger = App.appHeader.element.querySelector('[data-hook=appHeader__utilityNavPortalMenuTrigger][aria-expanded=true]');\r\n App.appHeader.togglePortalUtilityNavMenu(utilityNavPortalMenuTrigger);\r\n }\r\n },\r\n adjustBodyTopMargin: function () {\r\n // Calculate and adjust space to deal with fixed header on small screens\r\n let spaceBuffer = 0;\r\n if ( App.mediaQueries.isLargeUp ) {\r\n } else {\r\n if ( document.querySelector('[data-hook=appHeader] [data-hook=appHeader__alertBanner]') ) {\r\n spaceBuffer = spaceBuffer + document.querySelector('[data-hook=appHeader] [data-hook=appHeader__alertBanner]').offsetHeight\r\n }\r\n if ( document.querySelector('[data-hook=appHeader] [data-hook=appHeader__primaryBanner]') ) {\r\n spaceBuffer = spaceBuffer + document.querySelector('[data-hook=appHeader] [data-hook=appHeader__primaryBanner]').offsetHeight\r\n }\r\n if ( document.querySelector('[data-hook=appHeader] [data-hook=sideNav] > p') ) {\r\n spaceBuffer = spaceBuffer + document.querySelector('[data-hook=appHeader] [data-hook=sideNav] > p').offsetHeight\r\n }\r\n }\r\n // document.querySelector('body').style.marginTop = spaceBuffer + 'px';\r\n let appMain = document.querySelector('.app-main');\r\n if ( appMain ) {\r\n appMain.style.paddingTop = spaceBuffer + 'px';\r\n }\r\n },\r\n externalLinkClass: App__externalLinkClass,\r\n focusTrap: focusTrap,\r\n // pagination: App__pagination,\r\n responsiveImage: App__responsiveImage,\r\n // sibling: App__sibling,\r\n // urlToolkit: App__urlToolkit,\r\n};\r\n\r\n\r\nApp.mediaQueries = {\r\n lg: 'screen and (min-width: 992px)',\r\n isLargeUp: '',\r\n};\r\n\r\n// Setup media query and listener for large screens\r\nconst mediaQueryList__lg = window.matchMedia(App.mediaQueries.lg);\r\n// Call listener function explicitly at run time\r\nApp.mediaQueries.isLargeUp = mediaQueryList__lg.matches ? true : false;\r\n// Attach listener function to listen in on state changes\r\nmediaQueryList__lg.addListener((mediaQuery__lg) => {\r\n // Screen is Large or greater\r\n if (mediaQueryList__lg.matches) {\r\n App.mediaQueries.isLargeUp = true;\r\n App.utils.closeOverlayPanels();\r\n App.appHeader.largeScreenNav__build(App.appHeader.smallScreenNav__destroy);\r\n\r\n // if (App.appSidebar.sideNav) {\r\n // App.appSidebar.buildLargeScreenSideNav(App.appSidebar.destroySmallScreenSideNav);\r\n // }\r\n\r\n // Open sidebar accordions (NOTE: these are different than the sideNavAccordion items as they have different rules!)\r\n // document.querySelectorAll('[data-hook=appSidebar] [data-hook=accordionGroupItem]').forEach(function (accordionGroupItem) {\r\n // App__accordion.open(accordionGroupItem);\r\n // });\r\n\r\n // Screen is less than Large\r\n } else {\r\n App.mediaQueries.isLargeUp = false;\r\n App.utils.closeOverlayPanels();\r\n App.appHeader.smallScreenNav__build(App.appHeader.largeScreenNav__destroy);\r\n\r\n // if (App.appSidebar.sideNav) {\r\n // App.appSidebar.buildSmallScreenSideNav(App.appSidebar.destroyLargeScreenSideNav);\r\n // }\r\n\r\n // Close sidebar accordions\r\n // document.querySelectorAll('[data-hook=sideNav] [data-hook=sideNavAccordion]').forEach(function (sideNavAccordion) {\r\n // App.appSidebar.closeAccordion(sideNavAccordion);\r\n // });\r\n }\r\n});\r\n\r\n"],"sourceRoot":""}