{"version":3,"file":"812.min.js?t=1750230080106","mappings":"sOAUe,MAAMA,EACpBC,iBAAmB,CAClBC,aAAc,uCACdC,cAAe,kCACfC,sBAAuB,iDACvBC,YAAa,2CACbC,aAAc,uCAGfL,eAAiB,CAChBM,kBAAmB,wCACnBC,WAAY,mBACZC,YAAa,6BACbP,aAAc,6BACdQ,wBAAyB,8BACzBL,YAAa,iCACbM,uBAAwB,wCAGzBV,aAAe,CACdW,eAAgB,cAChBC,cAAe,UAShBC,WAAAA,CAAYC,EAAOC,GAAmC,IAAjC,cAAEC,EAAa,aAAEC,GAAcF,EACnDG,KAAKJ,QAAUA,EACfI,KAAKC,iBAAmBC,EAAAA,EAAUC,cAClCH,KAAKI,OAASN,EACdE,KAAKD,aAAeA,EAEpBC,KAAKK,MACN,CAEAA,IAAAA,GACCL,KAAKM,WACLN,KAAKO,eACLP,KAAKQ,aACN,CAKAF,QAAAA,GACCN,KAAKS,YAAcT,KAAKI,OAAOM,cAC9B7B,EAAW8B,UAAU5B,cAEtBiB,KAAKY,aAAeZ,KAAKI,OAAOM,cAC/B7B,EAAW8B,UAAU3B,eAEtBgB,KAAKa,oBAAsBb,KAAKI,OAAOM,cACtC7B,EAAW8B,UAAU1B,uBAEtBe,KAAKc,WAAad,KAAKI,OAAOM,cAC7B7B,EAAW8B,UAAUzB,aAEtBc,KAAKe,YAAcf,KAAKI,OAAOM,cAC9B7B,EAAW8B,UAAUxB,cAEtBa,KAAKgB,YAAchB,KAAKI,OAAOM,cAC9B7B,EAAW8B,UAAUM,aAEvB,CAKAV,YAAAA,GACKP,KAAKS,aACRT,KAAKS,YAAYS,iBAAiB,SAAUlB,KAAKmB,eAE9CnB,KAAKc,aACRd,KAAKc,WAAWI,iBAAiB,SAAUlB,KAAKmB,eAChDnB,KAAKc,WAAWI,iBAAiB,SAAUlB,KAAKoB,gBAChDpB,KAAKe,YAAYG,iBAAiB,QAASlB,KAAKqB,kBAElD,CAKAC,YAAAA,GACKtB,KAAKS,aACRT,KAAKS,YAAYc,oBAAoB,SAAUvB,KAAKmB,eAEjDnB,KAAKc,aACRd,KAAKc,WAAWS,oBAAoB,SAAUvB,KAAKmB,eACnDnB,KAAKc,WAAWS,oBAAoB,SAAUvB,KAAKoB,gBACnDpB,KAAKe,YAAYQ,oBAAoB,QAASvB,KAAKqB,kBAErD,CAKAG,OAAAA,GACCxB,KAAKsB,eACLtB,KAAKyB,SAASD,SACf,CAGAE,UAAAA,GAEgC,YAA3B1B,KAAK2B,OAAOC,aAEkB,mBAAtB5B,KAAKD,cACfC,KAAKD,eAGN8B,SAASC,KAAKC,UAAUC,IAAI,aAE5BC,uBAAsB,KACrBA,uBAAsB,KACrBC,YAAW,KACV,MAAMC,EAAUN,SAASO,eAAe,qBACpCD,GAASA,EAAQE,OAAO,GAC1B,GAAG,GACL,KAGHC,EAAAA,EAAAA,IAAqBtC,KAAK2B,OAAOY,KAAK,KACrCvC,KAAKwC,YAAY,CAChBC,qBAAqB,GACpB,KAIJzC,KAAK2B,OAAOY,IAAIR,UAAUC,IAAI,UAC9BhC,KAAK2B,OAAOY,IAAIG,aAAa,eAAe,GAC5C1C,KAAK2B,OAAOgB,QAAQD,aAAa,iBAAiB,IAElDE,EAAAA,EAAAA,IAA2B5C,KAAK2B,OAAOY,KAAK,KAC3CvC,KAAKwC,YAAY,CAChBK,uBAAuB,GACtB,IAG4B,WAA3B7C,KAAK2B,OAAOC,aACf5B,KAAKI,OAAO0C,mBAAoB,GAEjC9C,KAAKI,OAAO2B,UAAUC,IAAI,iBAE1BhC,KAAK2B,OAAOoB,QAAS,CAGtB,CAGAP,WAAAA,CAAYQ,GAEoB,YAA3BhD,KAAK2B,OAAOC,aACf5B,KAAK2B,OAAOsB,IAAIC,MAAMC,UAAY,KAClCtB,SAASC,KAAKC,UAAUqB,OAAO,aAC1BJ,GAAWA,EAAOP,qBACtBzC,KAAK2B,OAAOY,IAAIc,iBAKlBrD,KAAK2B,OAAOY,IAAIR,UAAUqB,OAAO,UACjCpD,KAAK2B,OAAOY,IAAIG,aAAa,eAAe,GAC5C1C,KAAK2B,OAAOgB,QAAQD,aAAa,iBAAiB,GAG9C1C,KAAK2B,OAAO2B,QACftD,KAAK2B,OAAO2B,MAAMC,MAAQ,GAC1BvD,KAAK2B,OAAO2B,MAAME,QAGdR,GAAWA,EAAOH,uBACtB7C,KAAK2B,OAAOY,IAAIkB,kBAGc,WAA3BzD,KAAK2B,OAAOC,aACf5B,KAAKI,OAAO0C,mBAAoB,GAGjC9C,KAAKI,OAAO2B,UAAUqB,OAAO,iBAC7BpD,KAAK2B,OAAOoB,QAAS,EAEU,YAA3B/C,KAAK2B,OAAOC,YACf5B,KAAK2B,OAAOgB,QAAQa,OAGrBxD,KAAK0D,aACN,CAGAlD,WAAAA,GAECR,KAAK2B,OAAS,CAAC,EACf3B,KAAK2B,OAAOY,IAAMvC,KAAKI,OAAOM,cAAc,yBAC5CV,KAAK2B,OAAOoB,QAAS,EACrB/C,KAAK2B,OAAOgB,QAAU3C,KAAKI,OAAOM,cACjC,kCAEDV,KAAK2B,OAAOsB,IAAMjD,KAAK2B,OAAOY,IAAI7B,cACjC,8BAEDV,KAAK2B,OAAOgC,iBAAmB3D,KAAK2B,OAAOY,IAAI7B,cAC9C,yCAGDV,KAAK2B,OAAOgB,QAAQzB,iBAAiB,SAAU0C,IACzC5D,KAAK2B,OAAOoB,OAIN/C,KAAK2B,OAAOoB,SACtB/C,KAAKwC,cACLxC,KAAK2B,OAAOC,WAAa,OALzBgC,EAAEC,kBACF7D,KAAK2B,OAAOC,WAAa,UACzB5B,KAAK0B,aAIN,IAGgB1B,KAAK2B,OAAOY,IAAI7B,cAChC,gCAEQQ,iBAAiB,SAAS,KAC9BlB,KAAK2B,OAAOoB,SACf/C,KAAKwC,cACLxC,KAAK2B,OAAOC,WAAa,KAC1B,GAEF,CAMAT,cAAiB2C,IAChBA,EAAMC,iBACN,MAAMC,EAAOF,EAAMG,OACbC,EAAaF,EAAKG,QAAQC,WAG1BC,EAAS,CACdC,MAAM,EACNC,QACgB,YAAfL,EACGrF,EAAW2F,QAAQjF,wBACnBV,EAAW2F,QAAQhF,uBACvBiF,gBACgB,YAAfP,EACGrF,EAAW2F,QAAQjF,wBACnBV,EAAW2F,QAAQhF,uBACvBkF,WAAY7F,EAAW2F,QAAQnF,WAC/BsF,eAAgB9F,EAAW2F,QAAQlF,YACnCsF,aAAc,OAIf5E,KAAKyB,SAAW,IAAIoD,IAAJ,CACA,YAAfX,EAA2BlE,KAAKS,YAAcT,KAAKc,WACnDuD,GAEarE,KAAKyB,SAASqD,YAG3B9E,KAAK+E,mBACLf,EAAKgB,UAGc,WAAfd,GACHlE,KAAKoB,gBAEP,EAMDsC,YAAcA,KACT1D,KAAKyB,UACRzB,KAAKyB,SAASwD,QAEfjF,KAAKa,oBAAoBkB,UAAUqB,OAClCvE,EAAW2F,QAAQpF,kBACnB,EAMFgC,eAAiBA,KACZpB,KAAKyB,UACRzB,KAAKa,oBAAoBkB,UAAUC,IAClCnD,EAAW2F,QAAQpF,kBAErB,EAMD2F,iBAAmBA,KAClB,IAAIG,EAAa,KAGhBA,EAD8B,KAA3BlF,KAAKe,YAAYwC,MACPvD,KAAKe,YAAYwC,MAEjBvD,KAAKY,aAAa2C,MAGhCvD,KAAKC,iBAAiB8E,iBAAiB,SAAU,CAChDI,YAAaD,GACZ,E,qDC9RJ,SAASE,EAAWC,GAEnB,OADe,IAAIC,WACLC,gBAAgBF,EAAY,aAAaG,gBAAgBC,WACxE,CAKO,SAASC,EAAQ7F,GAAwD,IAAvD,MAAE8F,EAAK,QAAEC,EAAO,SAAEC,EAAQ,IAAEC,EAAG,SAAEC,EAAQ,SAAEC,GAAUnG,EAC7E,OACCoG,MAAAC,cAAA,KAAGC,KAAML,EAAKM,UAAU,uBACvBH,MAAAC,cAAA,OAAKE,UAAU,+CACdH,MAAAC,cAAA,OACCG,IAAKR,GAAY,mCACjBS,IAAKP,GAAY,qBACjBK,UAAU,uCAGZH,MAAAC,cAAA,OAAKE,UAAU,yCACdH,MAAAC,cAAA,MAAIE,UAAU,qCAAoC,IAAEhB,EAAWO,IAC/DM,MAAAC,cAAA,KAAGE,UAAU,yCAAyChB,EAAWQ,KAIrE,CAKO,SAASW,EAAYC,GAA0B,IAAzB,MAAEb,EAAK,IAAEG,EAAG,QAAEF,GAASY,EACnD,OACCP,MAAAC,cAAA,KAAGC,KAAML,EAAKM,UAAU,0BAA0BnC,OAAO,SAASwC,IAAI,uBACrER,MAAAC,cAAA,OAAKE,UAAU,mDACdH,MAAAC,cAAA,OAAKG,IAAI,wCAAwCC,IAAI,WAAWF,UAAU,2CAE3EH,MAAAC,cAAA,OAAKE,UAAU,6CACdH,MAAAC,cAAA,MAAIE,UAAU,yCAAyChB,EAAWO,IACjEC,GACAK,MAAAC,cAAA,KAAGE,UAAU,6CACXhB,EAAWQ,KAMlB,CAKO,SAASc,EAAWC,GAAwD,IAAvD,MAAEhB,EAAK,QAAEC,EAAO,SAAEC,EAAQ,IAAEC,EAAG,SAAEC,EAAQ,SAAEa,GAAUD,EAChF,OACCV,MAAAC,cAAA,KAAGC,KAAML,EAAKM,UAAU,0BACvBH,MAAAC,cAAA,OAAKE,UAAU,mDACdH,MAAAC,cAAA,OACCG,IAAKR,GAAY,mCACjBS,IAAKP,GAAY,qBACjBK,UAAU,0CAGZH,MAAAC,cAAA,OAAKE,UAAU,4CACdH,MAAAC,cAAA,MAAIE,UAAU,wCAAwChB,EAAWO,IACjEM,MAAAC,cAAA,KAAGE,UAAU,4CAA4ChB,EAAWQ,KAIxE,CAKO,SAASiB,EAAWC,GAA8C,IAA7C,MAAEnB,EAAK,QAAEC,EAAO,SAAEC,EAAQ,IAAEC,EAAG,SAAEC,GAAUe,EACtE,OACCb,MAAAC,cAAA,KAAGC,KAAML,EAAKM,UAAU,0BACvBH,MAAAC,cAAA,OAAKE,UAAU,kDACdH,MAAAC,cAAA,OACCG,IAAKR,GAAY,mCACjBS,IAAKP,GAAY,qBACjBK,UAAU,0CAGZH,MAAAC,cAAA,OAAKE,UAAU,4CACdH,MAAAC,cAAA,MAAIE,UAAU,wCAAwChB,EAAWO,IAChEC,GAAWK,MAAAC,cAAA,KAAGE,UAAU,4CAA4ChB,EAAWQ,KAIpF,CCpFe,SAASmB,EAAelH,GAAkB,IAAjB,YAAEmH,GAAanH,EACtD,MAAOoH,EAAOC,IAAYC,EAAAA,EAAAA,UAAS,IAC7BC,EArBP,SAAqB7D,GACpB,MAAO8D,EAAgBC,IAAqBH,EAAAA,EAAAA,UAAS5D,GAUrD,OARAgE,EAAAA,EAAAA,YAAU,KACT,MAAMC,EAAUtF,YAAW,KAC1BoF,EAAkB/D,EAAM,GAgBgB,KAbzC,MAAO,IAAMkE,aAAaD,EAAQ,GAChC,CAACjE,EAYsC,MAVnC8D,CACR,CASwBK,CAAYT,IAG5BU,EAAUC,IAAeT,EAAAA,EAAAA,UAAS,KAClCU,EAAWC,IAAgBX,EAAAA,EAAAA,WAAS,IACpCY,EAAOC,IAAYb,EAAAA,EAAAA,UAAS,MA4GnC,OAzGAI,EAAAA,EAAAA,YAAU,KACJH,EAKLa,iBACCH,GAAa,GACbE,EAAS,MAET,IACC,MAAME,QAAaC,MAClB,GAAGnB,WAAqBoB,mBAAmBhB,MAE5C,IAAKc,EAAKG,GACT,MAAM,IAAIC,MAAM,SAASJ,EAAKK,WAAWL,EAAKM,cAG/C,MAAMC,QAAaP,EAAKQ,OACpBC,MAAMC,QAAQH,IACjBb,EAAYa,GACZb,EAAYa,EAAKI,KAAIC,IAAW,IAC5BA,EACHC,OAAQC,OAAOC,mBAGhBrB,EAAY,GAEd,CAAE,MAAOsB,GACRC,QAAQpB,MAAMmB,GACdlB,EAASkB,EAAIE,SAAW,gBACzB,CAAE,QACDtB,GAAa,EACd,CACD,CAEAuB,GAlCCzB,EAAY,GAkCC,GACZ,CAACR,EAAgBJ,IAqEnBf,MAAAC,cAAA,OAAKE,UAAU,kBACdH,MAAAC,cAAA,OAAKE,UAAU,uBACdH,MAAAC,cAAA,QACCoD,OAAO,WACPC,OAAO,OACPnD,UAAU,6BACV,gBAAc,qBACd,kBAAgB,WAEhBH,MAAAC,cAAA,SAAOsD,QAAQ,cAAcpD,UAAU,mBAAkB,WAGzDH,MAAAC,cAAA,OACCE,UAAU,wCACVqD,GAAG,eAEHxD,MAAAC,cAAA,SACCuD,GAAG,oBACHrD,UAAU,2CACVsD,KAAK,SACLnG,MAAO0D,EACP0C,KAAK,IACLC,YAAY,0BACZ,aAAW,SACX,gBAAc,gBACdC,SA5FqBjG,IAC1BsD,EAAStD,EAAEK,OAAOV,MAAM,EA4FnB,iCAA+B,iCAGjC0C,MAAAC,cAAA,UACCwD,KAAK,SACLtD,UAAU,yEACV,iBAAe,OACf,uBAAqB,aACrB,0BAAwB,MACxB,0BAAwB,SACxB,wBAAsB,qBACtB,YAMFyB,GACA5B,MAAAC,cAAA,OAAKE,UAAU,gBACdH,MAAAC,cAAA,OAAKE,UAAU,uBACdH,MAAAC,cAAA,iBACC,WACAuD,GAAG,qBACH,wBAAsB,mBACtBpD,IAAI,0DACJyD,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAMXlC,GACA9B,MAAAC,cAAA,OAAKE,UAAU,aAAalD,MAAO,CAAEgH,MAAO,QAC1CnC,IAIDF,IAAcE,GAASJ,EAASwC,OAAS,GAC1ClE,MAAAC,cAAA,OAAKE,UAAU,iBACbuB,EAASkB,KAAI,CAACC,EAASsB,KACvB,MAAM,QACLC,EACAC,QAASC,EAAQ,GAAE,YACnBC,EAAW,cACXC,EAAa,eACbC,GACG5B,EAEJ,OACC7C,MAAAC,cAAA,OAAKyE,IAAK7B,EAAQC,OAAQ3C,UAAU,gBACnCH,MAAAC,cAAA,MAAIE,UAAU,sBAAsBiE,GAEnCE,EAAMJ,OAAS,EACflE,MAAAC,cAAA,MAAIE,UAAU,aACZmE,EAAM1B,KAAI,CAAC+B,EAAMC,IAjJRC,EAACF,EAAMG,KACzB,MAAMJ,EAAM,GAAGC,EAAKI,oBAAoBJ,EAAKjF,OAASiF,EAAKjB,QAAQoB,IAEnE,OAAQH,EAAKI,kBACZ,IAAK,QACL,IAAK,OACJ,OACC/E,MAAAC,cAAA,MAAIyE,IAAKA,EAAKvE,UAAU,aACvBH,MAAAC,cAACR,EAAQ,CACRC,MAAOiF,EAAKjF,MACZC,QAASgF,EAAKhF,QACdC,SAAU+E,EAAK/E,SACfE,SAAU6E,EAAK7E,SACfD,IAAK8E,EAAK9E,IACVE,SAAU4E,EAAK5E,YAKnB,IAAK,YACL,IAAK,WACJ,OACCC,MAAAC,cAAA,MAAIyE,IAAKA,EAAKvE,UAAU,aACvBH,MAAAC,cAACK,EAAY,CACZZ,MAAOiF,EAAKjF,MACZC,QAASgF,EAAKhF,QACdE,IAAK8E,EAAK9E,OAKd,IAAK,WACL,IAAK,UACJ,OACCG,MAAAC,cAAA,MAAIyE,IAAKA,EAAKvE,UAAU,aACvBH,MAAAC,cAACQ,EAAW,CACXf,MAAOiF,EAAKjF,MACZC,QAASgF,EAAKhF,QACdC,SAAU+E,EAAK/E,SACfE,SAAU6E,EAAK7E,SACfD,IAAK8E,EAAK9E,IACVc,SAAUgE,EAAKhE,YAKnB,QACC,OACCX,MAAAC,cAAA,MAAIyE,IAAKA,EAAKvE,UAAU,aACvBH,MAAAC,cAACW,EAAW,CACXlB,MAAOiF,EAAKjF,MACZC,QAASgF,EAAKhF,QACdC,SAAU+E,EAAK/E,SACfE,SAAU6E,EAAK7E,SACfD,IAAK8E,EAAK9E,OAIf,EAuFkCgF,CAAWF,EAAMC,MAG5C5E,MAAAC,cAAA,OAAKE,UAAU,mBAAmBsE,GAGlCH,EAAMJ,OAAS,GAAKM,GAAiBD,GACrCvE,MAAAC,cAAA,OAAKE,UAAU,yBACdH,MAAAC,cAAA,KAAGC,KAAMsE,EAAerE,UAAU,iBAChCoE,EAAY,IAACvE,MAAAC,cAAA,eAIZ,KAOb,CD9PAR,EAASuF,UAAY,CACpBtF,MAAOuF,IAAAA,OAAiBC,WACxBvF,QAASsF,IAAAA,OACTrF,SAAUqF,IAAAA,OACVpF,IAAKoF,IAAAA,OAAiBC,WACtBpF,SAAUmF,IAAAA,OACVlF,SAAUkF,IAAAA,QAAkBA,IAAAA,SAG7B3E,EAAa0E,UAAY,CACxBtF,MAAOuF,IAAAA,OAAiBC,WACxBrF,IAAKoF,IAAAA,OAAiBC,WACtBvF,QAASsF,IAAAA,QAGVxE,EAAYuE,UAAY,CACvBtF,MAAOuF,IAAAA,OAAiBC,WACxBvF,QAASsF,IAAAA,OACTrF,SAAUqF,IAAAA,OACVpF,IAAKoF,IAAAA,OAAiBC,WACtBpF,SAAUmF,IAAAA,OACVtE,SAAUsE,IAAAA,QAGXrE,EAAYoE,UAAY,CACvBtF,MAAOuF,IAAAA,OAAiBC,WACxBvF,QAASsF,IAAAA,OACTrF,SAAUqF,IAAAA,OACVpF,IAAKoF,IAAAA,OAAiBC,WACtBpF,SAAUmF,IAAAA,Q,QCpBXnE,EAAgBkE,UAAY,CAC3BjE,YAAakE,IAAAA,OAAiBC,YCA/B,MAAMC,EACLtM,iBAAmB,CAClBuM,UAAW,yBACXC,eAAgB,2BAChBC,YAAa,wBACbC,UAAW,oCACXC,gBAAiB,oCACjBC,eAAgB,oCAGjB5M,eAAiB,CAChB6M,OAAQ,wBACRC,OAAQ,6CAGT9M,cAAgB,CACf+M,cAAe,eACfC,gBAAiB,kBAGlBnM,WAAAA,CAAYC,GACXI,KAAK+L,yBACL/L,KAAKgM,8BACLhM,KAAKI,OAASR,EACdI,KAAKiM,SAAWC,EAAAA,EAAS/L,cACzBH,KAAKqE,OAAS,CACb8H,OAAO,EACPC,WAAY,MAGbpM,KAAKqM,cAAgBrM,KAAKiM,SAASI,cACnCrM,KAAKsM,cAAgBtM,KAAKiM,SAASK,cACnCtM,KAAKuM,oBAAsBvM,KAAKiM,SAASM,oBAEzCvM,KAAKM,WAELN,KAAKwM,YACLxM,KAAKyM,mBACLzM,KAAK0M,kBACL1M,KAAK2M,aACL3M,KAAKO,cACN,CAEAD,QAAAA,GACCN,KAAK4M,OAAS5M,KAAKI,OAAOM,cAAc,kBACxCV,KAAK6M,QAAU7M,KAAKI,OAAOM,cAAc,gBACzCV,KAAK8M,aAAe9M,KAAKI,OAAO2M,iBAAiB,qBACjD/M,KAAKgN,cAAgBhN,KAAK6M,QAAQnM,cAAc,cAChDV,KAAKiN,aAAejN,KAAK6M,QAAQE,iBAChC,+BAED/M,KAAKkN,cAAgBlN,KAAKI,OAAOM,cAChC0K,EAAOzK,UAAU2K,gBAElBtL,KAAKmN,kBAAoB,gBACzBnN,KAAKoN,eAAiBpN,KAAKI,OAAOM,cACjC,kCAEDV,KAAKqN,aAAerN,KAAKI,OAAOM,cAC/B0K,EAAOzK,UAAU4K,aAElBvL,KAAKsN,iBAAmBtN,KAAKI,OAAOM,cACnC0K,EAAOzK,UAAU6K,WAElBxL,KAAKuN,oBAAsBvN,KAAKI,OAAOM,cACtC0K,EAAOzK,UAAU8K,iBAElBzL,KAAKwN,cAAgBxN,KAAKI,OAAOM,cAChC0K,EAAOzK,UAAU+K,gBAKlB1L,KAAKyN,cAAgB5L,SAASO,eAAe,mBAG7CpC,KAAK0N,kBAAoB1N,KAAKI,OAAOM,cAAc,6BAGnDV,KAAK2N,iBAAmB3N,KAAKI,OAAOM,cAAc,kBAGlDV,KAAK4N,cAAgB5N,KAAKI,OAAOM,cAAc,kCAG/C,MAAM+M,EAAgB5L,SAASO,eAAe,mBAC1CqL,GACUI,EAAAA,WAAoBJ,GAC5BK,OAAO7H,MAAAC,cAACa,EAAe,CAACC,YAAY,wBAE3C,CAEA+E,sBAAAA,GACC,MAAMgC,EAAKlM,SAASqE,cAAc,OAClC6H,EAAG7K,MAAM8K,MAAQ,OACjBnM,SAASC,KAAKmM,YAAYF,GAG1B,MAAMG,EAAmBH,EAAGI,wBAAwBH,MAGpDD,EAAG7K,MAAM8K,MAAQ,QACjB,MAAMI,EAAYL,EAAGI,wBAAwBH,MAGvCK,EAAiBC,KAAKC,KAAKH,EAAYF,GAC7CrM,SAAS2D,gBAAgBtC,MAAMsL,YAAY,oBAAqB,GAAGH,OAGnExM,SAASC,KAAK2M,YAAYV,EAC3B,CAEA/B,2BAAAA,GACChM,KAAK0O,SAAW,IAAIC,kBAAkBC,IACrC,IAAK,MAAMC,KAAYD,EActB,GAXmB,eAAlBC,EAASnF,MACmB,kBAA3BmF,EAASC,eACkB,gBAA3BD,EAASC,eAGND,EAAS5K,OAAOlC,UAAUgN,SAAS,qBACtC/O,KAAKgP,sBAKe,cAAlBH,EAASnF,KAAsB,CAClC,MAAM5J,EAAgB+B,SAASnB,cAC9B0K,EAAOzK,UAAU0K,YAGjBwD,EAAS5K,SAAWnE,GACpBA,EAAciP,SAASF,EAAS5K,UAEhC/B,YAAW,KACVlC,KAAKgP,qBAAqB,GACxB,IAEL,CACD,IAIDhP,KAAK0O,SAASO,QACbpN,SAASnB,cAAc0K,EAAOzK,UAAU0K,WACxC,CACC6D,YAAY,EACZC,WAAW,EACXC,SAAS,GAGZ,CAEA7O,YAAAA,GAECP,KAAK4M,OAAO1L,iBAAiB,QAASlB,KAAKqP,aAG3CrP,KAAKuM,oBAAoB+C,GACxBlE,EAAOmE,OAAO1D,cACd7L,KAAK0M,iBAEN1M,KAAKuM,oBAAoB+C,GACxBlE,EAAOmE,OAAOzD,gBACd9L,KAAK0M,iBAIN8C,OAAOtO,iBAAiB,qBAAqB,KAC5ClB,KAAKyP,aAAa,GAEpB,CAEAC,YAAAA,GACC1P,KAAK4M,OAAOrL,oBAAoB,QAASvB,KAAKqP,aAC9CrP,KAAKuM,oBAAoBoD,IACxBvE,EAAOmE,OAAO1D,cACd7L,KAAK0M,iBAEN1M,KAAKuM,oBAAoBoD,IACxBvE,EAAOmE,OAAOzD,gBACd9L,KAAK0M,gBAEP,CAEAlL,OAAAA,GACCxB,KAAK0P,eACL1P,KAAK0O,SAASkB,YACf,CAEApD,SAAAA,GACC,MAAMqD,EAAI7P,KACJ8P,EAAaN,OAAOO,WAAW,sBA2B/BC,EAAWC,IACZJ,EAAEpC,eAAiBwC,IAAcA,EAAUlB,SAASc,EAAEpC,gBACzDwC,EAAUhC,YAAY4B,EAAEpC,cACzB,EAoBD,SAASyC,EAAiBC,GACzB,GAAIA,EAAGC,QAEN,OAnBDP,EAAExL,OAAO8H,OAAQ,EACjB0D,EAAEhD,QAAQnK,aAAa,eAAe,GACtCmN,EAAEQ,8BACFL,EAASH,EAAElC,kBAIXkC,EAAExL,OAAO8H,OAAQ,EArCMmE,MACvB,MAAMC,EAAMV,EAAExL,OAAO+H,WAChBmE,IAELA,EAAIX,aAEJC,EAAEhD,QACAE,iBAAiB,6BACjByD,SAAQC,IACRA,EAAMvN,MAAMwN,OAAS,MAAM,IAC1B,EA4BHJ,GACAT,EAAEQ,yBA1BwBM,MAC1B,MAAMC,EAAKf,EAAElC,iBACRiD,GAAI7O,UAAUgN,SAAS,YAC5B6B,EAAG7O,UAAUqB,OAAO,UACpBwN,EAAGlO,aAAa,cAAe,QAC/BmN,EAAEjC,eAAelL,aAAa,gBAAiB,SAC/Cb,SAASC,KAAKC,UAAUqB,OAAO,aAC/ByM,EAAEzP,OAAO2B,UAAUqB,OAAO,iBAAgB,EAoB1CuN,GACAX,EAASH,EAAEnC,kBAWZ,CAEAoC,EAAW5O,iBAAiB,SAAUgP,GACtCA,EAAiBJ,EAClB,CAGArD,gBAAAA,GACKzM,KAAKqN,eACRrN,KAAK6Q,WAAa,IAAIhS,EAAWmB,KAAKqN,aAAc,CACnDvN,cAAeE,KAAKI,OACpBL,aAAcC,KAAK8Q,gBAAgBC,KAAK/Q,MAAM,KAGjD,CAEA0M,gBAAkBA,KACjB,GAAI1M,KAAKsN,kBAAoBtN,KAAKuN,oBAAqB,CAEtDvN,KAAKuN,oBAAoByD,UACxBhR,KAAKuN,oBAAoBpJ,QAAQ8M,MAGlC,MAIMC,EAAY,IAJIC,aAAaC,QAAQ,iBACxCC,KAAKC,MAAMH,aAAaC,QAAQ,kBAChC,IAKCF,EAAU/G,OAAS,GACtBnK,KAAKuN,oBAAoB9H,aAAc8L,EAAAA,EAAAA,GACtCvR,KAAKuN,oBAAoB9H,YACzB,CACC+L,eAAgBN,EAAU/G,SAG5BnK,KAAKsN,iBAAiB0D,UAAYE,EAAU/G,QAAU,GACtDnK,KAAKsN,iBAAiBvL,UAAUqB,OAAOgI,EAAO5G,QAAQmH,QACtD3L,KAAKwN,cAAczL,UAAUC,IAAIoJ,EAAO5G,QAAQoH,QAChD5L,KAAKwN,cAAcnH,IAAM,uCAEzBrG,KAAKuN,oBAAoB9H,aAAc8L,EAAAA,EAAAA,GACtCvR,KAAKuN,oBAAoB9H,YACzB,CACC+L,eAAgB,IAGlBxR,KAAKsN,iBAAiB0D,UAAY,GAClChR,KAAKsN,iBAAiBvL,UAAUC,IAAIoJ,EAAO5G,QAAQmH,QACnD3L,KAAKwN,cAAczL,UAAUqB,OAAOgI,EAAO5G,QAAQoH,QACnD5L,KAAKwN,cAAcnH,IAAM,8BAE3B,GAGDyK,eAAAA,CAAgBW,GACfzR,KAAK0R,QAAQC,SAASpP,KAAKqP,QACvBH,GACHzR,KAAK0R,QAAQC,SAASpP,KAAKkP,UAE7B,CAEAI,mBAAAA,GACC7R,KAAK8R,8BACL9R,KAAK+R,0BACN,CAEAA,wBAAAA,GACC,MAAMpK,EAAW3H,KAAK0R,OAAOC,QAAQhK,SACrC,IAAK,MAAMqK,KAAQrK,EAAU,CAC5B,MAAMmB,EAAUnB,EAASqK,GAAMzP,IAC3BuG,EAAQmJ,aACXnJ,EAAQ8I,OAEV,CACD,CAEAE,2BAAAA,GACC,MAAMnK,EAAW3H,KAAK0R,OAAOC,QAAQhK,SACrC,IAAK,MAAMqK,KAAQrK,EAClB,GAAIA,EAASqK,GAAMzP,IAAI0P,YAAa,CACnC,MAAMC,EAAcvK,EAASqK,GAAME,YACnC,IAAK,MAAMC,KAAWD,EAAa,CAClC,MAAME,EAAaF,EAAYC,GAAS5P,IACpC6P,EAAWH,aACdG,EAAWR,OAEb,CACD,CAEF,CAEAS,sBAAAA,GAC4C,mBAAhCrS,KAAKI,OAAOqD,iBACtBzD,KAAKI,OAAOqD,iBAEd,CAEA6O,eAAAA,CAAgBN,GACfhS,KAAKI,OAAO2B,UAAUC,IAAI,qBAC1BhC,KAAKuS,cAAe,EAGpBvS,KAAKwS,8BAAgCxS,KAAKsM,cAAcmG,aACtD3O,IACIA,EAAM4O,gBACT1S,KAAKyP,aACN,GAGH,CAEAkD,6BAAAA,CAA8BX,GACbA,EAAKY,cAAclS,cAClC,sCAGOmS,OACT,CAGApD,WAAAA,GACKzP,KAAKuS,eACRvS,KAAK8S,mBACL9S,KAAK8Q,kBACL9Q,KAAK6R,sBAEP,CAEAiB,gBAAAA,CAAiB9P,GAChBhD,KAAKI,OAAO2B,UAAUqB,OAAO,qBAExBJ,GAAQP,qBACZzC,KAAK6M,SAASxJ,gBAGfrD,KAAKuS,cAAe,EAGfvP,GAAQH,uBACZ7C,KAAKqS,yBAINrS,KAAKwS,+BACN,CAEAxD,mBAAAA,GACC,IAAI+D,EAAc,EACd/S,KAAK8M,cAAc3C,QACtBnK,KAAK8M,aAAa0D,SAASwC,IAC1BD,GAAeC,EAAOC,cAAgB,CAAC,IAIrCzD,OAAOO,WAAW,sBAAsBK,SAC3CpQ,KAAKgN,cAActK,aAClB,QACA,iCAAiCqQ,yCAAmDA,SAErF/S,KAAKiN,aAAauD,SAAS0C,IAC1BA,EAAIxQ,aACH,QACA,iCAAiCqQ,yCAAmDA,4BAAsCA,OAC1H,MAGF/S,KAAKgN,cAAcmG,gBAAgB,SACnCnT,KAAKiN,aAAauD,SAAS0C,IAC1BA,EAAIC,gBAAgB,QAAQ,KAI9BnT,KAAKoT,iBACN,CAGAC,cAAAA,GACC,MAAMC,EAAW,CAAC,UAAW,cAC7BtT,KAAKuT,WAAa,CACjBC,OAAQ,CAAC,EACTC,wBAAyB,CAAC,EAC1BC,aAAc,CAAC,GAEhB,IAAK,MAAMC,KAASL,EAAU,CAE7B,MAAMM,EAAU/R,SAASqE,cAAc,UACvC0N,EAAQC,UAAY,+CACpBD,EAAQ7R,UAAUC,IAAI,0BAEtB4R,EAAQ1S,iBAAiB,SAAS,KACjClB,KAAK8T,eAAeH,EAAM,IAI3B,MAAMhO,EAAQ9D,SAASqE,cAAc,OACrCP,EAAM5D,UAAUC,IAAI,eACpB4R,EAAQG,OAAOpO,GAEf3F,KAAKuT,WAAWC,OAAOG,GAASC,CACjC,CAEA5T,KAAKgU,uBAAwB,CAC9B,CAGAC,cAAAA,GAEMjU,KAAKgU,uBAAuBhU,KAAKqT,iBAEtCxR,SAASC,KAAKC,UAAUC,IAAI,aAC5BhC,KAAKI,OAAO2B,UAAUC,IAAIhC,KAAKmN,mBAC/BnN,KAAK4M,OAAOlK,aAAa,iBAAiB,GAC1C1C,KAAK6M,QAAQnK,aAAa,eAAe,GACzC1C,KAAK6M,QAAQ1I,QAAQ+P,UAAY,UAEjClU,KAAKoN,eAAe+G,UAAY,EAChCnU,KAAKoU,kBAAmB,EACxBpU,KAAKgP,uBAELpM,EAAAA,EAAAA,IAA2B5C,KAAKI,QAAQ,KACvCJ,KAAKqU,gBAAgB,CACpBxR,uBAAuB,GACtB,IAGH7C,KAAKsU,6BAA+BtU,KAAKsM,cAAcmG,aACrD3O,IACIA,EAAM4O,iBACT1S,KAAKqU,kBACLrU,KAAKgP,sBACN,GAGH,CAGAqF,eAAAA,CAAgBrR,GACfnB,SAASC,KAAKC,UAAUqB,OAAO,cAC/BmR,EAAAA,EAAAA,IAAiBvU,KAAKoN,gBACtBpN,KAAKI,OAAO2B,UAAUqB,OAAOpD,KAAKmN,mBAClCnN,KAAK6R,sBACL7R,KAAK4M,OAAOlK,aAAa,iBAAiB,GAC1C1C,KAAK6M,QAAQnK,aAAa,eAAe,GACzC1C,KAAKoU,kBAAmB,EAExBpU,KAAK6M,QAAQ3J,MAAMwN,OAAS,OAC5B1Q,KAAKI,OAAO8C,MAAMsR,eAAe,YAE5BxR,GAAQH,uBAAuB7C,KAAKI,OAAOqD,kBAEhDzD,KAAKsU,+BAEDtU,KAAK6Q,YACR7Q,KAAK6Q,WAAWnN,cAEjB1D,KAAKoT,iBACN,CAGA/D,YAAcA,KACKrP,KAAKoU,iBAElBpU,KAAKqU,kBADIrU,KAAKiU,gBACQ,EAI5BH,cAAAA,CAAeH,GACd,IAAIc,EACwBA,EAAd,eAAVd,EAAgC,UACvB,UAEb3T,KAAK0U,kBAAkBD,GAAO,GAE9B,MAAM9R,EAAU3C,KAAKuT,WAAWE,wBAAwBE,GAGlDgB,EAAYA,KAEjB3U,KAAK6M,QAAQtL,oBAAoB,gBAAiBoT,GAElDhS,EAAQkQ,OAAO,EAIhB7S,KAAK6M,QAAQ3L,iBAAiB,gBAAiByT,EAChD,CAGAD,iBAAAA,CAAkBD,EAAOG,GAExB,MAAMC,EAAYA,KAIjB,IAAInE,EAFJ1Q,KAAK6M,QAAQtL,oBAAoB,gBAAiBsT,GAGpC,YAAVJ,IAEKG,EACRlE,EAAS1Q,KAAKuT,WAAWkB,IAEzB/D,EAAS1Q,KAAKuT,WAAWuB,SAAS7B,aAAe,KACjDjT,KAAKuT,WAAWkB,GAAS/D,GAE1B1Q,KAAK6M,QAAQ3J,MAAMwN,OAASA,EAAM,EAGnC1Q,KAAK6M,QAAQ3L,iBAAiB,gBAAiB2T,GAE/C7U,KAAK6M,QAAQnK,aAAa,iBAAkB+R,EAC7C,CAGAM,cAAAA,CAAeN,EAAOzC,GAErB,MAAMvB,EAAQzQ,KAAKuT,WAAWC,OAAOiB,GACvBhE,EAAM/P,cAAc,gBAC5BmT,UAAY7B,EAAK6B,UAEvB,MAAMmB,EAAShD,EAAKY,cACdkC,EAAWE,EAAOtU,cAAc,MACtCoU,EAASG,QAAQxE,GAEjBzQ,KAAKuT,WAAWE,wBAAwBgB,GAASzC,EACjDhS,KAAKuT,WAAWuB,SAAWA,EAE3B,MAAMI,EAAcF,EAAOtU,cAAc,+BACnCyU,EAAOD,EAAYxU,cAAc,2BACvCyU,EAAKC,WAAW3G,YAAY0G,GAE5BD,EAAYD,QAAQE,GAGpBnV,KAAK0U,kBAAkBD,EACxB,CAGAY,cAAAA,CAAerD,EAAMyC,GACpBzC,EAAK9Q,iBACJ,SACC0C,IACAA,EAAEG,iBAEF,MAAMuR,GAAgB1R,EAAEK,OAAOlC,UAAUgN,SAAS,eAElD,OAAQ0F,GACP,IAAK,UACL,IAAK,UAEJ,GAAIzU,KAAKoU,kBAAoBkB,EAC5BtV,KAAK+U,eAAeN,EAAOzC,GAC3BhS,KAAK8R,kCAGD,CACJ,MAAMjC,EAAI7P,KAIV,GAFAA,KAAK8R,8BAEDwD,EAAc,CAEhBtD,EAAKjQ,UAAUgN,SACd,oCAGD/O,KAAK2S,8BAA8BX,GAGpC,MAAMuD,EAAoB3R,EAAEK,OAAOlC,UAAUgN,SAC5C,oCACA,eAEKyG,EACL5R,EAAEK,OAAO2O,cAAc7Q,UAAUgN,SAChC,4CAGF,GAAIwG,EAAmB,CACtB,MAAML,EACLtR,EAAEK,OAAO2O,cAAclS,cACtB,+BAEI+P,EAAQ7M,EAAEK,OAAOwR,QACtB,6BAGD5F,EAAExL,OAAO+H,WAAa,IAAIsJ,gBACxBC,IACA,IAAuB,IAAnB9F,EAAExL,OAAO8H,MACZ,IAAK,MAAMyJ,KAASD,EAAS,CAC5B,MAAME,EACLD,EAAME,YAAYpF,OACnBD,EAAMvN,MAAMwN,OACXmF,EAAiB,IACnB,CACD,IAIFhG,EAAExL,OAAO+H,WAAW6C,QAAQiG,EAC7B,MAAO,GAAIM,EAAS,CAEnB,MAAMN,EACLtR,EAAEK,OAAO2O,cAAclS,cACtB,mEAEI+P,EAAQ7M,EAAEK,OAAO2O,cAAclS,cACpC,6BAGDmP,EAAExL,OAAO+H,WAAa,IAAIsJ,gBACxBC,IACA,IAAuB,IAAnB9F,EAAExL,OAAO8H,MACZ,IAAK,MAAMyJ,KAASD,EAAS,CAC5B,MAAME,EACLD,EAAME,YAAYpF,OACnBD,EAAMvN,MAAMwN,OACXmF,EAAiB,IACnB,CACD,IAIFhG,EAAExL,OAAO+H,WAAW6C,QAAQiG,EAC7B,CACD,CAEII,IAAiBtV,KAAKuS,cACzBvS,KAAKsS,gBAAgBN,GACrBhS,KAAK2S,8BAA8BX,IAEnC1P,EAAAA,EAAAA,IAAqBtC,KAAK6M,SAAS,KAClC7M,KAAK8S,iBAAiB,CACrBrQ,qBAAqB,IAEtBzC,KAAK8Q,iBAAgB,GACrB9Q,KAAK6R,qBAAqB,MAIlByD,GAAgBtV,KAAKuS,cAC9BvS,KAAK8S,mBAIN9S,KAAKqS,yBAEJrS,KAAKI,OAAOM,cAAc,sBAEjBqB,UAAUC,IAAI,iBACzB,CACA,MAED,IAAK,aACAhC,KAAKoU,kBAAoBkB,GAC5BtV,KAAK+U,eAAeN,EAAOzC,GAG9B,IAED,EAEF,CAEA+D,cAAAA,CAAevC,EAAQwC,EAAUC,EAASvM,EAAMD,GAA2B,IACtEuI,EAD+CkE,EAAaC,UAAAhM,OAAA,QAAAiM,IAAAD,UAAA,IAAAA,UAAA,GAGhE,IAAKnE,KADLvI,EAAK,IAAMA,EACE+J,GACZxB,EAAKjQ,UAAUC,IAAI,qBAAuByH,GAE3C,IAAKuI,KAAQgE,EAAU,CACtBhE,EAAKjQ,UAAUC,IAAI,uBAAyByH,GAC5CzJ,KAAKqV,eAAerD,EAAMtI,GAE1B,IAAInG,EAAQyO,EAAKhB,WAAagB,EAAKvM,YACnClC,EAAQA,EAAM8S,QAAQ,OAAQ,KAAKC,OACnCtE,EAAKuE,eAAiBhT,CACvB,CAGA,OAFA0S,EAAQlU,UAAUC,IAAI,yBAA2ByH,GAE1C,IAAI+M,EAAAA,EAAgBP,EAAS,CACnCxM,KACAyM,iBAEF,CAGA7F,sBAAAA,GAECrQ,KAAK0R,OAAS,CAAC,EACf,MAAMwB,EAAMlT,KAAKI,OAAOM,cAAc,OACtC,IAAI+V,EAAGhN,EAAIC,EAAMsI,EAAMwB,EAAQwC,EAAUU,EAAUT,EAASC,EAc5D,GAXAD,EAAU/C,EAAIxS,cAAc,8BAC5BsV,EAAW9C,EAAInG,iBACd,4CAEDyG,EAASN,EAAInG,iBAAiB,6BAG9BrD,EAAOD,EAAK,UAEZzJ,KAAK0R,OAAOC,QAAU,CAAC,EAEnB3R,KAAKqE,OAAO8H,MACfnM,KAAK0R,OAAOC,QAAU,CACrBpP,IAAKvC,KAAK+V,eACTvC,EACAwC,EACAC,EACAvM,EACAD,EACAyM,SAGI,IACLlW,KAAKqE,OAAO8H,OACbtK,SACEnB,cAAc,8BACdqB,UAAUgN,SAAS,gBAIrB,OAFAtF,EAAK,WAEE,IAAI+M,EAAAA,EAAgBP,EAAS,CACnCxM,KACAyM,kBACE1U,UAGJ,IACEK,SACCnB,cAAc,gCACdqB,UAAUgN,SAAS,gBACpB,CAED,MAAM4H,EAAa,CAAC,EAMpB,IAAK3E,KALL0E,EAAWxD,EAAInG,iBACd,iEAGD0J,EAAI,EACSC,GAAU,CACtBT,EAAUjE,EAAKtR,cAAc,gCAC7BsV,EAAWhE,EAAKjF,iBACf,uEAEDyG,EAASxB,EAAKjF,iBAAiB,+BAC/BrD,EAAO,UACPD,EAAKC,EAAO+M,EACZ,MAAM3N,EAAU9I,KAAK+V,eACpBvC,EACAwC,EACAC,EACAvM,EACAD,GAIDkN,EAAWlN,GAAM,CAChBlH,IAAKuG,GAEN2N,GACD,CACAzW,KAAK0R,OAAOC,QAAQhK,SAAWgP,CAChC,CACD,CAGAC,oBAAAA,GAEC,MAAMC,EAAa7W,KAAK6M,QAAQE,iBAAiB,wBAEjD,IAAK,MAAMiF,KAAQ6E,EAAY,CAC9B,IAAI7B,EAAShD,EAAKY,cACM,QAApBoC,EAAO8B,WAAoB9B,EAASA,EAAOpC,eAC/C,MAAMmE,EAAW/B,EAAOjT,UAAUgN,SAAS,UAErCiI,EAAUhC,EAAOtU,cAAc,KAC/BuW,EAAcD,EAAQnD,UACtBqD,EAAcF,EAAQ7Q,KAEtB2O,EAAWE,EAAOtU,cAAc,MAGhCyW,EAAkBtV,SAASqE,cAAc,KAC/CiR,EAAgBtD,UACfoD,EAAcjX,KAAKqE,OAAO+S,uBAC3BD,EAAgBhR,KAAO+Q,EACvB,MAAMG,EAA0BxV,SAASqE,cAAc,MACvDmR,EAAwBtV,UAAUC,IAAI,YAClC+U,GAAUM,EAAwBtV,UAAUC,IAAI,UACpDqV,EAAwBtD,OAAOoD,GAC/BrC,EAASG,QAAQoC,GAGbvC,EAASpU,cAAc,YAC1BsU,EAAOjT,UAAUC,IAAI,uBAEvB,CACD,CAEAsV,YAAAA,CAAalX,EAAQmX,EAAcC,GAC9BhI,OAAOiI,QAAUD,EAAepX,EAAO2B,UAAUC,IAAI,gBACpD5B,EAAO2B,UAAUqB,OAAO,gBACzBoM,OAAOiI,QAAUF,EAAcnX,EAAO2B,UAAUC,IAAI,iBACnD5B,EAAO2B,UAAUqB,OAAO,gBAC9B,CAGAsU,kBAAAA,GAEK1X,KAAK2X,oBAAoB3X,KAAK2X,qBAElC,MAAMvX,EAASJ,KAAKI,OAEdmX,EACLvX,KAAKI,OAAO+N,wBAAwBlL,IAAMuM,OAAOiI,QAG5CD,EADYpX,EAAOM,cAAc,sBACPyN,wBAAwBlL,IAAM,GAE9DjD,KAAK2X,mBAAqB3X,KAAKqM,cAAcoG,aAAY,IACxDzS,KAAKsX,aAAalX,EAAQmX,EAAcC,IAE1C,CAGApE,eAAAA,GACCpT,KAAKI,OAAO8C,MAAMsL,YACjB,WACA,GAAGxO,KAAKkN,cAAciB,wBAAwBuC,WAEhD,CAGA/D,UAAAA,GAEC3M,KAAKoT,kBAELpT,KAAKsM,cAAcmG,YAAYzS,KAAKgP,oBAAoB+B,KAAK/Q,OAE7DA,KAAK0X,oBACN,EAGD,S,gDCh4BA,SAASlB,EAAgBzI,GAAgB,IAAZ6J,EAAKzB,UAAAhM,OAAA,QAAAiM,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrC,IAAKpI,EAAI,OACT/N,KAAK+N,GAAKA,EACV/N,KAAKiM,SAAWC,EAAAA,EAAS/L,cACzBH,KAAKuM,oBAAsBvM,KAAKiM,SAASM,oBAEzC,IAAIsL,EAAe,uBACfC,EAAa,qBACbF,EAAMnO,KACToO,GAAgBD,EAAMnO,GACtBqO,GAAcF,EAAMnO,IAErB,MAAMsO,EAA2C,SAA7BhK,EAAG5J,QAAQ6T,cAG/B,IAAI9B,EAkBJ,GApBAlW,KAAKiY,gBAAkBjY,KAAK+N,GAAGmK,aAAa,wBAGxCC,OAAOC,UAAUR,EAAM1B,eAC1BA,EAAgB0B,EAAM1B,cACd6B,IAAa7B,EAAgB,GAEtClW,KAAKqY,kBAAoBrY,KAAK+N,GAAGuK,uBAAuBT,GACxD7X,KAAKuY,gBAAkBvY,KAAK+N,GAAGuK,uBAAuBR,GAEtD9X,KAAK0O,SAAW,IAAIgH,gBAAgBC,IACnCA,EAAQnF,SAASoF,IAChB,IAAKA,EAAM4C,cAAe,OAC1B,MAAQC,UAAW/H,GAAWkF,EAAM4C,cAAc,GAClD5C,EAAM3R,OACJwR,QAAQ,uBACRvS,MAAMsL,YAAY,WAAY,GAAGkC,MAAW,GAC7C,IAIgC,IAAlC1Q,KAAKqY,kBAAkBlO,QACvBnK,KAAKqY,kBAAkBlO,SAAWnK,KAAKuY,gBAAgBpO,OAFxD,CAQA,QAAsBiM,IAAlBF,GAA+BnI,EAAG5J,QAAQuU,WAAY,CACzD,IAAIA,EAAa3K,EAAG5J,QAAQuU,WAC5BA,EAAaA,EAAWC,MAAM,KAC9B,MAAMC,EAAW,GACjB,IAAK,MAAMnI,KAASiI,EAAY,CAC/B,MAAMG,EAAIC,SAASrI,GAEnB,IAAS,EAAJoI,GAAS,GAAKA,EAAI,GAAM,GAAKA,GAAK7Y,KAAKqY,kBAAkBlO,SAC7DyO,EAASG,KAAKF,EAAI,IAEb7Y,KAAKiY,iBAAiB,KAE7B,CACIW,EAASzO,SAAQ+L,EAAgB0C,EACtC,CAEA5Y,KAAKgZ,MAAM9C,EAnBX,CAoBD,CAEAM,EAAgByC,UAAUD,MAAQ,SAAU9C,GAY3C,IAAIgD,EAXJlZ,KAAKmZ,wBAA0BnZ,KAAKqY,kBAAkBlO,OACtDnK,KAAKoZ,mBAAqB,IAAIzQ,MAAM3I,KAAKmZ,yBACzCnZ,KAAKqZ,cAAgBrZ,KAAKsZ,YAAYvI,KAAK/Q,MAC3CA,KAAKuZ,gBAAkBvZ,KAAKwZ,cAAczI,KAAK/Q,MAC/CA,KAAKyZ,cAAgBzZ,KAAK0Z,YAAY3I,KAAK/Q,MAC3CA,KAAK2Z,KAAO,CACXC,KAAM,GACNC,KAAM,GACNC,MAAO,IAKR,IAAK,IAAIrD,EAAI,EAAGA,EAAIzW,KAAKmZ,wBAAyB1C,IACjDzW,KAAKqY,kBAAkB5B,GAAGsD,MAAQtD,EAClCzW,KAAKqY,kBAAkB5B,GAAGvV,iBACzB,QACAlB,KAAKqZ,eACL,GAEDrZ,KAAKqY,kBAAkB5B,GAAGvV,iBACzB,UACAlB,KAAKuZ,iBACL,GAEDvZ,KAAKqY,kBAAkB5B,GAAGvV,iBACzB,QACAlB,KAAKyZ,eACL,GAEDzZ,KAAKqY,kBAAkB5B,GAAG1U,UAAUC,IAAI,wBAEpChC,KAAKqY,kBAAkB5B,GAAG1U,UAAUgN,SAAS,iBAChD/O,KAAKoZ,mBAAmB3C,IAAK,GAI/B,IAAK,IAAIA,EAAI,EAAGA,EAAIzW,KAAKuY,gBAAgBpO,OAAQsM,IAGhD,GAFAzW,KAAKuY,gBAAgB9B,GAAG1U,UAAUC,IAAI,sBAIrC,OADAhC,KAAKuY,gBAAgB9B,GAAG/V,cAAc,2BAErC,CACD,MAAMqN,EAAK/N,KAAKuY,gBAAgB9B,GAAG/V,cAClC,2BAEDV,KAAK0O,SAASO,QAAQlB,EACvB,CAID,GAAKiM,MAAM9D,GAIJ,GAAIvN,MAAMC,QAAQsN,GAAgB,CACxCgD,EAAuBhD,EACvBlW,KAAKoZ,mBAAqB,IAAIzQ,MAAM3I,KAAKmZ,yBACzC,IAAK,IAAI1C,EAAI,EAAGA,EAAIzW,KAAKmZ,wBAAyB1C,IAC7CP,EAAc+D,SAASxD,KAAIzW,KAAKoZ,mBAAmB3C,IAAK,EAE9D,MACCyC,EAAuBlZ,KAAKoZ,mBAAmBc,aAAY,GAEtDla,KAAKiY,kBACTjY,KAAKoZ,mBAAqB,IAAIzQ,MAAM3I,KAAKmZ,yBACzCnZ,KAAKoZ,mBAAmBF,IAAwB,QAdjDA,EAAuBhD,EACvBlW,KAAKoZ,mBAAqB,IAAIzQ,MAAM3I,KAAKmZ,yBACzCnZ,KAAKoZ,mBAAmBF,IAAwB,EAgBjDlZ,KAAKma,gBAAkBjE,EACvBlW,KAAKoa,YAAYlB,GACjBlZ,KAAKqa,cACLra,KAAKsa,SACLta,KAAK+N,GAAGhM,UAAUC,IAAI,gBACtBhC,KAAK+N,GAAGhM,UAAUC,IAAI,iBACvB,EAEAwU,EAAgByC,UAAUK,YAAc,SAAU1V,GACjDA,EAAEG,iBACF/D,KAAKoa,YAAYxW,EAAEK,OAAO8V,OAAO,GACjC/Z,KAAKqa,YAAYzW,EAAEK,OAAO8V,OAAO,EAClC,EAEAvD,EAAgByC,UAAUO,cAAgB,SAAU5V,GACnD,IAAI2W,EAEJ,OAAQ3W,EAAE4W,SACT,KAAKxa,KAAK2Z,KAAKG,MACf,KAAK9Z,KAAK2Z,KAAKC,KACf,KAAK5Z,KAAK2Z,KAAKE,KACdjW,EAAEG,iBACF,MACD,QACC,OAGF,GAAIH,EAAE4W,UAAYxa,KAAK2Z,KAAKG,MAA5B,CAKO,GAAIlW,EAAE4W,UAAYxa,KAAK2Z,KAAKC,MAAQhW,EAAEK,OAAO8V,MAAQ,EAC3DQ,EAAc3W,EAAEK,OAAO8V,MAAQ,MACzB,MACNnW,EAAE4W,UAAYxa,KAAK2Z,KAAKE,MACxBjW,EAAEK,OAAO8V,MAAQ/Z,KAAKmZ,wBAA0B,GAIhD,OAFAoB,EAAc3W,EAAEK,OAAO8V,MAAQ,CAGhC,CAEA/Z,KAAKoa,YAAYG,GAAa,EAF9B,MAZC3W,EAAEK,OAAO4O,OAeX,EAEA2D,EAAgByC,UAAUS,YAAc,WACF,IAAjC1Z,KAAKmZ,yBACRnZ,KAAKoa,YAAY,EAEnB,EAEA5D,EAAgByC,UAAUmB,YAAc,SAAUL,EAAOU,GACxD,IAAe,IAAXV,EAAJ,CAMIpR,MAAMC,QAAQmR,KAAQA,EAAQA,EAAM,IACxC,IAAK,IAAItD,EAAI,EAAGA,EAAIzW,KAAKmZ,wBAAyB1C,IAC7CA,IAAMsD,GACT/Z,KAAKqY,kBAAkB5B,GAAG1U,UAAUC,IAAI,eACxChC,KAAKqY,kBAAkB5B,GAAG/T,aAAa,iBAAiB,GAGpD+X,GACHza,KAAKqY,kBAAkB5B,GAAGpU,UAG3BrC,KAAKqY,kBAAkB5B,GAAG1U,UAAUqB,OAAO,eAC3CpD,KAAKqY,kBAAkB5B,GAAG/T,aAAa,iBAAiB,GAd1D,MAHC1C,KAAKqY,kBAAkB,GAAG3V,aAAa,WAAY,EAsBrD,EAEA8T,EAAgByC,UAAUoB,YAAc,SAAUN,EAAOU,GACxD,IAAIhE,EAKJ,IAFe,IAAXsD,IAAc/Z,KAAKoZ,mBAAqB,IAExCqB,EAAa,CAChB,GAAIza,KAAKiY,gBACRjY,KAAKoZ,mBAAmBW,IAAU/Z,KAAKoZ,mBAAmBW,QAE1D,IAAKtD,EAAI,EAAGA,EAAIzW,KAAKmZ,wBAAyB1C,IAE5CzW,KAAKoZ,mBAAmB3C,GADrBA,IAAMsD,IACqB/Z,KAAKoZ,mBAAmB3C,GAQzD,MAAMiE,EAAiB1a,KAAKqY,kBAAkB0B,IAAQ/I,UAChDzI,EAASvI,KAAKoZ,mBAAmBW,GAAS,OAAS,QAEzD/Z,KAAKuM,oBAAoBoO,KAAK,YAAa,CAC1CC,iBAAkB5a,KAAK+N,GACvB2M,iBACAnS,UAEF,CAEA,IAAI0J,GAAc,EAClB,IAAKwE,EAAI,EAAGA,EAAIzW,KAAKmZ,wBAAyB1C,IACzCzW,KAAKoZ,mBAAmB3C,IAC3BzW,KAAKqY,kBAAkB5B,GAAG/T,aAAa,iBAAiB,GACxD1C,KAAKqY,kBAAkB5B,GAAG1U,UAAUC,IAAI,eAExChC,KAAKuY,gBAAgB9B,GAAG/T,aAAa,eAAe,GACpD1C,KAAKuY,gBAAgB9B,GAAG1U,UAAUC,IAAI,WAEtChC,KAAKqY,kBAAkB5B,GAAG7D,cAAc7Q,UAAUC,IAAI,aAGtDiQ,GAAc,IAEdjS,KAAKqY,kBAAkB5B,GAAG/T,aAAa,iBAAiB,GACxD1C,KAAKqY,kBAAkB5B,GAAG1U,UAAUqB,OAAO,eAE3CpD,KAAKuY,gBAAgB9B,GAAG/T,aAAa,eAAe,GACpD1C,KAAKuY,gBAAgB9B,GAAG1U,UAAUqB,OAAO,WAEzCpD,KAAKqY,kBAAkB5B,GAAG7D,cAAc7Q,UAAUqB,OAAO,cAMvD6O,EAAajS,KAAK+N,GAAGhM,UAAUC,IAAI,mBAClChC,KAAK+N,GAAGhM,UAAUqB,OAAO,mBAC9BpD,KAAKiS,YAAcA,CACpB,EAEAuE,EAAgByC,UAAUqB,OAAS,WAElCta,KAAK4R,MAAQ,WACZ5R,KAAKoa,aAAa,GAClBpa,KAAKqa,aAAa,EACnB,EAEAra,KAAKyR,SAAW,WACf,MAAMsI,EAAQ/Z,KAAKma,gBACfhC,OAAOC,UAAU2B,KACpB/Z,KAAKoa,YAAYL,GAAO,GACxB/Z,KAAKqa,YAAYN,GAAO,GAE1B,CACD,EAEAvD,EAAgByC,UAAUzX,QAAU,WACnCxB,KAAK+N,GAAGhM,UAAUqB,OAAO,kBAEzB,IAAK,IAAIqT,EAAI,EAAGA,EAAIzW,KAAKmZ,wBAAyB1C,IAAK,CAyBtD,GAxBAzW,KAAKqY,kBAAkB5B,GAAGtD,gBAAgB,iBAC1CnT,KAAKqY,kBAAkB5B,GAAGtD,gBAAgB,iBAC1CnT,KAAKqY,kBAAkB5B,GAAG1U,UAAUqB,OAAO,eAE3CpD,KAAKuY,gBAAgB9B,GAAGtD,gBAAgB,eACxCnT,KAAKuY,gBAAgB9B,GAAG1U,UAAUqB,OAAO,WACzCpD,KAAKuY,gBAAgB9B,GAAGtD,gBAAgB,YAExCnT,KAAKqY,kBAAkB5B,GAAGlV,oBACzB,QACAvB,KAAKqZ,eACL,GAEDrZ,KAAKqY,kBAAkB5B,GAAGlV,oBACzB,UACAvB,KAAKuZ,iBACL,GAEDvZ,KAAKqY,kBAAkB5B,GAAGlV,oBACzB,QACAvB,KAAKyZ,eACL,GAKA,OADAzZ,KAAKuY,gBAAgB9B,GAAG/V,cAAc,2BAErC,CACD,MAAMqN,EAAK/N,KAAKuY,gBAAgB9B,GAAG/V,cAClC,2BAEDV,KAAK0O,SAASmM,UAAU9M,EACzB,QAEO/N,KAAKqY,kBAAkB5B,GAAGsD,KAClC,CACD,C,iBCtUO,SAASe,EAAcC,EAAKC,EAAOC,GACzC,GAAmB,iBAARF,EACV,MAAMG,UAAU,+BAEjB,GAAIH,EAAI5O,MAAM6O,IAAUC,EAAa9Q,SAAW4Q,EAAI5O,MAAM6O,GAAO7Q,OAChE,MAAM7B,MAAM,iCAIb,OAAOyS,EAAI1E,QAAQ2E,GADAG,IAAMF,EAAaG,SAEvC,CAYO,SAAS7J,EAAawJ,EAAKE,GACjC,OAAItS,MAAMC,QAAQqS,GACVA,EAAaI,QACnB,CAACzB,EAAM0B,EAAavB,IACnBe,EAAclB,EAAM,IAAI2B,OAAO,MAAMxB,OAAY,KAAM,CACtDuB,KAEFP,GAEiC,iBAAjBE,EACVO,OAAO7B,KAAKsB,GAAcI,QAChC,CAACzB,EAAM6B,IACNX,EAAclB,EAAM,IAAI2B,OAAO,MAAME,OAAqB,KAAM,CAC/DR,EAAaQ,MAEfV,GAIKA,CACR,C","sources":["webpack://@hero-digital/masonite/./src/components/modules/Header/SiteSearch.js","webpack://@hero-digital/masonite/./src/js/react-apps/apps/searchAsYouType/components/Cards.jsx","webpack://@hero-digital/masonite/./src/js/react-apps/apps/searchAsYouType/components/SearchAsYouType.jsx","webpack://@hero-digital/masonite/./src/components/modules/Header/Header.js","webpack://@hero-digital/masonite/./src/js/utilities/accordion.js","webpack://@hero-digital/masonite/./src/js/utilities/tokenReplace.js"],"sourcesContent":["import {\n\tactionOnClickOutside,\n\tlimitKeyboardAccessibility\n} from '../../../js/utilities/utilities'\nimport Pristine from 'pristinejs'\nimport Analytics from 'services/Analytics/Analytics'\n\n/**\n * Site Search Component that handles the search functionality\n */\nexport default class SiteSearch {\n\tstatic SELECTORS = {\n\t\tFORM_DESKTOP: '[data-cmp-hook=\"header-search-form\"]',\n\t\tINPUT_DESKTOP: '[data-cmp-hook=\"header-search\"]',\n\t\tFORM_MOBILE_CONTAINER: '[data-cmp-hook=\"header-form-mobile-container\"]',\n\t\tFORM_MOBILE: '[data-cmp-hook=\"header-nav-search-form\"]',\n\t\tINPUT_MOBILE: '[data-cmp-hook=\"header-nav-search\"]'\n\t}\n\n\tstatic CLASSES = {\n\t\tMOBILE_FORM_ERROR: 'module-header-nav-search__form--error',\n\t\tFORM_ERROR: 'fdn-input__error',\n\t\tINPUT_ERROR: 'fdn-input__error-container',\n\t\tFORM_DESKTOP: 'module-header-search__form',\n\t\tINPUT_CONTAINER_DESKTOP: 'module-header-search__input',\n\t\tFORM_MOBILE: 'module-header-nav-search__form',\n\t\tINPUT_CONTAINER_MOBILE: 'module-header-nav-search__form-group'\n\t}\n\n\tstatic NAMES = {\n\t\tDESKTOP_SEARCH: 'searchinput',\n\t\tMOBILE_SEARCH: 'search'\n\t}\n\n\t/**\n\t * @param {*} element - the element to attach the component to\n\t * @param {Object} config - configuration object\n\t * @param {HTMLElement} config.headerElement - the header element\n\t * @param {Function} config.onOpenSearch - callback function to run when search is opened\n\t */\n\tconstructor(element, { headerElement, onOpenSearch }) {\n\t\tthis.element = element\n\t\tthis.analyticsService = Analytics.getInstance()\n\t\tthis.header = headerElement\n\t\tthis.onOpenSearch = onOpenSearch\n\n\t\tthis.init()\n\t}\n\n\tinit() {\n\t\tthis.cacheDom()\n\t\tthis.attachEvents()\n\t\tthis.setupSearch()\n\t}\n\n\t/**\n\t * Cache the dom refs needed for the component\n\t */\n\tcacheDom() {\n\t\tthis.desktopForm = this.header.querySelector(\n\t\t\tSiteSearch.SELECTORS.FORM_DESKTOP\n\t\t)\n\t\tthis.inputDesktop = this.header.querySelector(\n\t\t\tSiteSearch.SELECTORS.INPUT_DESKTOP\n\t\t)\n\t\tthis.mobileFormContainer = this.header.querySelector(\n\t\t\tSiteSearch.SELECTORS.FORM_MOBILE_CONTAINER\n\t\t)\n\t\tthis.mobileForm = this.header.querySelector(\n\t\t\tSiteSearch.SELECTORS.FORM_MOBILE\n\t\t)\n\t\tthis.inputMobile = this.header.querySelector(\n\t\t\tSiteSearch.SELECTORS.INPUT_MOBILE\n\t\t)\n\t\tthis.clearButton = this.header.querySelector(\n\t\t\tSiteSearch.SELECTORS.CLEAR_BUTTON\n\t\t)\n\t}\n\n\t/**\n\t * Attach event listeners for the component\n\t */\n\tattachEvents() {\n\t\tif (this.desktopForm) {\n\t\t\tthis.desktopForm.addEventListener('submit', this.addValidation)\n\t\t}\n\t\tif (this.mobileForm) {\n\t\t\tthis.mobileForm.addEventListener('submit', this.addValidation)\n\t\t\tthis.mobileForm.addEventListener('search', this.addMobileError)\n\t\t\tthis.inputMobile.addEventListener('input', this.clearMobileError)\n\t\t}\n\t}\n\n\t/**\n\t * Detach event listeners for the component\n\t */\n\tdetachEvents() {\n\t\tif (this.desktopForm) {\n\t\t\tthis.desktopForm.removeEventListener('submit', this.addValidation)\n\t\t}\n\t\tif (this.mobileForm) {\n\t\t\tthis.mobileForm.removeEventListener('submit', this.addValidation)\n\t\t\tthis.mobileForm.removeEventListener('search', this.addMobileError)\n\t\t\tthis.inputMobile.removeEventListener('input', this.clearMobileError)\n\t\t}\n\t}\n\n\t/**\n\t * Destroy the component\n\t */\n\tdestroy() {\n\t\tthis.detachEvents()\n\t\tthis.pristine.destroy()\n\t}\n\n\t// open search\n\topenSearch() {\n\t\t// special actions for desktop\n\t\tif (this.search.triggerEnv === 'desktop') {\n\t\t\t// because we are not passing on mouse click we need to manually make sure any open nav menu is closed\n\t\t\tif (typeof this.onOpenSearch === 'function') {\n\t\t\t\tthis.onOpenSearch()\n\t\t\t}\n\t\t\t// no body scrolling\n\t\t\tdocument.body.classList.add('no-scroll')\n\n\t\t\trequestAnimationFrame(() => { // this is intential\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst inputEl = document.getElementById('searchinput-input');\n\t\t\t\t\t\tif (inputEl) inputEl.focus();\n\t\t\t\t\t}, 50);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// handle outside clicks\n\t\t\tactionOnClickOutside(this.search.obj, () => {\n\t\t\t\tthis.closeSearch({\n\t\t\t\t\tignoreClickListener: true\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\t// common actions\n\t\tthis.search.obj.classList.add('active')\n\t\tthis.search.obj.setAttribute('aria-hidden', false)\n\t\tthis.search.trigger.setAttribute('aria-expanded', true)\n\t\t// keyboard accessibility\n\t\tlimitKeyboardAccessibility(this.search.obj, () => {\n\t\t\tthis.closeSearch({\n\t\t\t\tignoreKeyboardHandler: true\n\t\t\t})\n\t\t})\n\t\t// disable keyhandling on open header in mobile\n\t\tif (this.search.triggerEnv === 'mobile')\n\t\t\tthis.header.disableKeyHandler = true\n\t\t// add class to header\n\t\tthis.header.classList.add('search-active')\n\t\t// make active\n\t\tthis.search.active = true\n\t\t// add focus to input on desktop\n\t\t// if (this.search.triggerEnv === 'desktop') this.search.input.focus()\n\t}\n\n\t// close search\n\tcloseSearch(params) {\n\t\t// special actions for desktop\n\t\tif (this.search.triggerEnv === 'desktop') {\n\t\t\tthis.search.top.style.minHeight = null\n\t\t\tdocument.body.classList.remove('no-scroll')\n\t\t\tif (!params || !params.ignoreClickListener) {\n\t\t\t\tthis.search.obj.clearListener()\n\t\t\t}\n\t\t}\n\n\t\t// common actions\n\t\tthis.search.obj.classList.remove('active')\n\t\tthis.search.obj.setAttribute('aria-hidden', true)\n\t\tthis.search.trigger.setAttribute('aria-expanded', false)\n\n\t\t// only clear / blur if the input still exists\n\t\tif (this.search.input) {\n\t\t\tthis.search.input.value = ''\n\t\t\tthis.search.input.blur()\n\t\t}\n\n\t\tif (!params || !params.ignoreKeyboardHandler) {\n\t\t\tthis.search.obj.clearKeyHandler()\n\t\t}\n\n\t\tif (this.search.triggerEnv === 'mobile') {\n\t\t\tthis.header.disableKeyHandler = false\n\t\t}\n\n\t\tthis.header.classList.remove('search-active')\n\t\tthis.search.active = false\n\n\t\tif (this.search.triggerEnv === 'desktop') {\n\t\t\tthis.search.trigger.blur()\n\t\t}\n\n\t\tthis.clearErrors()\n\t}\n\n\t// set up searching\n\tsetupSearch() {\n\t\t// build up search object\n\t\tthis.search = {}\n\t\tthis.search.obj = this.header.querySelector('.module-header-search')\n\t\tthis.search.active = false\n\t\tthis.search.trigger = this.header.querySelector(\n\t\t\t'.module-header-search__trigger'\n\t\t)\n\t\tthis.search.top = this.search.obj.querySelector(\n\t\t\t'.module-header-search__top'\n\t\t)\n\t\tthis.search.suggestionsTitle = this.search.obj.querySelector(\n\t\t\t'.module-header-search__results .title'\n\t\t)\n\t\t// setup search trigger for desktop\n\t\tthis.search.trigger.addEventListener('click', (e) => {\n\t\t\tif (!this.search.active) {\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.search.triggerEnv = 'desktop'\n\t\t\t\tthis.openSearch()\n\t\t\t} else if (this.search.active) {\n\t\t\t\tthis.closeSearch()\n\t\t\t\tthis.search.triggerEnv = null\n\t\t\t}\n\t\t})\n\t\t// setup close button\n\t\tconst closeBtn = this.search.obj.querySelector(\n\t\t\t'.module-header-search__close'\n\t\t)\n\t\tcloseBtn.addEventListener('click', () => {\n\t\t\tif (this.search.active) {\n\t\t\t\tthis.closeSearch()\n\t\t\t\tthis.search.triggerEnv = null\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Add validation to the form\n\t * @param {Event} event - the event object\n\t */\n\taddValidation = (event) => {\n\t\tevent.preventDefault()\n\t\tconst form = event.target\n\t\tconst targetForm = form.dataset.breakpoint\n\n\t\t// PristineJS configuration\n\t\tconst config = {\n\t\t\tlive: false,\n\t\t\tclassTo:\n\t\t\t\ttargetForm === 'desktop'\n\t\t\t\t\t? SiteSearch.CLASSES.INPUT_CONTAINER_DESKTOP\n\t\t\t\t\t: SiteSearch.CLASSES.INPUT_CONTAINER_MOBILE,\n\t\t\terrorTextParent:\n\t\t\t\ttargetForm === 'desktop'\n\t\t\t\t\t? SiteSearch.CLASSES.INPUT_CONTAINER_DESKTOP\n\t\t\t\t\t: SiteSearch.CLASSES.INPUT_CONTAINER_MOBILE,\n\t\t\terrorClass: SiteSearch.CLASSES.FORM_ERROR,\n\t\t\terrorTextClass: SiteSearch.CLASSES.INPUT_ERROR,\n\t\t\terrorTextTag: 'div'\n\t\t}\n\n\t\t// Validate search query\n\t\tthis.pristine = new Pristine(\n\t\t\ttargetForm === 'desktop' ? this.desktopForm : this.mobileForm,\n\t\t\tconfig\n\t\t)\n\t\tconst valid = this.pristine.validate()\n\n\t\tif (valid) {\n\t\t\tthis.trackInteraction()\n\t\t\tform.submit()\n\t\t} else {\n\t\t\t// Add error class to mobile form\n\t\t\tif (targetForm === 'mobile') {\n\t\t\t\tthis.addMobileError()\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Clear error styles and validation messages\n\t */\n\tclearErrors = () => {\n\t\tif (this.pristine) {\n\t\t\tthis.pristine.reset()\n\t\t}\n\t\tthis.mobileFormContainer.classList.remove(\n\t\t\tSiteSearch.CLASSES.MOBILE_FORM_ERROR\n\t\t)\n\t}\n\n\t/**\n\t * Add error styles\n\t */\n\taddMobileError = () => {\n\t\tif (this.pristine) {\n\t\t\tthis.mobileFormContainer.classList.add(\n\t\t\t\tSiteSearch.CLASSES.MOBILE_FORM_ERROR\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Track interaction\n\t */\n\ttrackInteraction = () => {\n\t\tlet searchTerm = null\n\n\t\tif (this.inputMobile.value !== '') {\n\t\t\tsearchTerm = this.inputMobile.value\n\t\t} else {\n\t\t\tsearchTerm = this.inputDesktop.value\n\t\t}\n\n\t\tthis.analyticsService.trackInteraction('search', {\n\t\t\tsearch_term: searchTerm\n\t\t})\n\t}\n}\n","import PropTypes from 'prop-types';\n\nDoorCard.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\texcerpt: PropTypes.string,\n\timageUrl: PropTypes.string,\n\turl: PropTypes.string.isRequired,\n\timageAlt: PropTypes.string,\n\teyebrows: PropTypes.arrayOf(PropTypes.string)\n};\n\nDocumentCard.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\turl: PropTypes.string.isRequired,\n\texcerpt: PropTypes.string\n};\n\nArticleCard.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\texcerpt: PropTypes.string,\n\timageUrl: PropTypes.string,\n\turl: PropTypes.string.isRequired,\n\timageAlt: PropTypes.string,\n\tcategory: PropTypes.string\n};\n\nGeneralCard.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\texcerpt: PropTypes.string,\n\timageUrl: PropTypes.string,\n\turl: PropTypes.string.isRequired,\n\timageAlt: PropTypes.string\n};\n\nfunction decodeHtml(htmlString) {\n\tconst parser = new DOMParser();\n\treturn parser.parseFromString(htmlString, 'text/html').documentElement.textContent;\n}\n\n/**\n * DoorCard\n */\nexport function DoorCard({ title, excerpt, imageUrl, url, imageAlt, eyebrows }) {\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
{decodeHtml(title)}
\n\t\t\t\t

{decodeHtml(excerpt)}

\n\t\t\t
\n\t\t
\n\t);\n}\n\n/**\n * DocumentCard\n */\nexport function DocumentCard({ title, url, excerpt }) {\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\"document\"\n\t\t\t
\n\t\t\t
\n\t\t\t\t
{decodeHtml(title)}
\n\t\t\t\t{excerpt && (\n\t\t\t\t\t

\n\t\t\t\t\t\t{decodeHtml(excerpt)}\n\t\t\t\t\t

\n\t\t\t\t)}\n\t\t\t
\n\t\t
\n\t);\n}\n\n/**\n * ArticleCard\n */\nexport function ArticleCard({ title, excerpt, imageUrl, url, imageAlt, category }) {\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
{decodeHtml(title)}
\n\t\t\t\t

{decodeHtml(excerpt)}

\n\t\t\t
\n\t\t
\n\t);\n}\n\n/**\n * GeneralCard\n */\nexport function GeneralCard({ title, excerpt, imageUrl, url, imageAlt }) {\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
{decodeHtml(title)}
\n\t\t\t\t{excerpt &&

{decodeHtml(excerpt)}

}\n\t\t\t
\n\t\t
\n\t);\n}\n","import { useState, useEffect } from 'react';\nimport {\n\tDoorCard,\n\tDocumentCard,\n\tArticleCard,\n\tGeneralCard\n} from './Cards';\nimport '@lottiefiles/lottie-player';\nimport PropTypes from 'prop-types';\n\n\nSearchAsYouType.propTypes = {\n\tapiEndpoint: PropTypes.string.isRequired,\n};\n\n/**\n * useDebounce\n */\nfunction useDebounce(value, delay) {\n\tconst [debouncedValue, setDebouncedValue] = useState(value);\n\n\tuseEffect(() => {\n\t\tconst handler = setTimeout(() => {\n\t\t\tsetDebouncedValue(value);\n\t\t}, delay);\n\n\t\treturn () => clearTimeout(handler);\n\t}, [value, delay]);\n\n\treturn debouncedValue;\n}\n\n/**\n * SearchAsYouType\n * Props:\n * - apiEndpoint (string): URL to fetch with `?query=...`\n */\nexport default function SearchAsYouType({ apiEndpoint }) {\n\tconst [query, setQuery] = useState('');\n\tconst debouncedQuery = useDebounce(query, 500);\n\n\t// Store an array of “sections”\n\tconst [sections, setSections] = useState([]);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState(null);\n\n\t// Whenever debouncedQuery changes, fetch new results\n\tuseEffect(() => {\n\t\tif (!debouncedQuery) {\n\t\t\tsetSections([]);\n\t\t\treturn;\n\t\t}\n\n\t\tasync function fetchResults() {\n\t\t\tsetIsLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tconst resp = await fetch(\n\t\t\t\t\t`${apiEndpoint}?query=${encodeURIComponent(debouncedQuery)}`\n\t\t\t\t);\n\t\t\t\tif (!resp.ok) {\n\t\t\t\t\tthrow new Error(`Error ${resp.status}: ${resp.statusText}`);\n\t\t\t\t}\n\n\t\t\t\tconst data = await resp.json();\n\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\tsetSections(data);\n\t\t\t\t\tsetSections(data.map(section => ({\n\t\t\t\t\t\t...section,\n\t\t\t\t\t\t__uuid: crypto.randomUUID()\n\t\t\t\t\t})));\n\t\t\t\t} else {\n\t\t\t\t\tsetSections([]);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err);\n\t\t\t\tsetError(err.message || 'Unknown error');\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t}\n\n\t\tfetchResults();\n\t}, [debouncedQuery, apiEndpoint]);\n\n\tconst handleInputChange = (e) => {\n\t\tsetQuery(e.target.value);\n\t};\n\n\t// Render a single item based on its `searchResultType`\n\tconst renderItem = (item, itemIndex) => {\n\t\tconst key = `${item.searchResultType}-${item.title || item.name}-${itemIndex}`;\n\n\t\tswitch (item.searchResultType) {\n\t\t\tcase 'Doors':\n\t\t\tcase 'Door':\n\t\t\t\treturn (\n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t);\n\n\t\t\tcase 'Documents':\n\t\t\tcase 'Document':\n\t\t\t\treturn (\n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t);\n\n\t\t\tcase 'Articles':\n\t\t\tcase 'Article':\n\t\t\t\treturn (\n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t);\n\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tSearch\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\n\t\t\t{isLoading && (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t)}\n\n\t\t\t{error && (\n\t\t\t\t
    \n\t\t\t\t\t{error}\n\t\t\t\t
    \n\t\t\t)}\n\n\t\t\t{!isLoading && !error && sections.length > 0 && (\n\t\t\t\t
    \n\t\t\t\t\t{sections.map((section, sectionIndex) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tcaption,\n\t\t\t\t\t\t\tresults: items = [],\n\t\t\t\t\t\t\tviewAllText,\n\t\t\t\t\t\t\tallResultsUrl,\n\t\t\t\t\t\t\tnoResultsFound\n\t\t\t\t\t\t} = section;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {caption}

    \n\n\t\t\t\t\t\t\t\t{items.length > 0 ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t
    {noResultsFound}
    \n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{items.length > 0 && allResultsUrl && viewAllText && (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{viewAllText} \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t
    \n\t\t\t)}\n\t\t\n\t);\n}\n","import { enableBodyScroll } from 'body-scroll-lock'\nimport Services from 'services'\nimport { AccordionWidget } from 'utilities/accordion'\nimport {\n\tactionOnClickOutside,\n\tlimitKeyboardAccessibility\n} from 'utilities/utilities'\nimport SiteSearch from './SiteSearch'\nimport { tokenReplace } from 'utilities/tokenReplace'\nimport ReactDOM from 'react-dom/client'\nimport SearchAsYouType from 'reactDir/searchAsYouType/components/SearchAsYouType'\n\nclass Header {\n\tstatic SELECTORS = {\n\t\tCOMPONENT: '[data-cmp-is=\"header\"]',\n\t\tSTICKY_WRAPPER: '[data-sticky-wrapper=\"\"]',\n\t\tSITE_SEARCH: '[data-site-search=\"\"]',\n\t\tFAVORITES: '[data-cmp-hook=\"favorites-count\"]',\n\t\tFAVORITES_LABEL: '[data-cmp-hook=\"favorites-a11ty\"]',\n\t\tFAVORITES_ICON: '[data-cmp-hook=\"favorites-icon\"]'\n\t}\n\n\tstatic CLASSES = {\n\t\tHIDDEN: 'module-header--hidden',\n\t\tACTIVE: 'module-header-favorites-svg-heart--active'\n\t}\n\n\tstatic EVENTS = {\n\t\tSAVE_FAVORITE: 'saveFavorite',\n\t\tREMOVE_FAVORITE: 'removeFavorite'\n\t}\n\n\tconstructor(element) {\n\t\tthis.setupFullWidthSections()\n\t\tthis.setupAlertBannerObservation()\n\t\tthis.header = element\n\t\tthis.services = Services.getInstance()\n\t\tthis.config = {\n\t\t\tmatch: false,\n\t\t\tmyObserver: null\n\t\t}\n\n\t\tthis.ScrollService = this.services.ScrollService\n\t\tthis.ResizeService = this.services.ResizeService\n\t\tthis.EventEmitterService = this.services.EventEmitterService\n\n\t\tthis.cacheDom()\n\n\t\tthis.mqContext()\n\t\tthis.createSiteSearch()\n\t\tthis.updateFavorites()\n\t\tthis.makeSticky()\n\t\tthis.attachEvents()\n\t}\n\n\tcacheDom() {\n\t\tthis.toggle = this.header.querySelector('.js-nav-toggle')\n\t\tthis.mainNav = this.header.querySelector('.js-main-nav')\n\t\tthis.alertBanners = this.header.querySelectorAll('.mod-alert-banner')\n\t\tthis.menuContainer = this.mainNav.querySelector('.container')\n\t\tthis.tertiaryNavs = this.mainNav.querySelectorAll(\n\t\t\t'.module-header-nav-tertiary'\n\t\t)\n\t\tthis.stickyWrapper = this.header.querySelector(\n\t\t\tHeader.SELECTORS.STICKY_WRAPPER\n\t\t)\n\t\tthis.mobileActiveClass = 'mobile-active'\n\t\tthis.mobileScrollEl = this.header.querySelector(\n\t\t\t'.module-header__scroll-wrapper'\n\t\t)\n\t\tthis.siteSearchEl = this.header.querySelector(\n\t\t\tHeader.SELECTORS.SITE_SEARCH\n\t\t)\n\t\tthis.favoritesCountEl = this.header.querySelector(\n\t\t\tHeader.SELECTORS.FAVORITES\n\t\t)\n\t\tthis.favoritesCountLabel = this.header.querySelector(\n\t\t\tHeader.SELECTORS.FAVORITES_LABEL\n\t\t)\n\t\tthis.favoritesIcon = this.header.querySelector(\n\t\t\tHeader.SELECTORS.FAVORITES_ICON\n\t\t)\n\n\t\t// ─── grab our three “move-around” containers ────────────────────────────────\n\t\t// 1) the single React mount-point element:\n\t\tthis.saytContainer = document.getElementById('searchAsYouType')\n\n\t\t// 2) the empty div inside the mobile nav where we will place #searchAsYouType\n\t\tthis.mobilePlaceholder = this.header.querySelector('.module-header-nav-search')\n\n\t\t// 3) the overlay wrapper (desktop) where #searchAsYouType originally lives\n\t\tthis.overlayContainer = this.header.querySelector('#header-search')\n\n\t\t// 4) the search trigger button to toggle aria attributes\n\t\tthis.searchTrigger = this.header.querySelector('.module-header-search__trigger')\n\t\t// ────────────────────────────────────────────────────────────────────────────\n\n\t\tconst saytContainer = document.getElementById('searchAsYouType')\n\t\tif (saytContainer) {\n\t\t\tconst root = ReactDOM.createRoot(saytContainer)\n\t\t\troot.render()\n\t\t}\n\t}\n\n\tsetupFullWidthSections() {\n\t\tconst el = document.createElement('div');\n\t\tel.style.width = '100%';\n\t\tdocument.body.appendChild(el);\n\n\t\t// Measure the “constrained” width (i.e., width excluding scrollbar)\n\t\tconst constrainedWidth = el.getBoundingClientRect().width;\n\n\t\t// Switch the element to 100vw and measure again\n\t\tel.style.width = '100vw';\n\t\tconst fullWidth = el.getBoundingClientRect().width;\n\n\t\t// Compute scrollbar width and store it in a CSS custom property\n\t\tconst scrollbarWidth = Math.ceil(fullWidth - constrainedWidth);\n\t\tdocument.documentElement.style.setProperty('--scrollbar-width', `${scrollbarWidth}px`);\n\n\t\t// Clean up\n\t\tdocument.body.removeChild(el);\n\t}\n\n\tsetupAlertBannerObservation() {\n\t\tthis.observer = new MutationObserver((mutationsList) => {\n\t\t\tfor (const mutation of mutationsList) {\n\t\t\t\t// If the mutation was an attribute change\n\t\t\t\tif (\n\t\t\t\t\tmutation.type === 'attributes' &&\n\t\t\t\t\t(mutation.attributeName === 'aria-expanded' ||\n\t\t\t\t\t\tmutation.attributeName === 'aria-hidden')\n\t\t\t\t) {\n\t\t\t\t\t// If the observed element has the class \"mod-alert-banner\" run your function.\n\t\t\t\t\tif (mutation.target.classList.contains('mod-alert-banner')) {\n\t\t\t\t\t\tthis.calculateMenuHeight()\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle added or removed child nodes\n\t\t\t\tif (mutation.type === 'childList') {\n\t\t\t\t\tconst headerElement = document.querySelector(\n\t\t\t\t\t\tHeader.SELECTORS.COMPONENT\n\t\t\t\t\t)\n\t\t\t\t\tif (\n\t\t\t\t\t\tmutation.target === headerElement ||\n\t\t\t\t\t\theaderElement.contains(mutation.target)\n\t\t\t\t\t) {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.calculateMenuHeight()\n\t\t\t\t\t\t}, 1000)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\t// Observe attribute changes and subtree (including child list changes)\n\t\tthis.observer.observe(\n\t\t\tdocument.querySelector(Header.SELECTORS.COMPONENT),\n\t\t\t{\n\t\t\t\tattributes: true,\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true\n\t\t\t}\n\t\t)\n\t}\n\n\tattachEvents() {\n\t\t// set up toggle\n\t\tthis.toggle.addEventListener('click', this.toggleState)\n\n\t\t// Listen to Favorite changes\n\t\tthis.EventEmitterService.on(\n\t\t\tHeader.EVENTS.SAVE_FAVORITE,\n\t\t\tthis.updateFavorites\n\t\t)\n\t\tthis.EventEmitterService.on(\n\t\t\tHeader.EVENTS.REMOVE_FAVORITE,\n\t\t\tthis.updateFavorites\n\t\t)\n\n\t\t// Add window orientation change event to call calculateMenuHeight\n\t\twindow.addEventListener('orientationchange', () => {\n\t\t\tthis.closeoutNav()\n\t\t})\n\t}\n\n\tremoveEvents() {\n\t\tthis.toggle.removeEventListener('click', this.toggleState)\n\t\tthis.EventEmitterService.off(\n\t\t\tHeader.EVENTS.SAVE_FAVORITE,\n\t\t\tthis.updateFavorites\n\t\t)\n\t\tthis.EventEmitterService.off(\n\t\t\tHeader.EVENTS.REMOVE_FAVORITE,\n\t\t\tthis.updateFavorites\n\t\t)\n\t}\n\n\tdestroy() {\n\t\tthis.removeEvents()\n\t\tthis.observer.disconnect()\n\t}\n\n\tmqContext() {\n\t\tconst _ = this;\n\t\tconst mediaQuery = window.matchMedia('(min-width: 996px)');\n\n\t\t// ─── Helpers ────────────────────────────────────────────────────────────────\n\n\t\tconst cleanupObserver = () => {\n\t\t\tconst obs = _.config.myObserver;\n\t\t\tif (!obs) return;\n\n\t\t\tobs.disconnect();\n\n\t\t\t_.mainNav\n\t\t\t\t.querySelectorAll('.module-header-nav__panel')\n\t\t\t\t.forEach(panel => {\n\t\t\t\t\tpanel.style.height = 'auto';\n\t\t\t\t});\n\t\t};\n\n\t\tconst closeSearchOverlay = () => {\n\t\t\tconst oc = _.overlayContainer;\n\t\t\tif (!oc?.classList.contains('active')) return;\n\t\t\toc.classList.remove('active');\n\t\t\toc.setAttribute('aria-hidden', 'true');\n\t\t\t_.searchTrigger?.setAttribute('aria-expanded', 'false');\n\t\t\tdocument.body.classList.remove('no-scroll');\n\t\t\t_.header.classList.remove('search-active');\n\t\t};\n\n\t\tconst moveSayt = container => {\n\t\t\tif (_.saytContainer && container && !container.contains(_.saytContainer)) {\n\t\t\t\tcontainer.appendChild(_.saytContainer);\n\t\t\t}\n\t\t};\n\n\t\tconst handleDesktop = () => {\n\t\t\t_.config.match = true;\n\t\t\t_.mainNav.setAttribute('aria-hidden', false);\n\t\t\t_.addSubNavFunctionality();\n\t\t\tmoveSayt(_.overlayContainer);\n\t\t};\n\n\t\tconst handleMobile = () => {\n\t\t\t_.config.match = false;\n\t\t\tcleanupObserver();\n\t\t\t_.addSubNavFunctionality();\n\t\t\tcloseSearchOverlay();\n\t\t\tmoveSayt(_.mobilePlaceholder);\n\t\t};\n\n\t\t// ─── Media-query listener ────────────────────────────────────────────────────\n\n\t\tfunction mediaQueryChange(mq) {\n\t\t\tif (mq.matches) {\n\t\t\t\thandleDesktop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\thandleMobile();\n\t\t}\n\n\t\tmediaQuery.addEventListener('change', mediaQueryChange);\n\t\tmediaQueryChange(mediaQuery);\n\t}\n\n\n\tcreateSiteSearch() {\n\t\tif (this.siteSearchEl) {\n\t\t\tthis.siteSearch = new SiteSearch(this.siteSearchEl, {\n\t\t\t\theaderElement: this.header,\n\t\t\t\tonOpenSearch: this.collapsePrimary.bind(this, true)\n\t\t\t})\n\t\t}\n\t}\n\n\tupdateFavorites = () => {\n\t\tif (this.favoritesCountEl && this.favoritesCountLabel) {\n\t\t\t// Reset a11ty label\n\t\t\tthis.favoritesCountLabel.innerText =\n\t\t\t\tthis.favoritesCountLabel.dataset.label\n\n\t\t\t// Get all favorite types from localsotrage\n\t\t\tconst doorFavorites = localStorage.getItem('doorFavorites')\n\t\t\t\t? JSON.parse(localStorage.getItem('doorFavorites'))\n\t\t\t\t: []\n\t\t\t// Merge all favorite types from localsotrage\n\t\t\tconst favorites = [...doorFavorites]\n\n\t\t\t// Update count and icon if there are favorites\n\t\t\tif (favorites.length > 0) {\n\t\t\t\tthis.favoritesCountLabel.textContent = tokenReplace(\n\t\t\t\t\tthis.favoritesCountLabel.textContent,\n\t\t\t\t\t{\n\t\t\t\t\t\tfavoritesCount: favorites.length\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tthis.favoritesCountEl.innerText = favorites.length || ''\n\t\t\t\tthis.favoritesCountEl.classList.remove(Header.CLASSES.HIDDEN)\n\t\t\t\tthis.favoritesIcon.classList.add(Header.CLASSES.ACTIVE)\n\t\t\t\tthis.favoritesIcon.src = '/dist/assets/icons/save-active.svg'\n\t\t\t} else {\n\t\t\t\tthis.favoritesCountLabel.textContent = tokenReplace(\n\t\t\t\t\tthis.favoritesCountLabel.textContent,\n\t\t\t\t\t{\n\t\t\t\t\t\tfavoritesCount: 0\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tthis.favoritesCountEl.innerText = ''\n\t\t\t\tthis.favoritesCountEl.classList.add(Header.CLASSES.HIDDEN)\n\t\t\t\tthis.favoritesIcon.classList.remove(Header.CLASSES.ACTIVE)\n\t\t\t\tthis.favoritesIcon.src = '/dist/assets/icons/save.svg'\n\t\t\t}\n\t\t}\n\t}\n\n\tcollapsePrimary(openInit) {\n\t\tthis.navRef?.primary?.obj?.close()\n\t\tif (openInit) {\n\t\t\tthis.navRef?.primary?.obj?.openInit()\n\t\t}\n\t}\n\n\tcollapseAllSections() {\n\t\tthis.collapseExpandedSubsections()\n\t\tthis.collapseExpandedSections()\n\t}\n\n\tcollapseExpandedSections() {\n\t\tconst sections = this.navRef.primary.sections\n\t\tfor (const node in sections) {\n\t\t\tconst section = sections[node].obj\n\t\t\tif (section.hasExpanded) {\n\t\t\t\tsection.close()\n\t\t\t}\n\t\t}\n\t}\n\n\tcollapseExpandedSubsections() {\n\t\tconst sections = this.navRef.primary.sections\n\t\tfor (const node in sections) {\n\t\t\tif (sections[node].obj.hasExpanded) {\n\t\t\t\tconst subsections = sections[node].subsections\n\t\t\t\tfor (const subnode in subsections) {\n\t\t\t\t\tconst subsection = subsections[subnode].obj\n\t\t\t\t\tif (subsection.hasExpanded) {\n\t\t\t\t\t\tsubsection.close()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tclearDesktopKeyHandler() {\n\t\tif (typeof this.header.clearKeyHandler === 'function') {\n\t\t\tthis.header.clearKeyHandler()\n\t\t}\n\t}\n\n\topenDesktopMenu(node) {\n\t\tthis.header.classList.add('has-expanded-menu')\n\t\tthis.menuExpanded = true\n\t\t// this.togglePrimaryNavPointer()\n\t\t// window resizing\n\t\tthis.removeDesktopMenuResizeAction = this.ResizeService.addCallback(\n\t\t\t(event) => {\n\t\t\t\tif (event.isWidthChanged) {\n\t\t\t\t\tthis.closeoutNav()\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t}\n\n\topenDesktopFirstSecondaryMenu(node) {\n\t\tconst trigger = node.parentElement.querySelector(\n\t\t\t'.module-header-nav-secondary__link'\n\t\t)\n\n\t\ttrigger.click()\n\t}\n\n\t// call this function to close down nav from other areas outside of nav\n\tcloseoutNav() {\n\t\tif (this.menuExpanded) {\n\t\t\tthis.closeDesktopMenu()\n\t\t\tthis.collapsePrimary()\n\t\t\tthis.collapseAllSections()\n\t\t}\n\t}\n\n\tcloseDesktopMenu(params) {\n\t\tthis.header.classList.remove('has-expanded-menu')\n\n\t\tif (!params?.ignoreClickListener) {\n\t\t\tthis.mainNav?.clearListener()\n\t\t}\n\n\t\tthis.menuExpanded = false\n\n\t\t// remove keyboard accessibility\n\t\tif (!params?.ignoreKeyboardHandler) {\n\t\t\tthis.clearDesktopKeyHandler()\n\t\t}\n\n\t\t// remove window resizing\n\t\tthis.removeDesktopMenuResizeAction()\n\t}\n\n\tcalculateMenuHeight() {\n\t\tlet totalHeight = 0\n\t\tif (this.alertBanners?.length) {\n\t\t\tthis.alertBanners.forEach((banner) => {\n\t\t\t\ttotalHeight += banner.offsetHeight || 0\n\t\t\t})\n\t\t}\n\n\t\tif (window.matchMedia('(max-width: 995px)').matches) {\n\t\t\tthis.menuContainer.setAttribute(\n\t\t\t\t'style',\n\t\t\t\t`height: calc(100vh - (224px + ${totalHeight}px)); height: calc(100dvh - (224px + ${totalHeight}px))`\n\t\t\t)\n\t\t\tthis.tertiaryNavs.forEach((nav) => {\n\t\t\t\tnav.setAttribute(\n\t\t\t\t\t'style',\n\t\t\t\t\t`height: calc(100vh - (224px + ${totalHeight}px)); height: calc(100dvh - (224px + ${totalHeight}px)); top: calc(224px + ${totalHeight}px)`\n\t\t\t\t)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.menuContainer.removeAttribute('style')\n\t\t\tthis.tertiaryNavs.forEach((nav) => {\n\t\t\t\tnav.removeAttribute('style')\n\t\t\t})\n\t\t}\n\n\t\tthis.setHeaderHeight()\n\t}\n\n\t// initalize the mobile menu\n\tmobileMenuInit() {\n\t\tconst levelArr = ['section', 'subsection']\n\t\tthis.mobileMenu = {\n\t\t\tpanels: {},\n\t\t\tactiveAccordionTriggers: {},\n\t\t\tlevelHeights: {}\n\t\t}\n\t\tfor (const level of levelArr) {\n\t\t\t// create the element to add to mobile panels\n\t\t\tconst backBtn = document.createElement('button')\n\t\t\tbackBtn.innerHTML = 'Back to'\n\t\t\tbackBtn.classList.add('module-header-nav-back')\n\t\t\t// add click listener to back button\n\t\t\tbackBtn.addEventListener('click', () => {\n\t\t\t\tthis.mobileMenuBack(level)\n\t\t\t})\n\n\t\t\t// create title element\n\t\t\tconst title = document.createElement('div')\n\t\t\ttitle.classList.add('panel-title')\n\t\t\tbackBtn.append(title)\n\t\t\t// add to global\n\t\t\tthis.mobileMenu.panels[level] = backBtn\n\t\t}\n\t\t// set the flag\n\t\tthis.mobileMenuInitialized = true\n\t}\n\n\t// open navigation menu on mobile\n\topenMobileMenu() {\n\t\t// check if mobile setup has been initiated\n\t\tif (!this.mobileMenuInitialized) this.mobileMenuInit()\n\t\t// prevent page content from scrolling beneath the nav\n\t\tdocument.body.classList.add('no-scroll')\n\t\tthis.header.classList.add(this.mobileActiveClass)\n\t\tthis.toggle.setAttribute('aria-expanded', true)\n\t\tthis.mainNav.setAttribute('aria-hidden', false)\n\t\tthis.mainNav.dataset.menulevel = 'primary'\n\t\t// set the scroll top\n\t\tthis.mobileScrollEl.scrollTop = 0\n\t\tthis.mobileMenuActive = true\n\t\tthis.calculateMenuHeight()\n\t\t// keyboard accessibility\n\t\tlimitKeyboardAccessibility(this.header, () => {\n\t\t\tthis.closeMobileMenu({\n\t\t\t\tignoreKeyboardHandler: true\n\t\t\t})\n\t\t})\n\t\t// window resizing\n\t\tthis.removeMobileMenuResizeAction = this.ResizeService.addCallback(\n\t\t\t(event) => {\n\t\t\t\tif (event.isWidthChanged) {\n\t\t\t\t\tthis.closeMobileMenu()\n\t\t\t\t\tthis.calculateMenuHeight()\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t}\n\n\t// close navigation menu on mobile\n\tcloseMobileMenu(params) {\n\t\tdocument.body.classList.remove('no-scroll')\n\t\tenableBodyScroll(this.mobileScrollEl)\n\t\tthis.header.classList.remove(this.mobileActiveClass)\n\t\tthis.collapseAllSections()\n\t\tthis.toggle.setAttribute('aria-expanded', false)\n\t\tthis.mainNav.setAttribute('aria-hidden', true)\n\t\tthis.mobileMenuActive = false\n\t\t// reset height of nav container\n\t\tthis.mainNav.style.height = 'auto'\n\t\tthis.header.style.removeProperty('--height')\n\t\t// remove keyboard accessibility\n\t\tif (!params?.ignoreKeyboardHandler) this.header.clearKeyHandler()\n\t\t// remove window resizing\n\t\tthis.removeMobileMenuResizeAction()\n\t\t// Reset form validation\n\t\tif (this.siteSearch) {\n\t\t\tthis.siteSearch.clearErrors()\n\t\t}\n\t\tthis.setHeaderHeight()\n\t}\n\n\t// activate hamburger toggle for mobile\n\ttoggleState = () => {\n\t\tconst isActive = !this.mobileMenuActive\n\t\tif (isActive) this.openMobileMenu()\n\t\telse this.closeMobileMenu()\n\t}\n\n\t// click handler for mobile menu back button\n\tmobileMenuBack(level) {\n\t\tlet group\n\t\tif (level === 'subsection') group = 'section'\n\t\telse group = 'primary'\n\n\t\tthis.animateMobileMenu(group, true)\n\n\t\tconst trigger = this.mobileMenu.activeAccordionTriggers[level]\n\n\t\t// function for resetting menu\n\t\tconst resetMenu = () => {\n\t\t\t// remove this event listener so it only gets triggered once\n\t\t\tthis.mainNav.removeEventListener('transitionend', resetMenu)\n\t\t\t// trigger a click to reset the menu\n\t\t\ttrigger.click()\n\t\t}\n\n\t\t// when the next css transition finishes (which should be the one we just triggered)\n\t\tthis.mainNav.addEventListener('transitionend', resetMenu)\n\t}\n\n\t// logic for expanding and collapsing sections when they are clicked\n\tanimateMobileMenu(group, isBack) {\n\t\t// function for resetting menu\n\t\tconst resetSize = () => {\n\t\t\t// remove this event listener so it only gets triggered once\n\t\t\tthis.mainNav.removeEventListener('transitionend', resetSize)\n\t\t\t// remove \"height\" from the element's inline styles, so it can return to its initial value\n\t\t\tlet height\n\t\t\tif (group === 'primary') return\n\t\t\t// height = 'auto'\n\t\t\telse if (isBack) {\n\t\t\t\theight = this.mobileMenu[group]\n\t\t\t} else {\n\t\t\t\theight = this.mobileMenu.subPages.offsetHeight + 'px'\n\t\t\t\tthis.mobileMenu[group] = height\n\t\t\t}\n\t\t\tthis.mainNav.style.height = height\n\t\t}\n\t\t// when the next css transition finishes (which should be the one we just triggered)\n\t\tthis.mainNav.addEventListener('transitionend', resetSize)\n\t\t// change data attribute to trigger transition\n\t\tthis.mainNav.setAttribute('data-menulevel', group)\n\t}\n\n\t// logic for expanding and collapsing sections when they are clicked\n\tprepMobileMenu(group, node) {\n\t\t// set up panel\n\t\tconst panel = this.mobileMenu.panels[group]\n\t\tconst title = panel.querySelector('.panel-title')\n\t\ttitle.innerHTML = node.innerHTML\n\t\t// isolate nav elements\n\t\tconst parent = node.parentElement\n\t\tconst subPages = parent.querySelector('ul')\n\t\tsubPages.prepend(panel)\n\t\t// add accordion trigger to mobile menu object\n\t\tthis.mobileMenu.activeAccordionTriggers[group] = node\n\t\tthis.mobileMenu.subPages = subPages\n\n\t\tconst tertiaryNav = parent.querySelector('.module-header-nav-tertiary')\n\t\tconst elem = tertiaryNav.querySelector('.module-header-nav-back')\n\t\telem.parentNode.removeChild(elem)\n\n\t\ttertiaryNav.prepend(elem)\n\n\t\t// animate the menu\n\t\tthis.animateMobileMenu(group)\n\t}\n\n\t// behavior for clicking on a nav item\n\taccordionClick(node, group) {\n\t\tnode.addEventListener(\n\t\t\t'click',\n\t\t\t(e) => {\n\t\t\t\te.preventDefault()\n\t\t\t\t// see if this click is expanding element or not\n\t\t\t\tconst thisExpanded = !e.target.classList.contains('is-expanded')\n\t\t\t\t// scenarios for different levels of nav\n\t\t\t\tswitch (group) {\n\t\t\t\t\tcase 'primary':\n\t\t\t\t\tcase 'section':\n\t\t\t\t\t\t// MOBILE\n\t\t\t\t\t\tif (this.mobileMenuActive && thisExpanded) {\n\t\t\t\t\t\t\tthis.prepMobileMenu(group, node)\n\t\t\t\t\t\t\tthis.collapseExpandedSubsections()\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// DESKTOP\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst _ = this\n\t\t\t\t\t\t\t// collapse subsections\n\t\t\t\t\t\t\tthis.collapseExpandedSubsections()\n\t\t\t\t\t\t\t// SECTION HAS BEEN CLICKED ACTIVE, THE DESKTOP NAV MENU MAY OR MAY NOT ALREADY BE OPEN\n\t\t\t\t\t\t\tif (thisExpanded) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tnode.classList.contains(\n\t\t\t\t\t\t\t\t\t\t'module-header-nav-primary__link'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tthis.openDesktopFirstSecondaryMenu(node)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst secondaryActiveEl = e.target.classList.contains(\n\t\t\t\t\t\t\t\t\t'module-header-nav-secondary__link',\n\t\t\t\t\t\t\t\t\t'is-expanded'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tconst variant =\n\t\t\t\t\t\t\t\t\te.target.parentElement.classList.contains(\n\t\t\t\t\t\t\t\t\t\t'module-header-nav-primary__item--variant'\n\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\tif (secondaryActiveEl) {\n\t\t\t\t\t\t\t\t\tconst tertiaryNav =\n\t\t\t\t\t\t\t\t\t\te.target.parentElement.querySelector(\n\t\t\t\t\t\t\t\t\t\t\t'.module-header-nav-tertiary'\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tconst panel = e.target.closest(\n\t\t\t\t\t\t\t\t\t\t'.module-header-nav__panel'\n\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t_.config.myObserver = new ResizeObserver(\n\t\t\t\t\t\t\t\t\t\t(entries) => {\n\t\t\t\t\t\t\t\t\t\t\tif (_.config.match === true) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst tertiaryHeight =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentry.contentRect.height\n\t\t\t\t\t\t\t\t\t\t\t\t\tpanel.style.height =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttertiaryHeight + 'px'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t_.config.myObserver.observe(tertiaryNav)\n\t\t\t\t\t\t\t\t} else if (variant) {\n\t\t\t\t\t\t\t\t\t// variant\n\t\t\t\t\t\t\t\t\tconst tertiaryNav =\n\t\t\t\t\t\t\t\t\t\te.target.parentElement.querySelector(\n\t\t\t\t\t\t\t\t\t\t\t'.module-header-nav-secondary--large .module-header-nav-tertiary'\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tconst panel = e.target.parentElement.querySelector(\n\t\t\t\t\t\t\t\t\t\t'.module-header-nav__panel'\n\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t_.config.myObserver = new ResizeObserver(\n\t\t\t\t\t\t\t\t\t\t(entries) => {\n\t\t\t\t\t\t\t\t\t\t\tif (_.config.match === true) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst tertiaryHeight =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentry.contentRect.height\n\t\t\t\t\t\t\t\t\t\t\t\t\tpanel.style.height =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttertiaryHeight + 'px'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t_.config.myObserver.observe(tertiaryNav)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// OPEN THE DESKTOP NAV MENU FROM CLOSED STATE\n\t\t\t\t\t\t\tif (thisExpanded && !this.menuExpanded) {\n\t\t\t\t\t\t\t\tthis.openDesktopMenu(node)\n\t\t\t\t\t\t\t\tthis.openDesktopFirstSecondaryMenu(node)\n\t\t\t\t\t\t\t\t// detect outside pointer events\n\t\t\t\t\t\t\t\tactionOnClickOutside(this.mainNav, () => {\n\t\t\t\t\t\t\t\t\tthis.closeDesktopMenu({\n\t\t\t\t\t\t\t\t\t\tignoreClickListener: true\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tthis.collapsePrimary(true)\n\t\t\t\t\t\t\t\t\tthis.collapseAllSections()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// CLOSE THE DESKTOP NAV MENU\n\t\t\t\t\t\t\telse if (!thisExpanded && this.menuExpanded) {\n\t\t\t\t\t\t\t\tthis.closeDesktopMenu()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// restrict keyboard (has to be done on animation end)\n\t\t\t\t\t\t\t// and add special classes for animation\n\t\t\t\t\t\t\tthis.clearDesktopKeyHandler()\n\t\t\t\t\t\t\tconst desktopEl =\n\t\t\t\t\t\t\t\tthis.header.querySelector('.module-header-nav')\n\n\t\t\t\t\t\t\tdesktopEl.classList.add('animating-menu')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'subsection':\n\t\t\t\t\t\tif (this.mobileMenuActive && thisExpanded) {\n\t\t\t\t\t\t\tthis.prepMobileMenu(group, node)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t},\n\t\t\tfalse\n\t\t)\n\t}\n\n\tbuildAccordion(panels, triggers, wrapper, type, id, selectedIndex = false) {\n\t\tlet node\n\t\tid = '-' + id\n\t\tfor (node of panels) {\n\t\t\tnode.classList.add('js-accordion-panel' + id)\n\t\t}\n\t\tfor (node of triggers) {\n\t\t\tnode.classList.add('js-accordion-trigger' + id)\n\t\t\tthis.accordionClick(node, type)\n\t\t\t// set up for analytics\n\t\t\tlet value = node.innerText || node.textContent\n\t\t\tvalue = value.replace(/\\s+/g, ' ').trim()\n\t\t\tnode.analyticsValue = value\n\t\t}\n\t\twrapper.classList.add('js-accordion-interface' + id)\n\n\t\treturn new AccordionWidget(wrapper, {\n\t\t\tid,\n\t\t\tselectedIndex\n\t\t})\n\t}\n\n\t// build out accordion functionality on primary, sections and subsections\n\taddSubNavFunctionality() {\n\t\t// create holder object for accordions\n\t\tthis.navRef = {}\n\t\tconst nav = this.header.querySelector('nav')\n\t\tlet i, id, type, node, panels, triggers, wrappers, wrapper, selectedIndex\n\n\t\t// add accordion to first level\n\t\twrapper = nav.querySelector('.module-header-nav-primary')\n\t\ttriggers = nav.querySelectorAll(\n\t\t\t'.module-header-nav-primary > li > button'\n\t\t)\n\t\tpanels = nav.querySelectorAll('.module-header-nav__panel')\n\n\t\t// add to master array\n\t\ttype = id = 'primary'\n\n\t\tthis.navRef.primary = {}\n\n\t\tif (this.config.match) {\n\t\t\tthis.navRef.primary = {\n\t\t\t\tobj: this.buildAccordion(\n\t\t\t\t\tpanels,\n\t\t\t\t\ttriggers,\n\t\t\t\t\twrapper,\n\t\t\t\t\ttype,\n\t\t\t\t\tid,\n\t\t\t\t\tselectedIndex\n\t\t\t\t)\n\t\t\t}\n\t\t} else if (\n\t\t\t!this.config.match &&\n\t\t\tdocument\n\t\t\t\t.querySelector('.module-header-nav-primary')\n\t\t\t\t.classList.contains('is-accordion')\n\t\t) {\n\t\t\tid = '-primary'\n\n\t\t\treturn new AccordionWidget(wrapper, {\n\t\t\t\tid,\n\t\t\t\tselectedIndex\n\t\t\t}).destroy()\n\t\t}\n\n\t\tif (\n\t\t\t!document\n\t\t\t\t.querySelector('.module-header-nav-secondary')\n\t\t\t\t.classList.contains('is-accordion')\n\t\t) {\n\t\t\t// add accordions to second level\n\t\t\tconst sectionObj = {}\n\t\t\twrappers = nav.querySelectorAll(\n\t\t\t\t'.module-header-nav-primary > .module-header-nav-primary__item'\n\t\t\t)\n\n\t\t\ti = 0\n\t\t\tfor (node of wrappers) {\n\t\t\t\twrapper = node.querySelector('.module-header-nav-secondary')\n\t\t\t\ttriggers = node.querySelectorAll(\n\t\t\t\t\t'.module-header-nav-secondary > li:not([class*=\"external-link\"]) > a'\n\t\t\t\t)\n\t\t\t\tpanels = node.querySelectorAll('.module-header-nav-tertiary')\n\t\t\t\ttype = 'section'\n\t\t\t\tid = type + i\n\t\t\t\tconst section = this.buildAccordion(\n\t\t\t\t\tpanels,\n\t\t\t\t\ttriggers,\n\t\t\t\t\twrapper,\n\t\t\t\t\ttype,\n\t\t\t\t\tid\n\t\t\t\t)\n\n\t\t\t\t// now add to master section object\n\t\t\t\tsectionObj[id] = {\n\t\t\t\t\tobj: section\n\t\t\t\t}\n\t\t\t\ti++\n\t\t\t}\n\t\t\tthis.navRef.primary.sections = sectionObj\n\t\t}\n\t}\n\n\t// used to add overview links to top level sections\n\tbuildSectionElements() {\n\t\t// isolate anchor elements followed by a subnav\n\t\tconst topAnchors = this.mainNav.querySelectorAll('a + ul, a + div > ul') // a + .module-header-nav-tertiary\n\t\t// iterate through all top level anchors\n\t\tfor (const node of topAnchors) {\n\t\t\tlet parent = node.parentElement\n\t\t\tif (parent.nodeName === 'DIV') parent = parent.parentElement\n\t\t\tconst isActive = parent.classList.contains('active')\n\t\t\t// get attributes of the Primary landing page\n\t\t\tconst landing = parent.querySelector('a')\n\t\t\tconst landingHtml = landing.innerHTML\n\t\t\tconst landingHref = landing.href\n\t\t\t// get the list of sub-pages\n\t\t\tconst subPages = parent.querySelector('ul')\n\n\t\t\t// inject link to top of list\n\t\t\tconst landingOverview = document.createElement('a')\n\t\t\tlandingOverview.innerHTML =\n\t\t\t\tlandingHtml + this.config.landingPageLinkAddText\n\t\t\tlandingOverview.href = landingHref\n\t\t\tconst landingOverviewListItem = document.createElement('li')\n\t\t\tlandingOverviewListItem.classList.add('overview')\n\t\t\tif (isActive) landingOverviewListItem.classList.add('active')\n\t\t\tlandingOverviewListItem.append(landingOverview)\n\t\t\tsubPages.prepend(landingOverviewListItem)\n\n\t\t\t// now see if this an element that contains an active element\n\t\t\tif (subPages.querySelector('.active')) {\n\t\t\t\tparent.classList.add('contains-active-page')\n\t\t\t}\n\t\t}\n\t}\n\n\tstickyScroll(header, mobileSticky, desktopSticky) {\n\t\tif (window.scrollY > desktopSticky) header.classList.add('large-sticky')\n\t\telse header.classList.remove('large-sticky')\n\t\tif (window.scrollY > mobileSticky) header.classList.add('mobile-sticky')\n\t\telse header.classList.remove('mobile-sticky')\n\t}\n\n\t// sets up sticky behavior on scrolling\n\tsetStickyScrolling() {\n\t\t// first let's remove the current scroll behavior if there is one\n\t\tif (this.activeScrollRemove) this.activeScrollRemove()\n\t\t// get the header and set minimum height\n\t\tconst header = this.header\n\t\t// Mobile: get the offset position of the primary\n\t\tconst mobileSticky =\n\t\t\tthis.header.getBoundingClientRect().top + window.scrollY\n\t\t// Desktop: get the offset position of the primary\n\t\tconst desktopEl = header.querySelector('.module-header-nav')\n\t\tconst desktopSticky = desktopEl.getBoundingClientRect().top + 86\n\t\t// Add to ScrollSerive callbacks\n\t\tthis.activeScrollRemove = this.ScrollService.addCallback(() =>\n\t\t\tthis.stickyScroll(header, mobileSticky, desktopSticky)\n\t\t)\n\t}\n\n\t// adds a set height to header, needed for sticky (position: fixed)\n\tsetHeaderHeight() {\n\t\tthis.header.style.setProperty(\n\t\t\t'--height',\n\t\t\t`${this.stickyWrapper.getBoundingClientRect().height}px`\n\t\t)\n\t}\n\n\t// make header sticky\n\tmakeSticky() {\n\t\t// get the header and set minimum height\n\t\tthis.setHeaderHeight()\n\t\t// set up listener for header height\n\t\tthis.ResizeService.addCallback(this.calculateMenuHeight.bind(this))\n\t\t// set up scrolling\n\t\tthis.setStickyScrolling()\n\t}\n}\n\nexport default Header\n","import Services from 'services'\n\n/* ACCESSIBLE ACCORDION COMPONENT\n Code modified taken from here: https://codepen.io/stowball/pen/eZKwRv\n Options (add to parent element that has class \"accordion-interface\"):\n Multiselect: aria-multiselectable=\"true\"\n Always expand first item: data-firstexpanded=\"true\"\n To have selected panel(s) expanded at start use data-open-panels attribute with panel numbers separated by commas.\n Example: data-open-panels=\"1,2\"\n To keep panels always open at tablet breakpoints and above add to class list: accordion-interface__open-panels__md\n and for desktop only: accordion-interface__open-panels__lg\n*/\n\nfunction AccordionWidget(el, props = {}) {\n\tif (!el) return\n\tthis.el = el\n\tthis.services = Services.getInstance()\n\tthis.EventEmitterService = this.services.EventEmitterService\n\n\tlet triggerClass = 'js-accordion-trigger'\n\tlet panelClass = 'js-accordion-panel'\n\tif (props.id) {\n\t\ttriggerClass += props.id\n\t\tpanelClass += props.id\n\t}\n\tconst expandFirst = el.dataset.firstexpanded === 'true'\n\tthis.multiSelectable = this.el.hasAttribute('aria-multiselectable')\n\n\tlet selectedIndex\n\tif (Number.isInteger(props.selectedIndex))\n\t\tselectedIndex = props.selectedIndex\n\telse if (expandFirst) selectedIndex = 0\n\n\tthis.accordionTriggers = this.el.getElementsByClassName(triggerClass)\n\tthis.accordionPanels = this.el.getElementsByClassName(panelClass)\n\n\tthis.observer = new ResizeObserver((entries) => {\n\t\tentries.forEach((entry) => {\n\t\t\tif (!entry.borderBoxSize) return\n\t\t\tconst { blockSize: height } = entry.borderBoxSize[0]\n\t\t\tentry.target\n\t\t\t\t.closest('.js-accordion-panel')\n\t\t\t\t.style.setProperty('--height', `${height}px`)\n\t\t})\n\t})\n\n\tif (\n\t\tthis.accordionTriggers.length === 0 ||\n\t\tthis.accordionTriggers.length !== this.accordionPanels.length\n\t) {\n\t\treturn\n\t}\n\n\t// if we do not already have a selected index see if we have the open panels attribute\n\tif (selectedIndex === undefined && el.dataset.openPanels) {\n\t\tlet openPanels = el.dataset.openPanels\n\t\topenPanels = openPanels.split(',')\n\t\tconst panelArr = []\n\t\tfor (const panel of openPanels) {\n\t\t\tconst n = parseInt(panel)\n\t\t\t// quick test to make sure we have a positive value\n\t\t\tif ((n | 0) > 0 && n % 1 === 0 && n <= this.accordionTriggers.length) {\n\t\t\t\tpanelArr.push(n - 1)\n\t\t\t\t// if this is not multiselectable then stop after first validated value\n\t\t\t\tif (!this.multiSelectable) break\n\t\t\t}\n\t\t}\n\t\tif (panelArr.length) selectedIndex = panelArr\n\t}\n\n\tthis._init(selectedIndex)\n}\n\nAccordionWidget.prototype._init = function (selectedIndex) {\n\tthis.accordionTriggersLength = this.accordionTriggers.length\n\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\tthis.clickListener = this._clickEvent.bind(this)\n\tthis.keydownListener = this._keydownEvent.bind(this)\n\tthis.focusListener = this._focusEvent.bind(this)\n\tthis.keys = {\n\t\tprev: 38,\n\t\tnext: 40,\n\t\tspace: 32\n\t}\n\n\tlet initialSelectedIndex\n\n\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\tthis.accordionTriggers[i].index = i\n\t\tthis.accordionTriggers[i].addEventListener(\n\t\t\t'click',\n\t\t\tthis.clickListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].addEventListener(\n\t\t\t'keydown',\n\t\t\tthis.keydownListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].addEventListener(\n\t\t\t'focus',\n\t\t\tthis.focusListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].classList.add('is-accordion-trigger')\n\n\t\tif (this.accordionTriggers[i].classList.contains('is-selected')) {\n\t\t\tthis.expandedAccordions[i] = true\n\t\t}\n\t}\n\n\tfor (let i = 0; i < this.accordionPanels.length; i++) {\n\t\tthis.accordionPanels[i].classList.add('is-accordion-panel')\n\n\t\tif (\n\t\t\tthis.accordionPanels[i].querySelector('.accordion-panel__inner') !==\n\t\t\tnull\n\t\t) {\n\t\t\tconst el = this.accordionPanels[i].querySelector(\n\t\t\t\t'.accordion-panel__inner'\n\t\t\t)\n\t\t\tthis.observer.observe(el)\n\t\t}\n\t}\n\n\t// determine which panels need to be open\n\tif (!isNaN(selectedIndex)) {\n\t\tinitialSelectedIndex = selectedIndex\n\t\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\t\tthis.expandedAccordions[initialSelectedIndex] = true\n\t} else if (Array.isArray(selectedIndex)) {\n\t\tinitialSelectedIndex = selectedIndex\n\t\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\t\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\t\tif (selectedIndex.includes(i)) this.expandedAccordions[i] = true\n\t\t}\n\t} else {\n\t\tinitialSelectedIndex = this.expandedAccordions.lastIndexOf(true)\n\n\t\tif (!this.multiSelectable) {\n\t\t\tthis.expandedAccordions = new Array(this.accordionTriggersLength)\n\t\t\tthis.expandedAccordions[initialSelectedIndex] = true\n\t\t}\n\t}\n\n\tthis.initialSetIndex = selectedIndex\n\tthis.setSelected(initialSelectedIndex)\n\tthis.setExpanded()\n\tthis.setAPI()\n\tthis.el.classList.add('is-accordion')\n\tthis.el.classList.add('is-initialized')\n}\n\nAccordionWidget.prototype._clickEvent = function (e) {\n\te.preventDefault()\n\tthis.setSelected(e.target.index, true)\n\tthis.setExpanded(e.target.index, true)\n}\n\nAccordionWidget.prototype._keydownEvent = function (e) {\n\tlet targetIndex\n\n\tswitch (e.keyCode) {\n\t\tcase this.keys.space:\n\t\tcase this.keys.prev:\n\t\tcase this.keys.next:\n\t\t\te.preventDefault()\n\t\t\tbreak\n\t\tdefault:\n\t\t\treturn\n\t}\n\n\tif (e.keyCode === this.keys.space) {\n\t\t// this.setExpanded(e.target.index, true);\n\t\te.target.click()\n\n\t\treturn\n\t} else if (e.keyCode === this.keys.prev && e.target.index > 0) {\n\t\ttargetIndex = e.target.index - 1\n\t} else if (\n\t\te.keyCode === this.keys.next &&\n\t\te.target.index < this.accordionTriggersLength - 1\n\t) {\n\t\ttargetIndex = e.target.index + 1\n\t} else {\n\t\treturn\n\t}\n\n\tthis.setSelected(targetIndex, true)\n}\n\nAccordionWidget.prototype._focusEvent = function () {\n\tif (this.accordionTriggersLength === 1) {\n\t\tthis.setSelected(0)\n\t}\n}\n\nAccordionWidget.prototype.setSelected = function (index, userInvoked) {\n\tif (index === -1) {\n\t\tthis.accordionTriggers[0].setAttribute('tabindex', 0)\n\n\t\treturn\n\t}\n\n\tif (Array.isArray(index)) index = index[0]\n\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\tif (i === index) {\n\t\t\tthis.accordionTriggers[i].classList.add('is-selected')\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-selected', true)\n\t\t\t// this.accordionTriggers[i].setAttribute('tabindex', 0);\n\n\t\t\tif (userInvoked) {\n\t\t\t\tthis.accordionTriggers[i].focus()\n\t\t\t}\n\t\t} else {\n\t\t\tthis.accordionTriggers[i].classList.remove('is-selected')\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-selected', false)\n\n\t\t\t// this.accordionTriggers[i].setAttribute('tabindex', -1);\n\t\t}\n\t}\n}\n\nAccordionWidget.prototype.setExpanded = function (index, userInvoked) {\n\tlet i\n\n\t// special case to close all\n\tif (index === -1) this.expandedAccordions = []\n\n\tif (userInvoked) {\n\t\tif (this.multiSelectable) {\n\t\t\tthis.expandedAccordions[index] = !this.expandedAccordions[index]\n\t\t} else {\n\t\t\tfor (i = 0; i < this.accordionTriggersLength; i++) {\n\t\t\t\tif (i === index) {\n\t\t\t\t\tthis.expandedAccordions[i] = !this.expandedAccordions[i]\n\t\t\t\t} else {\n\t\t\t\t\tthis.expandedAccordions[i] = false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Emit event for the clicked accordion panel\n\t\tconst accordionTitle = this.accordionTriggers[index]?.innerText\n\t\tconst status = this.expandedAccordions[index] ? 'open' : 'close'\n\n\t\tthis.EventEmitterService.emit('accordion', {\n\t\t\taccordionElement: this.el,\n\t\t\taccordionTitle,\n\t\t\tstatus\n\t\t})\n\t}\n\n\tlet hasExpanded = false\n\tfor (i = 0; i < this.accordionTriggersLength; i++) {\n\t\tif (this.expandedAccordions[i]) {\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-expanded', true)\n\t\t\tthis.accordionTriggers[i].classList.add('is-expanded')\n\n\t\t\tthis.accordionPanels[i].setAttribute('aria-hidden', false)\n\t\t\tthis.accordionPanels[i].classList.add('is-open')\n\n\t\t\tthis.accordionTriggers[i].parentElement.classList.add('is-active')\n\t\t\t// this.accordionPanels[i].setAttribute('tabindex', 0);\n\n\t\t\thasExpanded = true\n\t\t} else {\n\t\t\tthis.accordionTriggers[i].setAttribute('aria-expanded', false)\n\t\t\tthis.accordionTriggers[i].classList.remove('is-expanded')\n\n\t\t\tthis.accordionPanels[i].setAttribute('aria-hidden', true)\n\t\t\tthis.accordionPanels[i].classList.remove('is-open')\n\n\t\t\tthis.accordionTriggers[i].parentElement.classList.remove('is-active')\n\t\t\t// this.accordionPanels[i].setAttribute('tabindex', -1);\n\t\t}\n\t}\n\n\t// add close to parent to indicate there is an open element\n\tif (hasExpanded) this.el.classList.add('has-expanded-el')\n\telse this.el.classList.remove('has-expanded-el')\n\tthis.hasExpanded = hasExpanded\n}\n\nAccordionWidget.prototype.setAPI = function () {\n\t// add API functionality here\n\tthis.close = function () {\n\t\tthis.setSelected(-1)\n\t\tthis.setExpanded(-1)\n\t}\n\t// open initial index\n\tthis.openInit = function () {\n\t\tconst index = this.initialSetIndex\n\t\tif (Number.isInteger(index)) {\n\t\t\tthis.setSelected(index, true)\n\t\t\tthis.setExpanded(index, true)\n\t\t}\n\t}\n}\n\nAccordionWidget.prototype.destroy = function () {\n\tthis.el.classList.remove('is-initialized')\n\n\tfor (let i = 0; i < this.accordionTriggersLength; i++) {\n\t\tthis.accordionTriggers[i].removeAttribute('aria-expanded')\n\t\tthis.accordionTriggers[i].removeAttribute('aria-selected')\n\t\tthis.accordionTriggers[i].classList.remove('is-expanded')\n\n\t\tthis.accordionPanels[i].removeAttribute('aria-hidden')\n\t\tthis.accordionPanels[i].classList.remove('is-open')\n\t\tthis.accordionPanels[i].removeAttribute('tabindex')\n\n\t\tthis.accordionTriggers[i].removeEventListener(\n\t\t\t'click',\n\t\t\tthis.clickListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].removeEventListener(\n\t\t\t'keydown',\n\t\t\tthis.keydownListener,\n\t\t\tfalse\n\t\t)\n\t\tthis.accordionTriggers[i].removeEventListener(\n\t\t\t'focus',\n\t\t\tthis.focusListener,\n\t\t\tfalse\n\t\t)\n\n\t\tif (\n\t\t\tthis.accordionPanels[i].querySelector('.accordion-panel__inner') !==\n\t\t\tnull\n\t\t) {\n\t\t\tconst el = this.accordionPanels[i].querySelector(\n\t\t\t\t'.accordion-panel__inner'\n\t\t\t)\n\t\t\tthis.observer.unobserve(el)\n\t\t}\n\n\t\tdelete this.accordionTriggers[i].index\n\t}\n}\n\nexport { AccordionWidget }\n","/**\n * @method stringReplace\n * @memberof replace\n * @description Replace string with replacements using regex to match. String.prototype.replace\n * accepts a recursive function as second parameter. In this case, the replacer function performs\n * an Array.prototype.shift on the replacements that are passed in.\n * @param {String} str - Input string to perform replace operation on\n * @param {RegExp} regex - Regex to use for search\n * @param {Array} replacements - Array of values that will be used to replace, for each instance\n * of regex match found\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter\n * @return {string} A string with replaced values\n * @example stringReplace('Directions to {0}, {1}, {2}', /\\{\\d\\}/ig, ['123 Main St', 'New York, NY', '10001'])\n */\nexport function stringReplace(str, regex, replacements) {\n\tif (typeof str !== 'string') {\n\t\tthrow TypeError('Input is not of type string')\n\t}\n\tif (str.match(regex) && replacements.length !== str.match(regex).length) {\n\t\tthrow Error('Not enough replacement values')\n\t}\n\n\tconst replacerFn = () => replacements.shift()\n\treturn str.replace(regex, replacerFn)\n}\n\n/**\n * Replace tokens in a string with the given replacements.\n * Tokens are in the format of {0}, {1}, etc.\n * - If replacements is an array, the tokens will be replaced in order\n * - If replacements is an object, the tokens will be replaced by key\n * - If replacements is not an array or object, the string will be returned as is\n * @param {String} str The string to replace tokens in\n * @param {Object|Array} replacements The replacements to use\n * @returns\n */\nexport function tokenReplace(str, replacements) {\n\tif (Array.isArray(replacements)) {\n\t\treturn replacements.reduce(\n\t\t\t(prev, replacement, index) =>\n\t\t\t\tstringReplace(prev, new RegExp(`\\\\{${index}\\\\}`, 'g'), [\n\t\t\t\t\treplacement\n\t\t\t\t]),\n\t\t\tstr\n\t\t)\n\t} else if (typeof replacements === 'object') {\n\t\treturn Object.keys(replacements).reduce(\n\t\t\t(prev, replacementKey) =>\n\t\t\t\tstringReplace(prev, new RegExp(`\\\\{${replacementKey}\\\\}`, 'g'), [\n\t\t\t\t\treplacements[replacementKey]\n\t\t\t\t]),\n\t\t\tstr\n\t\t)\n\t}\n\n\treturn str\n}\n"],"names":["SiteSearch","static","FORM_DESKTOP","INPUT_DESKTOP","FORM_MOBILE_CONTAINER","FORM_MOBILE","INPUT_MOBILE","MOBILE_FORM_ERROR","FORM_ERROR","INPUT_ERROR","INPUT_CONTAINER_DESKTOP","INPUT_CONTAINER_MOBILE","DESKTOP_SEARCH","MOBILE_SEARCH","constructor","element","_ref","headerElement","onOpenSearch","this","analyticsService","Analytics","getInstance","header","init","cacheDom","attachEvents","setupSearch","desktopForm","querySelector","SELECTORS","inputDesktop","mobileFormContainer","mobileForm","inputMobile","clearButton","CLEAR_BUTTON","addEventListener","addValidation","addMobileError","clearMobileError","detachEvents","removeEventListener","destroy","pristine","openSearch","search","triggerEnv","document","body","classList","add","requestAnimationFrame","setTimeout","inputEl","getElementById","focus","actionOnClickOutside","obj","closeSearch","ignoreClickListener","setAttribute","trigger","limitKeyboardAccessibility","ignoreKeyboardHandler","disableKeyHandler","active","params","top","style","minHeight","remove","clearListener","input","value","blur","clearKeyHandler","clearErrors","suggestionsTitle","e","stopPropagation","event","preventDefault","form","target","targetForm","dataset","breakpoint","config","live","classTo","CLASSES","errorTextParent","errorClass","errorTextClass","errorTextTag","Pristine","validate","trackInteraction","submit","reset","searchTerm","search_term","decodeHtml","htmlString","DOMParser","parseFromString","documentElement","textContent","DoorCard","title","excerpt","imageUrl","url","imageAlt","eyebrows","React","createElement","href","className","src","alt","DocumentCard","_ref2","rel","ArticleCard","_ref3","category","GeneralCard","_ref4","SearchAsYouType","apiEndpoint","query","setQuery","useState","debouncedQuery","debouncedValue","setDebouncedValue","useEffect","handler","clearTimeout","useDebounce","sections","setSections","isLoading","setIsLoading","error","setError","async","resp","fetch","encodeURIComponent","ok","Error","status","statusText","data","json","Array","isArray","map","section","__uuid","crypto","randomUUID","err","console","message","fetchResults","action","method","htmlFor","id","type","name","placeholder","onChange","background","speed","loop","autoplay","color","length","sectionIndex","caption","results","items","viewAllText","allResultsUrl","noResultsFound","key","item","idx","renderItem","itemIndex","searchResultType","propTypes","PropTypes","isRequired","Header","COMPONENT","STICKY_WRAPPER","SITE_SEARCH","FAVORITES","FAVORITES_LABEL","FAVORITES_ICON","HIDDEN","ACTIVE","SAVE_FAVORITE","REMOVE_FAVORITE","setupFullWidthSections","setupAlertBannerObservation","services","Services","match","myObserver","ScrollService","ResizeService","EventEmitterService","mqContext","createSiteSearch","updateFavorites","makeSticky","toggle","mainNav","alertBanners","querySelectorAll","menuContainer","tertiaryNavs","stickyWrapper","mobileActiveClass","mobileScrollEl","siteSearchEl","favoritesCountEl","favoritesCountLabel","favoritesIcon","saytContainer","mobilePlaceholder","overlayContainer","searchTrigger","ReactDOM","render","el","width","appendChild","constrainedWidth","getBoundingClientRect","fullWidth","scrollbarWidth","Math","ceil","setProperty","removeChild","observer","MutationObserver","mutationsList","mutation","attributeName","contains","calculateMenuHeight","observe","attributes","childList","subtree","toggleState","on","EVENTS","window","closeoutNav","removeEvents","off","disconnect","_","mediaQuery","matchMedia","moveSayt","container","mediaQueryChange","mq","matches","addSubNavFunctionality","cleanupObserver","obs","forEach","panel","height","closeSearchOverlay","oc","siteSearch","collapsePrimary","bind","innerText","label","favorites","localStorage","getItem","JSON","parse","tokenReplace","favoritesCount","openInit","navRef","primary","close","collapseAllSections","collapseExpandedSubsections","collapseExpandedSections","node","hasExpanded","subsections","subnode","subsection","clearDesktopKeyHandler","openDesktopMenu","menuExpanded","removeDesktopMenuResizeAction","addCallback","isWidthChanged","openDesktopFirstSecondaryMenu","parentElement","click","closeDesktopMenu","totalHeight","banner","offsetHeight","nav","removeAttribute","setHeaderHeight","mobileMenuInit","levelArr","mobileMenu","panels","activeAccordionTriggers","levelHeights","level","backBtn","innerHTML","mobileMenuBack","append","mobileMenuInitialized","openMobileMenu","menulevel","scrollTop","mobileMenuActive","closeMobileMenu","removeMobileMenuResizeAction","enableBodyScroll","removeProperty","group","animateMobileMenu","resetMenu","isBack","resetSize","subPages","prepMobileMenu","parent","prepend","tertiaryNav","elem","parentNode","accordionClick","thisExpanded","secondaryActiveEl","variant","closest","ResizeObserver","entries","entry","tertiaryHeight","contentRect","buildAccordion","triggers","wrapper","selectedIndex","arguments","undefined","replace","trim","analyticsValue","AccordionWidget","i","wrappers","sectionObj","buildSectionElements","topAnchors","nodeName","isActive","landing","landingHtml","landingHref","landingOverview","landingPageLinkAddText","landingOverviewListItem","stickyScroll","mobileSticky","desktopSticky","scrollY","setStickyScrolling","activeScrollRemove","props","triggerClass","panelClass","expandFirst","firstexpanded","multiSelectable","hasAttribute","Number","isInteger","accordionTriggers","getElementsByClassName","accordionPanels","borderBoxSize","blockSize","openPanels","split","panelArr","n","parseInt","push","_init","prototype","initialSelectedIndex","accordionTriggersLength","expandedAccordions","clickListener","_clickEvent","keydownListener","_keydownEvent","focusListener","_focusEvent","keys","prev","next","space","index","isNaN","includes","lastIndexOf","initialSetIndex","setSelected","setExpanded","setAPI","targetIndex","keyCode","userInvoked","accordionTitle","emit","accordionElement","unobserve","stringReplace","str","regex","replacements","TypeError","replacerFn","shift","reduce","replacement","RegExp","Object","replacementKey"],"sourceRoot":""}