{"version":3,"file":"js/chunk-vendors.82c726ce.js","mappings":"qvBAAA,EAAQ,M,imCCAR,EAAQ,M,sDCAR,EAAQ,M,uDCAR,EAAQ,M,uDCAR,EAAQ,M,yECAR,EAAQ,M,iICAR,EAAQ,M,sDCAR,EAAQ,M,wDCAR,EAAQ,M,yDCAR,EAAQ,M,wDCAR,EAAQ,M,2DCAR,EAAQ,K,2CCARA,EAAOC,QAAU,SAAUC,G,qGCAvBC,EAAW,EAAQ,K,uGCAnBC,EAAOJ,EAAOC,QAAU,CAAEI,QAAS,U,+dCAnCF,EAAW,EAAQ,K,8HCAnBG,EAAS,EAAQ,M,6tBCArBN,EAAOC,QAAU,SAAUM,G,wPCAvBC,EAAiB,CAAC,EAAEA,e,sECApBC,EAAK,EAAQ,M,0HCAjBT,EAAOC,SAAW,EAAQ,QAAsB,EAAQ,KAAR,EAAoB,W,qGCApED,EAAOC,QAAU,SAAUC,G,oFCAvBQ,EAAW,EAAQ,M,+QCAvBV,EAAOC,QAAU,SAAUU,EAAQC,G,qeCAnCZ,EAAOC,QAAU,SAAUC,G,qGCAvBW,EAAM,EAAQ,M,iVCAlBb,EAAOC,QAAU,SAAUC,EAAIY,EAAaC,EAAMC,G,0HCA9Cb,EAAW,EAAQ,M,o1CCAnBc,EAAY,EAAQ,M,qUCApBd,EAAW,EAAQ,M,ikCCAnBe,EAAW,CAAC,EAAEA,S,qiHCAdd,EAAOJ,EAAOC,QAAU,CAAEI,QAAS,U,k8CCAnCF,EAAW,EAAQ,M,wbCAnBG,EAAS,EAAQ,K,2dCAjBa,EAAQ,EAAQ,KAAR,CAAkB,S,gICA9BnB,EAAOC,QAAU,SAAUM,G,wkDCAvBa,EAAM,EAAQ,M,sbCAlBpB,EAAOC,QAAU,EAAQ,KAAR,CAAqB,4BAA6BoB,SAASH,S,oNCAxEV,EAAiB,CAAC,EAAEA,e,sECApBC,EAAK,EAAQ,M,4HCAba,EAAW,gB,oDCAftB,EAAOC,SAAW,EAAQ,OAAsB,EAAQ,KAAR,EAAoB,W,8GCAhEE,EAAW,EAAQ,M,s+BCAvBH,EAAOC,QAAU,SAAUC,G,29CCAvBqB,EAAW,EAAQ,KAAR,CAAkB,Y,wRCAjCvB,EAAOC,QAAU,SAAUuB,EAAMZ,G,4CCAjCZ,EAAOC,QAAU,CAAC,C,mBCAlBD,EAAOC,SAAU,C,iqBCAbwB,EAAO,EAAQ,IAAR,CAAkB,Q,ojBCAzBnB,EAAS,EAAQ,K,u3DCAjBI,EAAW,EAAQ,M,sRCAnBD,EAAK,EAAQ,M,8KCAbiB,EAAM,EAAQ,M,woBCAlBzB,EAAQ0B,EAAIC,OAAOC,qB,0SCAfC,EAAM,EAAQ,M,iTCAlB7B,EAAQ0B,EAAI,CAAC,EAAEI,oB,0MCAXC,EAAc,EAAQ,K,6WCAtBC,EAAc,kB,2JCAdC,EAAY,gB,gLCAhBlC,EAAOC,QAAU,SAAUM,G,6ECAvBG,EAAW,EAAQ,M,oJCAvBV,EAAOC,QAAU,SAAUU,EAAQC,G,gGCA/BuB,EAAW,EAAQ,M,2FCAnB7B,EAAS,EAAQ,K,u/DCAjB8B,EAAM,U,qJCANC,EAAS,EAAQ,KAAR,CAAqB,Q,mFCA9BjC,EAAO,EAAQ,M,2iBCAfkC,EAAY,EAAQ,M,mcCApBC,EAAU,EAAQ,M,syBCAlBA,EAAU,EAAQ,M,0VCAtBvC,EAAOC,QAAU,gD,iCCAbmB,EAAM,EAAQ,M,+6BCAdkB,EAAY,EAAQ,M,6nVCApBhC,EAAS,EAAQ,K,mWCAjBkC,EAAK,E,mICALlC,EAAS,EAAQ,K,qECAjBH,EAAW,EAAQ,M,yICAnBG,EAAS,EAAQ,K,oLCArBL,EAAQ0B,EAAI,EAAZ,K,2BCAIc,EAAQ,EAAQ,KAAR,CAAqB,O,+JCA7BC,EAAU,EAAQ,M,wzICAtB,EAAQ,KAAR,CAA0B,Q,2hBCAtBC,EAAe,EAAQ,KAAR,CAAkB,e,wECAjCC,EAAYC,KAAKC,U,sgBCAjBrC,EAAK,U,qiJCAL8B,EAAU,EAAQ,M,8FCAlBA,EAAU,EAAQ,M,wtDCAlBA,EAAU,EAAQ,M,2DCAlBA,EAAU,EAAQ,M,gFCAlBA,EAAU,EAAQ,M,ykDCAlBA,EAAU,EAAQ,M,8ECAlBA,EAAU,EAAQ,M,u8MCAlBjC,EAAS,EAAQ,K,m9MCAjBiC,EAAU,EAAQ,M,s9BCAlBA,EAAU,EAAQ,M,+NCAlBA,EAAU,EAAQ,M,0uJCAlBA,EAAU,EAAQ,M,8ECAtB,EAAQ,KAAR,CAA0B,UAAW,GAAG,SAAUQ,G,sECAlD,EAAQ,KAAR,CAA0B,UAAW,GAAG,SAAUA,G,qECAlD,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAUA,G,sECAhD,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAUA,G,qECAhD,EAAQ,KAAR,CAA0B,OAAQ,GAAG,SAAUA,G,sECA/C,EAAQ,KAAR,CAA0B,SAAU,GAAG,SAAUA,G,sECAjD,EAAQ,KAAR,CAA0B,SAAU,GAAG,SAAUA,G,sECAjD,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAUA,G,sECAhD,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAUA,G,ywFCAhD,EAAQ,KAAR,CAAyB,gB,8BCArBC,EAAa,EAAQ,M,+yBCArBT,EAAU,EAAQ,M,gaCAtB,EAAQ,M,qGCAR,SAASU,EAAkBC,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,IAAIE,EAAaH,EAAMC,GAAIE,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAM7B,OAAO8B,eAAeR,EAAQI,EAAWK,IAAKL,EAAa,CAAE,C;;;;;;;;;;;;;;;;;;iuNCA5T,SAASM,EAAuBC,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,CAAM,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;imJCA9J,SAASE,I,8MCAT,MAAMC,EAAa,wB,wBCA1B,IAAIC,E;;;;;knuBCAJ,MAAMC,GAAkC,qBAAXC,QAA8C,qBAAb7C,S,itkBCAvD,MAAM8C,GAAU,Q,83ICAvB,MAAMC,GAAiB,C,u1nFCAvB,SAASC,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAO1B,UAAY,gBAAkByB,CAAK,EAAGD,EAAQC,EAAM,C,4vFCA3UI,EAAoB,CAAC,EAAED,Y,6DCA3B,SAAS,EAAQH,GAAkC,OAAO,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAO1B,UAAY,gBAAkByB,CAAK,EAAG,EAAQA,EAAM,C,87SCA/U,SAAS,GAAgCK,EAAGC,GAAkB,IAAI3E,EAAuB,qBAAXsE,QAA0BI,EAAEJ,OAAOC,WAAaG,EAAE,cAAe,GAAI1E,EAAI,OAAQA,EAAKA,EAAG4E,KAAKF,IAAIG,KAAKC,KAAK9E,GAAK,GAAI+E,MAAMC,QAAQN,KAAO1E,EAAK,GAA4B0E,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEvB,OAAqB,CAAMnD,IAAI0E,EAAI1E,GAAI,IAAIkD,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAKwB,EAAEvB,OAAe,CAAE7B,MAAM,GAAe,CAAEA,MAAM,EAAOZ,MAAOgE,EAAExB,KAAQ,CAAG,CAAE,MAAM,IAAI+B,UAAU,wIAA0I,C,skBCA3lB,SAAS,GAAgCP,EAAGC,GAAkB,IAAI3E,EAAuB,qBAAXsE,QAA0BI,EAAEJ,OAAOC,WAAaG,EAAE,cAAe,GAAI1E,EAAI,OAAQA,EAAKA,EAAG4E,KAAKF,IAAIG,KAAKC,KAAK9E,GAAK,GAAI+E,MAAMC,QAAQN,KAAO1E,EAAK,GAA4B0E,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEvB,OAAqB,CAAMnD,IAAI0E,EAAI1E,GAAI,IAAIkD,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAKwB,EAAEvB,OAAe,CAAE7B,MAAM,GAAe,CAAEA,MAAM,EAAOZ,MAAOgE,EAAExB,KAAQ,CAAG,CAAE,MAAM,IAAI+B,UAAU,wIAA0I,C,s0DCA3lB,SAAS,GAAgCP,EAAGC,GAAkB,IAAI3E,EAAuB,qBAAXsE,QAA0BI,EAAEJ,OAAOC,WAAaG,EAAE,cAAe,GAAI1E,EAAI,OAAQA,EAAKA,EAAG4E,KAAKF,IAAIG,KAAKC,KAAK9E,GAAK,GAAI+E,MAAMC,QAAQN,KAAO1E,EAAK,GAA4B0E,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEvB,OAAqB,CAAMnD,IAAI0E,EAAI1E,GAAI,IAAIkD,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAKwB,EAAEvB,OAAe,CAAE7B,MAAM,GAAe,CAAEA,MAAM,EAAOZ,MAAOgE,EAAExB,KAAQ,CAAG,CAAE,MAAM,IAAI+B,UAAU,wIAA0I,C,ozECA3lB,SAAS,GAAgCP,EAAGC,GAAkB,IAAI3E,EAAuB,qBAAXsE,QAA0BI,EAAEJ,OAAOC,WAAaG,EAAE,cAAe,GAAI1E,EAAI,OAAQA,EAAKA,EAAG4E,KAAKF,IAAIG,KAAKC,KAAK9E,GAAK,GAAI+E,MAAMC,QAAQN,KAAO1E,EAAK,GAA4B0E,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEvB,OAAqB,CAAMnD,IAAI0E,EAAI1E,GAAI,IAAIkD,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAKwB,EAAEvB,OAAe,CAAE7B,MAAM,GAAe,CAAEA,MAAM,EAAOZ,MAAOgE,EAAExB,KAAQ,CAAG,CAAE,MAAM,IAAI+B,UAAU,wIAA0I,C,oxFCA3lB,SAAS,GAAQC,EAAQC,GAAkB,IAAIC,EAAO1D,OAAO0D,KAAKF,GAAS,GAAIxD,OAAOC,sBAAuB,CAAE,IAAI0D,EAAU3D,OAAOC,sBAAsBuD,GAASC,IAAmBE,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO7D,OAAO8D,yBAAyBN,EAAQK,GAAKlC,UAAY,KAAK+B,EAAKK,KAAKC,MAAMN,EAAMC,EAAU,CAAE,OAAOD,CAAM,C,ghJCApV,SAAS,GAAgCV,EAAGC,GAAkB,IAAI3E,EAAuB,qBAAXsE,QAA0BI,EAAEJ,OAAOC,WAAaG,EAAE,cAAe,GAAI1E,EAAI,OAAQA,EAAKA,EAAG4E,KAAKF,IAAIG,KAAKC,KAAK9E,GAAK,GAAI+E,MAAMC,QAAQN,KAAO1E,EAAK,GAA4B0E,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEvB,OAAqB,CAAMnD,IAAI0E,EAAI1E,GAAI,IAAIkD,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAKwB,EAAEvB,OAAe,CAAE7B,MAAM,GAAe,CAAEA,MAAM,EAAOZ,MAAOgE,EAAExB,KAAQ,CAAG,CAAE,MAAM,IAAI+B,UAAU,wIAA0I,C,yzHCA3lB,SAAS,GAAQC,EAAQC,GAAkB,IAAIC,EAAO1D,OAAO0D,KAAKF,GAAS,GAAIxD,OAAOC,sBAAuB,CAAE,IAAI0D,EAAU3D,OAAOC,sBAAsBuD,GAASC,IAAmBE,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO7D,OAAO8D,yBAAyBN,EAAQK,GAAKlC,UAAY,KAAK+B,EAAKK,KAAKC,MAAMN,EAAMC,EAAU,CAAE,OAAOD,CAAM,C,whBCApV,SAAS,GAAQF,EAAQC,GAAkB,IAAIC,EAAO1D,OAAO0D,KAAKF,GAAS,GAAIxD,OAAOC,sBAAuB,CAAE,IAAI0D,EAAU3D,OAAOC,sBAAsBuD,GAASC,IAAmBE,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO7D,OAAO8D,yBAAyBN,EAAQK,GAAKlC,UAAY,KAAK+B,EAAKK,KAAKC,MAAMN,EAAMC,EAAU,CAAE,OAAOD,CAAM,C,6xTCArU,WAASO,GAAG,MAAM,CAACC,IAAID,EAAEA,GAAG,IAAIE,IAAIC,GAAG,SAASC,EAAEC,GAAG,IAAI9C,EAAEyC,EAAEM,IAAIF,GAAG7C,EAAEA,EAAEuC,KAAKO,GAAGL,EAAEO,IAAIH,EAAE,CAACC,GAAG,EAAEG,IAAI,SAASJ,EAAEC,GAAG,IAAI9C,EAAEyC,EAAEM,IAAIF,GAAG7C,IAAI8C,EAAE9C,EAAEkD,OAAOlD,EAAEmD,QAAQL,KAAK,EAAE,GAAGL,EAAEO,IAAIH,EAAE,IAAI,EAAEO,KAAK,SAASP,EAAEC,GAAG,IAAI9C,EAAEyC,EAAEM,IAAIF,GAAG7C,GAAGA,EAAEqD,QAAQC,KAAI,SAASb,GAAGA,EAAEK,EAAE,KAAI9C,EAAEyC,EAAEM,IAAI,OAAO/C,EAAEqD,QAAQC,KAAI,SAASb,GAAGA,EAAEI,EAAEC,EAAE,GAAE,EAAE,C,mECYzT,SAAS/F,EAASoE,GAChB,OAAe,OAARA,GAA+B,kBAARA,GAAoB,gBAAiBA,GAAOA,EAAIG,cAAgB9C,MAChG,CACA,SAAS+E,EAAOzD,EAAQ0D,QACP,IAAX1D,IACFA,EAAS,CAAC,QAEA,IAAR0D,IACFA,EAAM,CAAC,GAET,MAAMC,EAAW,CAAC,YAAa,cAAe,aAC9CjF,OAAO0D,KAAKsB,GAAKpB,QAAO7B,GAAOkD,EAASN,QAAQ5C,GAAO,IAAGmD,SAAQnD,IACrC,qBAAhBT,EAAOS,GAAsBT,EAAOS,GAAOiD,EAAIjD,GAAcxD,EAASyG,EAAIjD,KAASxD,EAAS+C,EAAOS,KAAS/B,OAAO0D,KAAKsB,EAAIjD,IAAMN,OAAS,GACpJsD,EAAOzD,EAAOS,GAAMiD,EAAIjD,GAC1B,GAEJ,C,kCACA,MAAMoD,EAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZ,aAAAC,GACE,OAAO,IACT,EACA,gBAAAC,GACE,MAAO,EACT,EACA,cAAAC,GACE,OAAO,IACT,EACA,WAAAC,GACE,MAAO,CACL,SAAAC,GAAa,EAEjB,EACA,aAAAC,GACE,MAAO,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChB,oBAAAC,GACE,MAAO,EACT,EAEJ,EACA,eAAAC,GACE,MAAO,CAAC,CACV,EACA,UAAAC,GACE,OAAO,IACT,EACAC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,IACP,MAAMC,EAA0B,qBAAbvH,SAA2BA,SAAW,CAAC,EAE1D,OADAqF,EAAOkC,EAAK9B,GACL8B,CACT,CACA,MAAMC,EAAY,CAChBxH,SAAUyF,EACVgC,UAAW,CACTC,UAAW,IAEbb,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVM,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAtC,GAAoB,EACpB,mBAAAC,GAAuB,EACvB,gBAAAsC,GACE,MAAO,CACL,gBAAAC,GACE,MAAO,EACT,EAEJ,EACA,KAAAC,GAAS,EACT,IAAA7G,GAAQ,EACR8G,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChB,UAAAC,GACE,MAAO,CAAC,CACV,EACA,qBAAAC,CAAsBC,GACpB,MAA0B,qBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,EAC9B,EACA,oBAAAC,CAAqBzH,GACO,qBAAfoH,YAGXC,aAAarH,EACf,GAEF,SAAS0H,IACP,MAAMC,EAAwB,qBAAXhG,OAAyBA,OAAS,CAAC,EAEtD,OADAwC,EAAOwD,EAAKrB,GACLqB,CACT,CC7IA,SAASC,EAAgBC,GAIvB,YAHgB,IAAZA,IACFA,EAAU,IAELA,EAAQC,OAAOC,MAAM,KAAK/E,QAAOgF,KAAOA,EAAEF,QACnD,CAEA,SAASG,EAAYlG,GACnB,MAAMa,EAASb,EACf3C,OAAO0D,KAAKF,GAAQ0B,SAAQnD,IAC1B,IACEyB,EAAOzB,GAAO,IAChB,CAAE,MAAOuC,GAET,CACA,WACSd,EAAOzB,EAChB,CAAE,MAAOuC,GAET,IAEJ,CACA,SAASwE,EAASV,EAAUW,GAI1B,YAHc,IAAVA,IACFA,EAAQ,GAEHf,WAAWI,EAAUW,EAC9B,CACA,SAASC,IACP,OAAO/H,KAAK+H,KACd,CACA,SAAS,EAAiBC,GACxB,MAAM1G,EAAS+F,IACf,IAAIpC,EAUJ,OATI3D,EAAOqF,mBACT1B,EAAQ3D,EAAOqF,iBAAiBqB,EAAI,QAEjC/C,GAAS+C,EAAGC,eACfhD,EAAQ+C,EAAGC,cAERhD,IACHA,EAAQ+C,EAAG/C,OAENA,CACT,CACA,SAASiD,EAAaF,EAAIG,QACX,IAATA,IACFA,EAAO,KAET,MAAM7G,EAAS+F,IACf,IAAIe,EACAC,EACAC,EACJ,MAAMC,EAAW,EAAiBP,GA6BlC,OA5BI1G,EAAOkH,iBACTH,EAAeE,EAASE,WAAaF,EAASG,gBAC1CL,EAAaX,MAAM,KAAKlH,OAAS,IACnC6H,EAAeA,EAAaX,MAAM,MAAM7D,KAAI8E,GAAKA,EAAEC,QAAQ,IAAK,OAAMC,KAAK,OAI7EP,EAAkB,IAAIhH,EAAOkH,gBAAiC,SAAjBH,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASO,cAAgBP,EAASQ,YAAcR,EAASS,aAAeT,EAASU,aAAeV,EAASE,WAAaF,EAAS3B,iBAAiB,aAAagC,QAAQ,aAAc,sBACrMR,EAASE,EAAgBjK,WAAWqJ,MAAM,MAE/B,MAATS,IAE0BE,EAAxB/G,EAAOkH,gBAAgCF,EAAgBY,IAEhC,KAAlBd,EAAO5H,OAA8B2I,WAAWf,EAAO,KAE5Ce,WAAWf,EAAO,KAE3B,MAATD,IAE0BE,EAAxB/G,EAAOkH,gBAAgCF,EAAgBc,IAEhC,KAAlBhB,EAAO5H,OAA8B2I,WAAWf,EAAO,KAE5Ce,WAAWf,EAAO,KAEjCC,GAAgB,CACzB,CACA,SAAS,EAAStG,GAChB,MAAoB,kBAANA,GAAwB,OAANA,GAAcA,EAAEF,aAAkE,WAAnD9C,OAAOkB,UAAU5B,SAAS4D,KAAKF,GAAG6B,MAAM,GAAI,EAC7G,CACA,SAASyF,EAAOC,GAEd,MAAsB,qBAAXhI,QAAwD,qBAAvBA,OAAOiI,YAC1CD,aAAgBC,YAElBD,IAA2B,IAAlBA,EAAKE,UAAoC,KAAlBF,EAAKE,SAC9C,CACA,SAAS,IACP,MAAMC,EAAK1K,OAAO2K,UAAUlJ,QAAU,OAAImJ,EAAYD,UAAU,IAC1D1F,EAAW,CAAC,YAAa,cAAe,aAC9C,IAAK,IAAIzD,EAAI,EAAGA,EAAImJ,UAAUlJ,OAAQD,GAAK,EAAG,CAC5C,MAAMqJ,EAAarJ,EAAI,GAAKmJ,UAAUlJ,QAAUD,OAAIoJ,EAAYD,UAAUnJ,GAC1E,QAAmBoJ,IAAfC,GAA2C,OAAfA,IAAwBP,EAAOO,GAAa,CAC1E,MAAMC,EAAY9K,OAAO0D,KAAK1D,OAAO6K,IAAajH,QAAO7B,GAAOkD,EAASN,QAAQ5C,GAAO,IACxF,IAAK,IAAIgJ,EAAY,EAAGC,EAAMF,EAAUrJ,OAAQsJ,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOlL,OAAO8D,yBAAyB+G,EAAYI,QAC5CL,IAATM,GAAsBA,EAAKvJ,aACzB,EAAS+I,EAAGO,KAAa,EAASJ,EAAWI,IAC3CJ,EAAWI,GAASE,WACtBT,EAAGO,GAAWJ,EAAWI,GAEzB,EAAOP,EAAGO,GAAUJ,EAAWI,KAEvB,EAASP,EAAGO,KAAa,EAASJ,EAAWI,KACvDP,EAAGO,GAAW,CAAC,EACXJ,EAAWI,GAASE,WACtBT,EAAGO,GAAWJ,EAAWI,GAEzB,EAAOP,EAAGO,GAAUJ,EAAWI,KAGjCP,EAAGO,GAAWJ,EAAWI,GAG/B,CACF,CACF,CACA,OAAOP,CACT,CACA,SAASU,EAAenC,EAAIoC,EAASC,GACnCrC,EAAG/C,MAAMqF,YAAYF,EAASC,EAChC,CACA,SAASE,EAAqBC,GAC5B,IAAI,OACFC,EAAM,eACNC,EAAc,KACdC,GACEH,EACJ,MAAMlJ,EAAS+F,IACTuD,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAMC,EAAWP,EAAOQ,OAAOC,MAC/BT,EAAOU,UAAUlG,MAAMmG,eAAiB,OACxC9J,EAAO8F,qBAAqBqD,EAAOY,gBACnC,MAAMC,EAAMZ,EAAiBE,EAAgB,OAAS,OAChDW,EAAe,CAACC,EAASnL,IACd,SAARiL,GAAkBE,GAAWnL,GAAkB,SAARiL,GAAkBE,GAAWnL,EAEvEoL,EAAU,KACdX,GAAO,IAAI9K,MAAO0L,UACA,OAAdX,IACFA,EAAYD,GAEd,MAAMa,EAAWC,KAAKC,IAAID,KAAKE,KAAKhB,EAAOC,GAAaC,EAAU,GAAI,GAChEe,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBtB,EAAgBmB,GAAgBrB,EAAiBE,GAOvE,GANIW,EAAaW,EAAiBxB,KAChCwB,EAAkBxB,GAEpBD,EAAOU,UAAUgB,SAAS,CACxB,CAACxB,GAAOuB,IAENX,EAAaW,EAAiBxB,GAUhC,OATAD,EAAOU,UAAUlG,MAAMmH,SAAW,SAClC3B,EAAOU,UAAUlG,MAAMmG,eAAiB,GACxCrE,YAAW,KACT0D,EAAOU,UAAUlG,MAAMmH,SAAW,GAClC3B,EAAOU,UAAUgB,SAAS,CACxB,CAACxB,GAAOuB,GACR,SAEJ5K,EAAO8F,qBAAqBqD,EAAOY,gBAGrCZ,EAAOY,eAAiB/J,EAAO4F,sBAAsBuE,EAAQ,EAE/DA,GACF,CACA,SAASY,EAAoBC,GAC3B,OAAOA,EAAQ7H,cAAc,4BAA8B6H,EAAQC,YAAcD,EAAQC,WAAW9H,cAAc,4BAA8B6H,CAClJ,CACA,SAASE,EAAgBC,EAASC,QACf,IAAbA,IACFA,EAAW,IAEb,MAAMpL,EAAS+F,IACTtC,EAAW,IAAI0H,EAAQ1H,UAI7B,OAHIzD,EAAOqL,iBAAmBF,aAAmBE,iBAC/C5H,EAASjC,QAAQ2J,EAAQG,oBAEtBF,EAGE3H,EAASpC,QAAOqF,GAAMA,EAAG6E,QAAQH,KAF/B3H,CAGX,CACA,SAAS+H,EAAqB9E,EAAI+E,GAEhC,MAAMC,EAAgB,CAACD,GACvB,MAAOC,EAAcxM,OAAS,EAAG,CAC/B,MAAMyM,EAAiBD,EAAcE,QACrC,GAAIlF,IAAOiF,EACT,OAAO,EAETD,EAAclK,QAAQmK,EAAelI,YAAckI,EAAeV,WAAaU,EAAeV,WAAWxH,SAAW,MAASkI,EAAeL,iBAAmBK,EAAeL,mBAAqB,GACrM,CACF,CACA,SAASO,EAAiBnF,EAAIoF,GAC5B,MAAM9L,EAAS+F,IACf,IAAIgG,EAAUD,EAAOE,SAAStF,GAC9B,IAAKqF,GAAW/L,EAAOqL,iBAAmBS,aAAkBT,gBAAiB,CAC3E,MAAM5H,EAAW,IAAIqI,EAAOR,oBAC5BS,EAAUtI,EAASwI,SAASvF,GACvBqF,IACHA,EAAUP,EAAqB9E,EAAIoF,GAEvC,CACA,OAAOC,CACT,CACA,SAASG,EAAYC,GACnB,IAEE,YADAC,QAAQC,KAAKF,EAEf,CAAE,MAAOG,GAET,CACF,CACA,SAAS9I,EAAc+I,EAAKrG,QACV,IAAZA,IACFA,EAAU,IAEZ,MAAMQ,EAAKvJ,SAASqG,cAAc+I,GAElC,OADA7F,EAAG8F,UAAUC,OAAQ3L,MAAMC,QAAQmF,GAAWA,EAAUD,EAAgBC,IACjEQ,CACT,CACA,SAASgG,EAAchG,GACrB,MAAM1G,EAAS+F,IACT5I,EAAWsH,IACXkI,EAAMjG,EAAGkG,wBACT/J,EAAO1F,EAAS0F,KAChBgK,EAAYnG,EAAGmG,WAAahK,EAAKgK,WAAa,EAC9CC,EAAapG,EAAGoG,YAAcjK,EAAKiK,YAAc,EACjDC,EAAYrG,IAAO1G,EAASA,EAAOgN,QAAUtG,EAAGqG,UAChDE,EAAavG,IAAO1G,EAASA,EAAOkN,QAAUxG,EAAGuG,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,EAElC,CACA,SAASO,EAAe3G,EAAI0E,GAC1B,MAAMkC,EAAU,GAChB,MAAO5G,EAAG6G,uBAAwB,CAChC,MAAMC,EAAO9G,EAAG6G,uBACZnC,EACEoC,EAAKjC,QAAQH,IAAWkC,EAAQ9L,KAAKgM,GACpCF,EAAQ9L,KAAKgM,GACpB9G,EAAK8G,CACP,CACA,OAAOF,CACT,CACA,SAASG,EAAe/G,EAAI0E,GAC1B,MAAMsC,EAAU,GAChB,MAAOhH,EAAGiH,mBAAoB,CAC5B,MAAM/M,EAAO8F,EAAGiH,mBACZvC,EACExK,EAAK2K,QAAQH,IAAWsC,EAAQlM,KAAKZ,GACpC8M,EAAQlM,KAAKZ,GACpB8F,EAAK9F,CACP,CACA,OAAO8M,CACT,CACA,SAASE,EAAalH,EAAImH,GACxB,MAAM7N,EAAS+F,IACf,OAAO/F,EAAOqF,iBAAiBqB,EAAI,MAAMpB,iBAAiBuI,EAC5D,CACA,SAASC,EAAapH,GACpB,IACIzH,EADA8O,EAAQrH,EAEZ,GAAIqH,EAAO,CACT9O,EAAI,EAEJ,MAA2C,QAAnC8O,EAAQA,EAAMC,iBACG,IAAnBD,EAAM7F,WAAgBjJ,GAAK,GAEjC,OAAOA,CACT,CAEF,CACA,SAASgP,EAAevH,EAAI0E,GAC1B,MAAM8C,EAAU,GAChB,IAAIpC,EAASpF,EAAGyH,cAChB,MAAOrC,EACDV,EACEU,EAAOP,QAAQH,IAAW8C,EAAQ1M,KAAKsK,GAE3CoC,EAAQ1M,KAAKsK,GAEfA,EAASA,EAAOqC,cAElB,OAAOD,CACT,CACA,SAASE,EAAqB1H,EAAIb,GAChC,SAASwI,EAAatM,GAChBA,EAAEhD,SAAW2H,IACjBb,EAASlF,KAAK+F,EAAI3E,GAClB2E,EAAG3D,oBAAoB,gBAAiBsL,GAC1C,CACIxI,GACFa,EAAG5D,iBAAiB,gBAAiBuL,EAEzC,CACA,SAASC,EAAiB5H,EAAI6H,EAAMC,GAClC,MAAMxO,EAAS+F,IACf,OAAIyI,EACK9H,EAAY,UAAT6H,EAAmB,cAAgB,gBAAkB1G,WAAW7H,EAAOqF,iBAAiBqB,EAAI,MAAMpB,iBAA0B,UAATiJ,EAAmB,eAAiB,eAAiB1G,WAAW7H,EAAOqF,iBAAiBqB,EAAI,MAAMpB,iBAA0B,UAATiJ,EAAmB,cAAgB,kBAE9Q7H,EAAG+H,WACZ,CACA,SAASC,EAAkBhI,GACzB,OAAQ5F,MAAMC,QAAQ2F,GAAMA,EAAK,CAACA,IAAKrF,QAAOU,KAAOA,GACvD,CACA,SAAS4M,EAAaxF,GACpB,OAAOyF,GACDtE,KAAKuE,IAAID,GAAK,GAAKzF,EAAO2F,SAAW3F,EAAO2F,QAAQC,WAAazE,KAAKuE,IAAID,GAAK,KAAO,EACjFA,EAAI,KAENA,CAEX,CCrUA,IAAII,EAgBAC,EAqDAH,EApEJ,SAASI,IACP,MAAMlP,EAAS+F,IACT5I,EAAWsH,IACjB,MAAO,CACL0K,aAAchS,EAASiS,iBAAmBjS,EAASiS,gBAAgBzL,OAAS,mBAAoBxG,EAASiS,gBAAgBzL,MACzH0L,SAAU,iBAAkBrP,GAAUA,EAAOsP,eAAiBnS,aAAoB6C,EAAOsP,eAE7F,CACA,SAASC,IAIP,OAHKP,IACHA,EAAUE,KAELF,CACT,CAGA,SAASQ,EAAWC,GAClB,IAAI,UACF5K,QACY,IAAV4K,EAAmB,CAAC,EAAIA,EAC5B,MAAMT,EAAUO,IACVvP,EAAS+F,IACT2J,EAAW1P,EAAO4E,UAAU8K,SAC5BC,EAAK9K,GAAa7E,EAAO4E,UAAUC,UACnC+K,EAAS,CACbC,KAAK,EACLC,SAAS,GAELC,EAAc/P,EAAOwF,OAAOwK,MAC5BC,EAAejQ,EAAOwF,OAAO0K,OAC7BJ,EAAUH,EAAGQ,MAAM,+BACzB,IAAIC,EAAOT,EAAGQ,MAAM,wBACpB,MAAME,EAAOV,EAAGQ,MAAM,2BAChBG,GAAUF,GAAQT,EAAGQ,MAAM,8BAC3BI,EAAuB,UAAbb,EAChB,IAAIc,EAAqB,aAAbd,EAGZ,MAAMe,EAAc,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAkB3J,OAjBKL,GAAQI,GAASxB,EAAQK,OAASoB,EAAYrO,QAAQ,GAAG2N,KAAeE,MAAmB,IAC9FG,EAAOT,EAAGQ,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINV,IAAYS,IACdX,EAAOc,GAAK,UACZd,EAAOE,SAAU,IAEfM,GAAQE,GAAUD,KACpBT,EAAOc,GAAK,MACZd,EAAOC,KAAM,GAIRD,CACT,CACA,SAASe,EAAUC,GAOjB,YANkB,IAAdA,IACFA,EAAY,CAAC,GAEV3B,IACHA,EAAeO,EAAWoB,IAErB3B,CACT,CAGA,SAAS4B,IACP,MAAM7Q,EAAS+F,IACT6J,EAASe,IACf,IAAIG,GAAqB,EACzB,SAASC,IACP,MAAMpB,EAAK3P,EAAO4E,UAAUC,UAAUmM,cACtC,OAAOrB,EAAGvN,QAAQ,WAAa,GAAKuN,EAAGvN,QAAQ,UAAY,GAAKuN,EAAGvN,QAAQ,WAAa,CAC1F,CACA,GAAI2O,IAAY,CACd,MAAMpB,EAAKsB,OAAOjR,EAAO4E,UAAUC,WACnC,GAAI8K,EAAG1D,SAAS,YAAa,CAC3B,MAAOiF,EAAOC,GAASxB,EAAGvJ,MAAM,YAAY,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAK7D,KAAI6O,GAAOC,OAAOD,KAC1FN,EAAqBI,EAAQ,IAAgB,KAAVA,GAAgBC,EAAQ,CAC7D,CACF,CACA,MAAMG,EAAY,+CAA+CC,KAAKvR,EAAO4E,UAAUC,WACjF2M,EAAkBT,IAClBhC,EAAYyC,GAAmBF,GAAa1B,EAAOC,IACzD,MAAO,CACLkB,SAAUD,GAAsBU,EAChCV,qBACA/B,YACAuC,YAEJ,CACA,SAASG,IAIP,OAHK3C,IACHA,EAAU+B,KAEL/B,CACT,CAEA,SAAS4C,EAAOxI,GACd,IAAI,OACFC,EAAM,GACNtH,EAAE,KACFQ,GACE6G,EACJ,MAAMlJ,EAAS+F,IACf,IAAI4L,EAAW,KACXC,EAAiB,KACrB,MAAMC,EAAgB,KACf1I,IAAUA,EAAO2I,WAAc3I,EAAO4I,cAC3C1P,EAAK,gBACLA,EAAK,UAAS,EAEV2P,EAAiB,KAChB7I,IAAUA,EAAO2I,WAAc3I,EAAO4I,cAC3CJ,EAAW,IAAIM,gBAAeC,IAC5BN,EAAiB5R,EAAO4F,uBAAsB,KAC5C,MAAM,MACJoK,EAAK,OACLE,GACE/G,EACJ,IAAIgJ,EAAWnC,EACXoC,EAAYlC,EAChBgC,EAAQvP,SAAQ0P,IACd,IAAI,eACFC,EAAc,YACdC,EAAW,OACXxT,GACEsT,EACAtT,GAAUA,IAAWoK,EAAOzC,KAChCyL,EAAWI,EAAcA,EAAYvC,OAASsC,EAAe,IAAMA,GAAgBE,WACnFJ,EAAYG,EAAcA,EAAYrC,QAAUoC,EAAe,IAAMA,GAAgBG,UAAS,IAE5FN,IAAanC,GAASoC,IAAclC,GACtC2B,GACF,GACA,IAEJF,EAASe,QAAQvJ,EAAOzC,IAAG,EAEvBiM,EAAiB,KACjBf,GACF5R,EAAO8F,qBAAqB8L,GAE1BD,GAAYA,EAASiB,WAAazJ,EAAOzC,KAC3CiL,EAASiB,UAAUzJ,EAAOzC,IAC1BiL,EAAW,KACb,EAEIkB,EAA2B,KAC1B1J,IAAUA,EAAO2I,WAAc3I,EAAO4I,aAC3C1P,EAAK,oBAAoB,EAE3BR,EAAG,QAAQ,KACLsH,EAAOQ,OAAOmJ,gBAAmD,qBAA1B9S,EAAOiS,eAChDD,KAGFhS,EAAO8C,iBAAiB,SAAU+O,GAClC7R,EAAO8C,iBAAiB,oBAAqB+P,GAAyB,IAExEhR,EAAG,WAAW,KACZ8Q,IACA3S,EAAO+C,oBAAoB,SAAU8O,GACrC7R,EAAO+C,oBAAoB,oBAAqB8P,EAAyB,GAE7E,CAEA,SAASE,EAAS7J,GAChB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EACJ,MAAM+J,EAAY,GACZjT,EAAS+F,IACTmN,EAAS,SAAUnU,EAAQoU,QACf,IAAZA,IACFA,EAAU,CAAC,GAEb,MAAMC,EAAepT,EAAOqT,kBAAoBrT,EAAOsT,uBACjD3B,EAAW,IAAIyB,GAAaG,IAIhC,GAAIpK,EAAOqK,oBAAqB,OAChC,GAAyB,IAArBD,EAAUrU,OAEZ,YADAmD,EAAK,iBAAkBkR,EAAU,IAGnC,MAAME,EAAiB,WACrBpR,EAAK,iBAAkBkR,EAAU,GACnC,EACIvT,EAAO4F,sBACT5F,EAAO4F,sBAAsB6N,GAE7BzT,EAAOyF,WAAWgO,EAAgB,EACpC,IAEF9B,EAASe,QAAQ3T,EAAQ,CACvB2U,WAA0C,qBAAvBP,EAAQO,YAAoCP,EAAQO,WACvEC,UAAWxK,EAAOyK,YAA2C,qBAAtBT,EAAQQ,WAAmCR,GAASQ,UAC3FE,cAAgD,qBAA1BV,EAAQU,eAAuCV,EAAQU,gBAE/EZ,EAAUzR,KAAKmQ,EACjB,EACM/S,EAAO,KACX,GAAKuK,EAAOQ,OAAOgI,SAAnB,CACA,GAAIxI,EAAOQ,OAAOmK,eAAgB,CAChC,MAAMC,EAAmB9F,EAAe9E,EAAO6K,QAC/C,IAAK,IAAI/U,EAAI,EAAGA,EAAI8U,EAAiB7U,OAAQD,GAAK,EAChDiU,EAAOa,EAAiB9U,GAE5B,CAEAiU,EAAO/J,EAAO6K,OAAQ,CACpBL,UAAWxK,EAAOQ,OAAOsK,uBAI3Bf,EAAO/J,EAAOU,UAAW,CACvB6J,YAAY,GAdqB,CAejC,EAEEQ,EAAU,KACdjB,EAAUtQ,SAAQgP,IAChBA,EAASwC,YAAY,IAEvBlB,EAAU9Q,OAAO,EAAG8Q,EAAU/T,OAAO,EAEvC8T,EAAa,CACXrB,UAAU,EACVmC,gBAAgB,EAChBG,sBAAsB,IAExBpS,EAAG,OAAQjD,GACXiD,EAAG,UAAWqS,EAChB,CAIA,IAAIE,EAAgB,CAClB,EAAAvS,CAAGwS,EAAQC,EAASC,GAClB,MAAM7U,EAAO0F,KACb,IAAK1F,EAAK8U,iBAAmB9U,EAAKoS,UAAW,OAAOpS,EACpD,GAAuB,oBAAZ4U,EAAwB,OAAO5U,EAC1C,MAAM+U,EAASF,EAAW,UAAY,OAKtC,OAJAF,EAAOjO,MAAM,KAAKzD,SAAQ+R,IACnBhV,EAAK8U,gBAAgBE,KAAQhV,EAAK8U,gBAAgBE,GAAS,IAChEhV,EAAK8U,gBAAgBE,GAAOD,GAAQH,EAAQ,IAEvC5U,CACT,EACA,IAAAiV,CAAKN,EAAQC,EAASC,GACpB,MAAM7U,EAAO0F,KACb,IAAK1F,EAAK8U,iBAAmB9U,EAAKoS,UAAW,OAAOpS,EACpD,GAAuB,oBAAZ4U,EAAwB,OAAO5U,EAC1C,SAASkV,IACPlV,EAAKwC,IAAImS,EAAQO,GACbA,EAAYC,uBACPD,EAAYC,eAErB,IAAK,IAAIC,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzBV,EAAQ7S,MAAM/B,EAAMqV,EACtB,CAEA,OADAH,EAAYC,eAAiBP,EACtB5U,EAAKmC,GAAGwS,EAAQO,EAAaL,EACtC,EACA,KAAAU,CAAMX,EAASC,GACb,MAAM7U,EAAO0F,KACb,IAAK1F,EAAK8U,iBAAmB9U,EAAKoS,UAAW,OAAOpS,EACpD,GAAuB,oBAAZ4U,EAAwB,OAAO5U,EAC1C,MAAM+U,EAASF,EAAW,UAAY,OAItC,OAHI7U,EAAKwV,mBAAmB9S,QAAQkS,GAAW,GAC7C5U,EAAKwV,mBAAmBT,GAAQH,GAE3B5U,CACT,EACA,MAAAyV,CAAOb,GACL,MAAM5U,EAAO0F,KACb,IAAK1F,EAAK8U,iBAAmB9U,EAAKoS,UAAW,OAAOpS,EACpD,IAAKA,EAAKwV,mBAAoB,OAAOxV,EACrC,MAAM0V,EAAQ1V,EAAKwV,mBAAmB9S,QAAQkS,GAI9C,OAHIc,GAAS,GACX1V,EAAKwV,mBAAmB/S,OAAOiT,EAAO,GAEjC1V,CACT,EACA,GAAAwC,CAAImS,EAAQC,GACV,MAAM5U,EAAO0F,KACb,OAAK1F,EAAK8U,iBAAmB9U,EAAKoS,UAAkBpS,EAC/CA,EAAK8U,iBACVH,EAAOjO,MAAM,KAAKzD,SAAQ+R,IACD,qBAAZJ,EACT5U,EAAK8U,gBAAgBE,GAAS,GACrBhV,EAAK8U,gBAAgBE,IAC9BhV,EAAK8U,gBAAgBE,GAAO/R,SAAQ,CAAC0S,EAAcD,MAC7CC,IAAiBf,GAAWe,EAAaR,gBAAkBQ,EAAaR,iBAAmBP,IAC7F5U,EAAK8U,gBAAgBE,GAAOvS,OAAOiT,EAAO,EAC5C,GAEJ,IAEK1V,GAZ2BA,CAapC,EACA,IAAA2C,GACE,MAAM3C,EAAO0F,KACb,IAAK1F,EAAK8U,iBAAmB9U,EAAKoS,UAAW,OAAOpS,EACpD,IAAKA,EAAK8U,gBAAiB,OAAO9U,EAClC,IAAI2U,EACAiB,EACAC,EACJ,IAAK,IAAIC,EAAQpN,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAM0U,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFV,EAAKU,GAASrN,UAAUqN,GAEH,kBAAZV,EAAK,IAAmBjU,MAAMC,QAAQgU,EAAK,KACpDV,EAASU,EAAK,GACdO,EAAOP,EAAKzS,MAAM,EAAGyS,EAAK7V,QAC1BqW,EAAU7V,IAEV2U,EAASU,EAAK,GAAGV,OACjBiB,EAAOP,EAAK,GAAGO,KACfC,EAAUR,EAAK,GAAGQ,SAAW7V,GAE/B4V,EAAKI,QAAQH,GACb,MAAMI,EAAc7U,MAAMC,QAAQsT,GAAUA,EAASA,EAAOjO,MAAM,KAalE,OAZAuP,EAAYhT,SAAQ+R,IACdhV,EAAKwV,oBAAsBxV,EAAKwV,mBAAmBhW,QACrDQ,EAAKwV,mBAAmBvS,SAAQ0S,IAC9BA,EAAa5T,MAAM8T,EAAS,CAACb,KAAUY,GAAM,IAG7C5V,EAAK8U,iBAAmB9U,EAAK8U,gBAAgBE,IAC/ChV,EAAK8U,gBAAgBE,GAAO/R,SAAQ0S,IAClCA,EAAa5T,MAAM8T,EAASD,EAAK,GAErC,IAEK5V,CACT,GAGF,SAASkW,IACP,MAAMzM,EAAS/D,KACf,IAAI4K,EACAE,EACJ,MAAMxJ,EAAKyC,EAAOzC,GAEhBsJ,EADiC,qBAAxB7G,EAAOQ,OAAOqG,OAAiD,OAAxB7G,EAAOQ,OAAOqG,MACtD7G,EAAOQ,OAAOqG,MAEdtJ,EAAGmP,YAGX3F,EADkC,qBAAzB/G,EAAOQ,OAAOuG,QAAmD,OAAzB/G,EAAOQ,OAAOuG,OACtD/G,EAAOQ,OAAOuG,OAEdxJ,EAAGoP,aAEA,IAAV9F,GAAe7G,EAAO4M,gBAA6B,IAAX7F,GAAgB/G,EAAO6M,eAKnEhG,EAAQA,EAAQiG,SAASrI,EAAalH,EAAI,iBAAmB,EAAG,IAAMuP,SAASrI,EAAalH,EAAI,kBAAoB,EAAG,IACvHwJ,EAASA,EAAS+F,SAASrI,EAAalH,EAAI,gBAAkB,EAAG,IAAMuP,SAASrI,EAAalH,EAAI,mBAAqB,EAAG,IACrH2K,OAAO6E,MAAMlG,KAAQA,EAAQ,GAC7BqB,OAAO6E,MAAMhG,KAASA,EAAS,GACnCzS,OAAO0Y,OAAOhN,EAAQ,CACpB6G,QACAE,SACA3B,KAAMpF,EAAO4M,eAAiB/F,EAAQE,IAE1C,CAEA,SAASkG,IACP,MAAMjN,EAAS/D,KACf,SAASiR,EAA0BrO,EAAMsO,GACvC,OAAOzO,WAAWG,EAAK1C,iBAAiB6D,EAAOoN,kBAAkBD,KAAW,EAC9E,CACA,MAAM3M,EAASR,EAAOQ,QAChB,UACJE,EAAS,SACT2M,EACAjI,KAAMkI,EACNC,aAAcC,EAAG,SACjBC,GACEzN,EACE0N,EAAY1N,EAAO2N,SAAWnN,EAAOmN,QAAQC,QAC7CC,EAAuBH,EAAY1N,EAAO2N,QAAQG,OAAO/X,OAASiK,EAAO8N,OAAO/X,OAChF+X,EAAS/L,EAAgBsL,EAAU,IAAIrN,EAAOQ,OAAOuN,4BACrDC,EAAeN,EAAY1N,EAAO2N,QAAQG,OAAO/X,OAAS+X,EAAO/X,OACvE,IAAIkY,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAe5N,EAAO6N,mBACE,oBAAjBD,IACTA,EAAe5N,EAAO6N,mBAAmB7W,KAAKwI,IAEhD,IAAIsO,EAAc9N,EAAO+N,kBACE,oBAAhBD,IACTA,EAAc9N,EAAO+N,kBAAkB/W,KAAKwI,IAE9C,MAAMwO,EAAyBxO,EAAOiO,SAASlY,OACzC0Y,EAA2BzO,EAAOkO,WAAWnY,OACnD,IAAI2Y,EAAelO,EAAOkO,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChB3C,EAAQ,EACZ,GAA0B,qBAAfqB,EACT,OAE0B,kBAAjBoB,GAA6BA,EAAazV,QAAQ,MAAQ,EACnEyV,EAAehQ,WAAWgQ,EAAavQ,QAAQ,IAAK,KAAO,IAAMmP,EAChC,kBAAjBoB,IAChBA,EAAehQ,WAAWgQ,IAE5B1O,EAAO6O,aAAeH,EAGtBZ,EAAOtU,SAAQqI,IACT2L,EACF3L,EAAQrH,MAAMsU,WAAa,GAE3BjN,EAAQrH,MAAMuU,YAAc,GAE9BlN,EAAQrH,MAAMwU,aAAe,GAC7BnN,EAAQrH,MAAMyU,UAAY,EAAE,IAI1BzO,EAAO0O,gBAAkB1O,EAAO2O,UAClCzP,EAAegB,EAAW,kCAAmC,IAC7DhB,EAAegB,EAAW,iCAAkC,KAE9D,MAAM0O,EAAc5O,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,GAAKtP,EAAOqP,KAQlE,IAAIE,EAPAH,EACFpP,EAAOqP,KAAKG,WAAW1B,GACd9N,EAAOqP,MAChBrP,EAAOqP,KAAKI,cAKd,MAAMC,EAAgD,SAAzBlP,EAAOmP,eAA4BnP,EAAOoP,aAAetb,OAAO0D,KAAKwI,EAAOoP,aAAa1X,QAAO7B,GACnE,qBAA1CmK,EAAOoP,YAAYvZ,GAAKsZ,gBACrC5Z,OAAS,EACZ,IAAK,IAAID,EAAI,EAAGA,EAAIkY,EAAclY,GAAK,EAAG,CAExC,IAAI+Z,EAKJ,GANAN,EAAY,EAERzB,EAAOhY,KAAI+Z,EAAQ/B,EAAOhY,IAC1BsZ,GACFpP,EAAOqP,KAAKS,YAAYha,EAAG+Z,EAAO/B,IAEhCA,EAAOhY,IAAyC,SAAnC2O,EAAaoL,EAAO,WAArC,CAEA,GAA6B,SAAzBrP,EAAOmP,cAA0B,CAC/BD,IACF5B,EAAOhY,GAAG0E,MAAMwF,EAAOoN,kBAAkB,UAAY,IAEvD,MAAM2C,EAAc7T,iBAAiB2T,GAC/BG,EAAmBH,EAAMrV,MAAMwD,UAC/BiS,EAAyBJ,EAAMrV,MAAMyD,gBAO3C,GANI+R,IACFH,EAAMrV,MAAMwD,UAAY,QAEtBiS,IACFJ,EAAMrV,MAAMyD,gBAAkB,QAE5BuC,EAAO0P,aACTX,EAAYvP,EAAO4M,eAAiBzH,EAAiB0K,EAAO,SAAS,GAAQ1K,EAAiB0K,EAAO,UAAU,OAC1G,CAEL,MAAMhJ,EAAQqG,EAA0B6C,EAAa,SAC/CI,EAAcjD,EAA0B6C,EAAa,gBACrDK,EAAelD,EAA0B6C,EAAa,iBACtDjB,EAAa5B,EAA0B6C,EAAa,eACpDhB,EAAc7B,EAA0B6C,EAAa,gBACrDM,EAAYN,EAAY5T,iBAAiB,cAC/C,GAAIkU,GAA2B,eAAdA,EACfd,EAAY1I,EAAQiI,EAAaC,MAC5B,CACL,MAAM,YACJrC,EAAW,YACXpH,GACEuK,EACJN,EAAY1I,EAAQsJ,EAAcC,EAAetB,EAAaC,GAAezJ,EAAcoH,EAC7F,CACF,CACIsD,IACFH,EAAMrV,MAAMwD,UAAYgS,GAEtBC,IACFJ,EAAMrV,MAAMyD,gBAAkBgS,GAE5BzP,EAAO0P,eAAcX,EAAYpO,KAAKmP,MAAMf,GAClD,MACEA,GAAajC,GAAc9M,EAAOmP,cAAgB,GAAKjB,GAAgBlO,EAAOmP,cAC1EnP,EAAO0P,eAAcX,EAAYpO,KAAKmP,MAAMf,IAC5CzB,EAAOhY,KACTgY,EAAOhY,GAAG0E,MAAMwF,EAAOoN,kBAAkB,UAAY,GAAGmC,OAGxDzB,EAAOhY,KACTgY,EAAOhY,GAAGya,gBAAkBhB,GAE9BpB,EAAgB9V,KAAKkX,GACjB/O,EAAO0O,gBACTP,EAAgBA,EAAgBY,EAAY,EAAIX,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAAN9Y,IAAS6Y,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC3E,IAAN5Y,IAAS6Y,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC1DvN,KAAKuE,IAAIiJ,GAAiB,OAAUA,EAAgB,GACpDnO,EAAO0P,eAAcvB,EAAgBxN,KAAKmP,MAAM3B,IAChD1C,EAAQzL,EAAOgQ,iBAAmB,GAAGvC,EAAS5V,KAAKsW,GACvDT,EAAW7V,KAAKsW,KAEZnO,EAAO0P,eAAcvB,EAAgBxN,KAAKmP,MAAM3B,KAC/C1C,EAAQ9K,KAAKE,IAAIrB,EAAOQ,OAAOiQ,mBAAoBxE,IAAUjM,EAAOQ,OAAOgQ,iBAAmB,GAAGvC,EAAS5V,KAAKsW,GACpHT,EAAW7V,KAAKsW,GAChBA,EAAgBA,EAAgBY,EAAYb,GAE9C1O,EAAO6O,aAAeU,EAAYb,EAClCE,EAAgBW,EAChBtD,GAAS,CArE2D,CAsEtE,CAaA,GAZAjM,EAAO6O,YAAc1N,KAAKC,IAAIpB,EAAO6O,YAAavB,GAAcgB,EAC5Dd,GAAOC,IAA+B,UAAlBjN,EAAOkQ,QAAwC,cAAlBlQ,EAAOkQ,UAC1DhQ,EAAUlG,MAAMqM,MAAQ,GAAG7G,EAAO6O,YAAcH,OAE9ClO,EAAOmQ,iBACTjQ,EAAUlG,MAAMwF,EAAOoN,kBAAkB,UAAY,GAAGpN,EAAO6O,YAAcH,OAE3EU,GACFpP,EAAOqP,KAAKuB,kBAAkBrB,EAAWtB,IAItCzN,EAAO0O,eAAgB,CAC1B,MAAM2B,EAAgB,GACtB,IAAK,IAAI/a,EAAI,EAAGA,EAAImY,EAASlY,OAAQD,GAAK,EAAG,CAC3C,IAAIgb,EAAiB7C,EAASnY,GAC1B0K,EAAO0P,eAAcY,EAAiB3P,KAAKmP,MAAMQ,IACjD7C,EAASnY,IAAMkK,EAAO6O,YAAcvB,GACtCuD,EAAcxY,KAAKyY,EAEvB,CACA7C,EAAW4C,EACP1P,KAAKmP,MAAMtQ,EAAO6O,YAAcvB,GAAcnM,KAAKmP,MAAMrC,EAASA,EAASlY,OAAS,IAAM,GAC5FkY,EAAS5V,KAAK2H,EAAO6O,YAAcvB,EAEvC,CACA,GAAII,GAAalN,EAAOuQ,KAAM,CAC5B,MAAM3L,EAAO+I,EAAgB,GAAKO,EAClC,GAAIlO,EAAOgQ,eAAiB,EAAG,CAC7B,MAAMQ,EAAS7P,KAAK8P,MAAMjR,EAAO2N,QAAQuD,aAAelR,EAAO2N,QAAQwD,aAAe3Q,EAAOgQ,gBACvFY,EAAYhM,EAAO5E,EAAOgQ,eAChC,IAAK,IAAI1a,EAAI,EAAGA,EAAIkb,EAAQlb,GAAK,EAC/BmY,EAAS5V,KAAK4V,EAASA,EAASlY,OAAS,GAAKqb,EAElD,CACA,IAAK,IAAItb,EAAI,EAAGA,EAAIkK,EAAO2N,QAAQuD,aAAelR,EAAO2N,QAAQwD,YAAarb,GAAK,EACnD,IAA1B0K,EAAOgQ,gBACTvC,EAAS5V,KAAK4V,EAASA,EAASlY,OAAS,GAAKqP,GAEhD8I,EAAW7V,KAAK6V,EAAWA,EAAWnY,OAAS,GAAKqP,GACpDpF,EAAO6O,aAAezJ,CAE1B,CAEA,GADwB,IAApB6I,EAASlY,SAAckY,EAAW,CAAC,IAClB,IAAjBS,EAAoB,CACtB,MAAMrY,EAAM2J,EAAO4M,gBAAkBY,EAAM,aAAexN,EAAOoN,kBAAkB,eACnFU,EAAO5V,QAAO,CAACmZ,EAAGC,MACX9Q,EAAO2O,UAAW3O,EAAOuQ,OAC1BO,IAAexD,EAAO/X,OAAS,IAIlCyD,SAAQqI,IACTA,EAAQrH,MAAMnE,GAAO,GAAGqY,KAAgB,GAE5C,CACA,GAAIlO,EAAO0O,gBAAkB1O,EAAO+Q,qBAAsB,CACxD,IAAIC,EAAgB,EACpBrD,EAAgB3U,SAAQiY,IACtBD,GAAiBC,GAAkB/C,GAAgB,EAAE,IAEvD8C,GAAiB9C,EACjB,MAAMgD,EAAUF,EAAgBlE,EAAakE,EAAgBlE,EAAa,EAC1EW,EAAWA,EAAS7U,KAAIuY,GAClBA,GAAQ,GAAWvD,EACnBuD,EAAOD,EAAgBA,EAAUpD,EAC9BqD,GAEX,CACA,GAAInR,EAAOoR,yBAA0B,CACnC,IAAIJ,EAAgB,EACpBrD,EAAgB3U,SAAQiY,IACtBD,GAAiBC,GAAkB/C,GAAgB,EAAE,IAEvD8C,GAAiB9C,EACjB,MAAMmD,GAAcrR,EAAO6N,oBAAsB,IAAM7N,EAAO+N,mBAAqB,GACnF,GAAIiD,EAAgBK,EAAavE,EAAY,CAC3C,MAAMwE,GAAmBxE,EAAakE,EAAgBK,GAAc,EACpE5D,EAASzU,SAAQ,CAACmY,EAAMI,KACtB9D,EAAS8D,GAAaJ,EAAOG,CAAe,IAE9C5D,EAAW1U,SAAQ,CAACmY,EAAMI,KACxB7D,EAAW6D,GAAaJ,EAAOG,CAAe,GAElD,CACF,CAOA,GANAxd,OAAO0Y,OAAOhN,EAAQ,CACpB8N,SACAG,WACAC,aACAC,oBAEE3N,EAAO0O,gBAAkB1O,EAAO2O,UAAY3O,EAAO+Q,qBAAsB,CAC3E7R,EAAegB,EAAW,mCAAuCuN,EAAS,GAAb,MAC7DvO,EAAegB,EAAW,iCAAqCV,EAAOoF,KAAO,EAAI+I,EAAgBA,EAAgBpY,OAAS,GAAK,EAAnE,MAC5D,MAAMic,GAAiBhS,EAAOiO,SAAS,GACjCgE,GAAmBjS,EAAOkO,WAAW,GAC3ClO,EAAOiO,SAAWjO,EAAOiO,SAAS7U,KAAIqM,GAAKA,EAAIuM,IAC/ChS,EAAOkO,WAAalO,EAAOkO,WAAW9U,KAAIqM,GAAKA,EAAIwM,GACrD,CAeA,GAdIjE,IAAiBH,GACnB7N,EAAO9G,KAAK,sBAEV+U,EAASlY,SAAWyY,IAClBxO,EAAOQ,OAAO0R,eAAelS,EAAOmS,gBACxCnS,EAAO9G,KAAK,yBAEVgV,EAAWnY,SAAW0Y,GACxBzO,EAAO9G,KAAK,0BAEVsH,EAAO4R,qBACTpS,EAAOqS,qBAETrS,EAAO9G,KAAK,kBACPwU,IAAclN,EAAO2O,UAA8B,UAAlB3O,EAAOkQ,QAAwC,SAAlBlQ,EAAOkQ,QAAoB,CAC5F,MAAM4B,EAAsB,GAAG9R,EAAO+R,wCAChCC,EAA6BxS,EAAOzC,GAAG8F,UAAUR,SAASyP,GAC5DtE,GAAgBxN,EAAOiS,wBACpBD,GAA4BxS,EAAOzC,GAAG8F,UAAUC,IAAIgP,GAChDE,GACTxS,EAAOzC,GAAG8F,UAAUqP,OAAOJ,EAE/B,CACF,CAEA,SAASK,EAAiBlS,GACxB,MAAMT,EAAS/D,KACT2W,EAAe,GACflF,EAAY1N,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAC1D,IACI9X,EADAmT,EAAY,EAEK,kBAAVxI,EACTT,EAAO6S,cAAcpS,IACF,IAAVA,GACTT,EAAO6S,cAAc7S,EAAOQ,OAAOC,OAErC,MAAMqS,EAAkB7G,GAClByB,EACK1N,EAAO8N,OAAO9N,EAAO+S,oBAAoB9G,IAE3CjM,EAAO8N,OAAO7B,GAGvB,GAAoC,SAAhCjM,EAAOQ,OAAOmP,eAA4B3P,EAAOQ,OAAOmP,cAAgB,EAC1E,GAAI3P,EAAOQ,OAAO0O,gBACflP,EAAOgT,eAAiB,IAAIxZ,SAAQqW,IACnC+C,EAAava,KAAKwX,EAAM,SAG1B,IAAK/Z,EAAI,EAAGA,EAAIqL,KAAK8P,KAAKjR,EAAOQ,OAAOmP,eAAgB7Z,GAAK,EAAG,CAC9D,MAAMmW,EAAQjM,EAAOiT,YAAcnd,EACnC,GAAImW,EAAQjM,EAAO8N,OAAO/X,SAAW2X,EAAW,MAChDkF,EAAava,KAAKya,EAAgB7G,GACpC,MAGF2G,EAAava,KAAKya,EAAgB9S,EAAOiT,cAI3C,IAAKnd,EAAI,EAAGA,EAAI8c,EAAa7c,OAAQD,GAAK,EACxC,GAA+B,qBAApB8c,EAAa9c,GAAoB,CAC1C,MAAMiR,EAAS6L,EAAa9c,GAAGod,aAC/BjK,EAAYlC,EAASkC,EAAYlC,EAASkC,CAC5C,EAIEA,GAA2B,IAAdA,KAAiBjJ,EAAOU,UAAUlG,MAAMuM,OAAS,GAAGkC,MACvE,CAEA,SAASoJ,IACP,MAAMrS,EAAS/D,KACT6R,EAAS9N,EAAO8N,OAEhBqF,EAAcnT,EAAOyK,UAAYzK,EAAO4M,eAAiB5M,EAAOU,UAAU0S,WAAapT,EAAOU,UAAU2S,UAAY,EAC1H,IAAK,IAAIvd,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EACtCgY,EAAOhY,GAAGwd,mBAAqBtT,EAAO4M,eAAiBkB,EAAOhY,GAAGsd,WAAatF,EAAOhY,GAAGud,WAAaF,EAAcnT,EAAOuT,uBAE9H,CAEA,MAAMC,EAAuB,CAAC3R,EAAS4R,EAAWC,KAC5CD,IAAc5R,EAAQwB,UAAUR,SAAS6Q,GAC3C7R,EAAQwB,UAAUC,IAAIoQ,IACZD,GAAa5R,EAAQwB,UAAUR,SAAS6Q,IAClD7R,EAAQwB,UAAUqP,OAAOgB,EAC3B,EAEF,SAASC,EAAqBvT,QACV,IAAdA,IACFA,EAAYnE,MAAQA,KAAKmE,WAAa,GAExC,MAAMJ,EAAS/D,KACTuE,EAASR,EAAOQ,QAChB,OACJsN,EACAP,aAAcC,EAAG,SACjBS,GACEjO,EACJ,GAAsB,IAAlB8N,EAAO/X,OAAc,OACkB,qBAAhC+X,EAAO,GAAGwF,mBAAmCtT,EAAOqS,qBAC/D,IAAIuB,GAAgBxT,EAChBoN,IAAKoG,EAAexT,GACxBJ,EAAO6T,qBAAuB,GAC9B7T,EAAOgT,cAAgB,GACvB,IAAItE,EAAelO,EAAOkO,aACE,kBAAjBA,GAA6BA,EAAazV,QAAQ,MAAQ,EACnEyV,EAAehQ,WAAWgQ,EAAavQ,QAAQ,IAAK,KAAO,IAAM6B,EAAOoF,KACvC,kBAAjBsJ,IAChBA,EAAehQ,WAAWgQ,IAE5B,IAAK,IAAI5Y,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAAG,CACzC,MAAM+Z,EAAQ/B,EAAOhY,GACrB,IAAIge,EAAcjE,EAAMyD,kBACpB9S,EAAO2O,SAAW3O,EAAO0O,iBAC3B4E,GAAehG,EAAO,GAAGwF,mBAE3B,MAAMS,GAAiBH,GAAgBpT,EAAO0O,eAAiBlP,EAAOgU,eAAiB,GAAKF,IAAgBjE,EAAMU,gBAAkB7B,GAC9HuF,GAAyBL,EAAe3F,EAAS,IAAMzN,EAAO0O,eAAiBlP,EAAOgU,eAAiB,GAAKF,IAAgBjE,EAAMU,gBAAkB7B,GACpJwF,IAAgBN,EAAeE,GAC/BK,EAAaD,EAAclU,EAAOmO,gBAAgBrY,GAClDse,EAAiBF,GAAe,GAAKA,GAAelU,EAAOoF,KAAOpF,EAAOmO,gBAAgBrY,GACzFue,EAAYH,GAAe,GAAKA,EAAclU,EAAOoF,KAAO,GAAK+O,EAAa,GAAKA,GAAcnU,EAAOoF,MAAQ8O,GAAe,GAAKC,GAAcnU,EAAOoF,KAC3JiP,IACFrU,EAAOgT,cAAc3a,KAAKwX,GAC1B7P,EAAO6T,qBAAqBxb,KAAKvC,IAEnC0d,EAAqB3D,EAAOwE,EAAW7T,EAAO8T,mBAC9Cd,EAAqB3D,EAAOuE,EAAgB5T,EAAO+T,wBACnD1E,EAAM3O,SAAWsM,GAAOuG,EAAgBA,EACxClE,EAAM2E,iBAAmBhH,GAAOyG,EAAwBA,CAC1D,CACF,CAEA,SAASQ,GAAerU,GACtB,MAAMJ,EAAS/D,KACf,GAAyB,qBAAdmE,EAA2B,CACpC,MAAMsU,EAAa1U,EAAOuN,cAAgB,EAAI,EAE9CnN,EAAYJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAYsU,GAAc,CAC7E,CACA,MAAMlU,EAASR,EAAOQ,OAChBmU,EAAiB3U,EAAO4U,eAAiB5U,EAAOgU,eACtD,IAAI,SACF9S,EAAQ,YACR2T,EAAW,MACXC,EAAK,aACLC,GACE/U,EACJ,MAAMgV,EAAeH,EACfI,EAASH,EACf,GAAuB,IAAnBH,EACFzT,EAAW,EACX2T,GAAc,EACdC,GAAQ,MACH,CACL5T,GAAYd,EAAYJ,EAAOgU,gBAAkBW,EACjD,MAAMO,EAAqB/T,KAAKuE,IAAItF,EAAYJ,EAAOgU,gBAAkB,EACnEmB,EAAehU,KAAKuE,IAAItF,EAAYJ,EAAO4U,gBAAkB,EACnEC,EAAcK,GAAsBhU,GAAY,EAChD4T,EAAQK,GAAgBjU,GAAY,EAChCgU,IAAoBhU,EAAW,GAC/BiU,IAAcjU,EAAW,EAC/B,CACA,GAAIV,EAAOuQ,KAAM,CACf,MAAMqE,EAAkBpV,EAAO+S,oBAAoB,GAC7CsC,EAAiBrV,EAAO+S,oBAAoB/S,EAAO8N,OAAO/X,OAAS,GACnEuf,EAAsBtV,EAAOkO,WAAWkH,GACxCG,EAAqBvV,EAAOkO,WAAWmH,GACvCG,EAAexV,EAAOkO,WAAWlO,EAAOkO,WAAWnY,OAAS,GAC5D0f,EAAetU,KAAKuE,IAAItF,GAE5B2U,EADEU,GAAgBH,GACFG,EAAeH,GAAuBE,GAEtCC,EAAeD,EAAeD,GAAsBC,EAElET,EAAe,IAAGA,GAAgB,EACxC,CACAzgB,OAAO0Y,OAAOhN,EAAQ,CACpBkB,WACA6T,eACAF,cACAC,WAEEtU,EAAO4R,qBAAuB5R,EAAO0O,gBAAkB1O,EAAOkV,aAAY1V,EAAO2T,qBAAqBvT,GACtGyU,IAAgBG,GAClBhV,EAAO9G,KAAK,yBAEV4b,IAAUG,GACZjV,EAAO9G,KAAK,oBAEV8b,IAAiBH,GAAeI,IAAWH,IAC7C9U,EAAO9G,KAAK,YAEd8G,EAAO9G,KAAK,WAAYgI,EAC1B,CAEA,MAAMyU,GAAqB,CAAC9T,EAAS4R,EAAWC,KAC1CD,IAAc5R,EAAQwB,UAAUR,SAAS6Q,GAC3C7R,EAAQwB,UAAUC,IAAIoQ,IACZD,GAAa5R,EAAQwB,UAAUR,SAAS6Q,IAClD7R,EAAQwB,UAAUqP,OAAOgB,EAC3B,EAEF,SAASkC,KACP,MAAM5V,EAAS/D,MACT,OACJ6R,EAAM,OACNtN,EAAM,SACN6M,EAAQ,YACR4F,GACEjT,EACE0N,EAAY1N,EAAO2N,SAAWnN,EAAOmN,QAAQC,QAC7CwB,EAAcpP,EAAOqP,MAAQ7O,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,EAC/DuG,EAAmB5T,GAChBF,EAAgBsL,EAAU,IAAI7M,EAAOuN,aAAa9L,kBAAyBA,KAAY,GAEhG,IAAI6T,EACAC,EACAC,EACJ,GAAItI,EACF,GAAIlN,EAAOuQ,KAAM,CACf,IAAIO,EAAa2B,EAAcjT,EAAO2N,QAAQuD,aAC1CI,EAAa,IAAGA,EAAatR,EAAO2N,QAAQG,OAAO/X,OAASub,GAC5DA,GAActR,EAAO2N,QAAQG,OAAO/X,SAAQub,GAActR,EAAO2N,QAAQG,OAAO/X,QACpF+f,EAAcD,EAAiB,6BAA6BvE,MAC9D,MACEwE,EAAcD,EAAiB,6BAA6B5C,YAG1D7D,GACF0G,EAAchI,EAAOmI,MAAKpU,GAAWA,EAAQqU,SAAWjD,IACxD+C,EAAYlI,EAAOmI,MAAKpU,GAAWA,EAAQqU,SAAWjD,EAAc,IACpE8C,EAAYjI,EAAOmI,MAAKpU,GAAWA,EAAQqU,SAAWjD,EAAc,KAEpE6C,EAAchI,EAAOmF,GAGrB6C,IACG1G,IAEH4G,EAAY1R,EAAewR,EAAa,IAAItV,EAAOuN,4BAA4B,GAC3EvN,EAAOuQ,OAASiF,IAClBA,EAAYlI,EAAO,IAIrBiI,EAAY7R,EAAe4R,EAAa,IAAItV,EAAOuN,4BAA4B,GAC3EvN,EAAOuQ,MAAuB,KAAdgF,IAClBA,EAAYjI,EAAOA,EAAO/X,OAAS,MAIzC+X,EAAOtU,SAAQqI,IACb8T,GAAmB9T,EAASA,IAAYiU,EAAatV,EAAO2V,kBAC5DR,GAAmB9T,EAASA,IAAYmU,EAAWxV,EAAO4V,gBAC1DT,GAAmB9T,EAASA,IAAYkU,EAAWvV,EAAO6V,eAAe,IAE3ErW,EAAOsW,mBACT,CAEA,MAAMC,GAAuB,CAACvW,EAAQwW,KACpC,IAAKxW,GAAUA,EAAO2I,YAAc3I,EAAOQ,OAAQ,OACnD,MAAMiW,EAAgB,IAAMzW,EAAOyK,UAAY,eAAiB,IAAIzK,EAAOQ,OAAOuN,aAC5ElM,EAAU2U,EAAQE,QAAQD,KAChC,GAAI5U,EAAS,CACX,IAAI8U,EAAS9U,EAAQ7H,cAAc,IAAIgG,EAAOQ,OAAOoW,uBAChDD,GAAU3W,EAAOyK,YAChB5I,EAAQC,WACV6U,EAAS9U,EAAQC,WAAW9H,cAAc,IAAIgG,EAAOQ,OAAOoW,sBAG5Dna,uBAAsB,KAChBoF,EAAQC,aACV6U,EAAS9U,EAAQC,WAAW9H,cAAc,IAAIgG,EAAOQ,OAAOoW,sBACxDD,GAAQA,EAAOjE,SACrB,KAIFiE,GAAQA,EAAOjE,QACrB,GAEImE,GAAS,CAAC7W,EAAQiM,KACtB,IAAKjM,EAAO8N,OAAO7B,GAAQ,OAC3B,MAAMuK,EAAUxW,EAAO8N,OAAO7B,GAAOjS,cAAc,oBAC/Cwc,GAASA,EAAQM,gBAAgB,UAAU,EAE3CC,GAAU/W,IACd,IAAKA,GAAUA,EAAO2I,YAAc3I,EAAOQ,OAAQ,OACnD,IAAIwW,EAAShX,EAAOQ,OAAOyW,oBAC3B,MAAM3X,EAAMU,EAAO8N,OAAO/X,OAC1B,IAAKuJ,IAAQ0X,GAAUA,EAAS,EAAG,OACnCA,EAAS7V,KAAKE,IAAI2V,EAAQ1X,GAC1B,MAAMqQ,EAAgD,SAAhC3P,EAAOQ,OAAOmP,cAA2B3P,EAAOkX,uBAAyB/V,KAAK8P,KAAKjR,EAAOQ,OAAOmP,eACjHsD,EAAcjT,EAAOiT,YAC3B,GAAIjT,EAAOQ,OAAO6O,MAAQrP,EAAOQ,OAAO6O,KAAKC,KAAO,EAAG,CACrD,MAAM6H,EAAelE,EACfmE,EAAiB,CAACD,EAAeH,GASvC,OARAI,EAAe/e,QAAQV,MAAM0f,KAAK,CAChCthB,OAAQihB,IACP5d,KAAI,CAACiY,EAAGvb,IACFqhB,EAAexH,EAAgB7Z,UAExCkK,EAAO8N,OAAOtU,SAAQ,CAACqI,EAAS/L,KAC1BshB,EAAetU,SAASjB,EAAQqU,SAASW,GAAO7W,EAAQlK,EAAE,GAGlE,CACA,MAAMwhB,EAAuBrE,EAActD,EAAgB,EAC3D,GAAI3P,EAAOQ,OAAO+W,QAAUvX,EAAOQ,OAAOuQ,KACxC,IAAK,IAAIjb,EAAImd,EAAc+D,EAAQlhB,GAAKwhB,EAAuBN,EAAQlhB,GAAK,EAAG,CAC7E,MAAM0hB,GAAa1hB,EAAIwJ,EAAMA,GAAOA,GAChCkY,EAAYvE,GAAeuE,EAAYF,IAAsBT,GAAO7W,EAAQwX,EAClF,MAEA,IAAK,IAAI1hB,EAAIqL,KAAKC,IAAI6R,EAAc+D,EAAQ,GAAIlhB,GAAKqL,KAAKE,IAAIiW,EAAuBN,EAAQ1X,EAAM,GAAIxJ,GAAK,EACtGA,IAAMmd,IAAgBnd,EAAIwhB,GAAwBxhB,EAAImd,IACxD4D,GAAO7W,EAAQlK,EAGrB,EAGF,SAAS2hB,GAA0BzX,GACjC,MAAM,WACJkO,EAAU,OACV1N,GACER,EACEI,EAAYJ,EAAOuN,aAAevN,EAAOI,WAAaJ,EAAOI,UACnE,IAAI6S,EACJ,IAAK,IAAInd,EAAI,EAAGA,EAAIoY,EAAWnY,OAAQD,GAAK,EACT,qBAAtBoY,EAAWpY,EAAI,GACpBsK,GAAa8N,EAAWpY,IAAMsK,EAAY8N,EAAWpY,EAAI,IAAMoY,EAAWpY,EAAI,GAAKoY,EAAWpY,IAAM,EACtGmd,EAAcnd,EACLsK,GAAa8N,EAAWpY,IAAMsK,EAAY8N,EAAWpY,EAAI,KAClEmd,EAAcnd,EAAI,GAEXsK,GAAa8N,EAAWpY,KACjCmd,EAAcnd,GAOlB,OAHI0K,EAAOkX,sBACLzE,EAAc,GAA4B,qBAAhBA,KAA6BA,EAAc,GAEpEA,CACT,CACA,SAAS0E,GAAkBC,GACzB,MAAM5X,EAAS/D,KACTmE,EAAYJ,EAAOuN,aAAevN,EAAOI,WAAaJ,EAAOI,WAC7D,SACJ6N,EAAQ,OACRzN,EACAyS,YAAa4E,EACbL,UAAWM,EACX/F,UAAWgG,GACT/X,EACJ,IACI+R,EADAkB,EAAc2E,EAElB,MAAMI,EAAsBC,IAC1B,IAAIT,EAAYS,EAASjY,EAAO2N,QAAQuD,aAOxC,OANIsG,EAAY,IACdA,EAAYxX,EAAO2N,QAAQG,OAAO/X,OAASyhB,GAEzCA,GAAaxX,EAAO2N,QAAQG,OAAO/X,SACrCyhB,GAAaxX,EAAO2N,QAAQG,OAAO/X,QAE9ByhB,CAAS,EAKlB,GAH2B,qBAAhBvE,IACTA,EAAcwE,GAA0BzX,IAEtCiO,EAAShV,QAAQmH,IAAc,EACjC2R,EAAY9D,EAAShV,QAAQmH,OACxB,CACL,MAAM8X,EAAO/W,KAAKE,IAAIb,EAAOiQ,mBAAoBwC,GACjDlB,EAAYmG,EAAO/W,KAAKmP,OAAO2C,EAAciF,GAAQ1X,EAAOgQ,eAC9D,CAEA,GADIuB,GAAa9D,EAASlY,SAAQgc,EAAY9D,EAASlY,OAAS,GAC5Dkd,IAAgB4E,IAAkB7X,EAAOQ,OAAOuQ,KAKlD,YAJIgB,IAAcgG,IAChB/X,EAAO+R,UAAYA,EACnB/R,EAAO9G,KAAK,qBAIhB,GAAI+Z,IAAgB4E,GAAiB7X,EAAOQ,OAAOuQ,MAAQ/Q,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAEjG,YADA5N,EAAOwX,UAAYQ,EAAoB/E,IAGzC,MAAM7D,EAAcpP,EAAOqP,MAAQ7O,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,EAGrE,IAAIkI,EACJ,GAAIxX,EAAO2N,SAAWnN,EAAOmN,QAAQC,SAAWpN,EAAOuQ,KACrDyG,EAAYQ,EAAoB/E,QAC3B,GAAI7D,EAAa,CACtB,MAAM+I,EAAqBnY,EAAO8N,OAAOmI,MAAKpU,GAAWA,EAAQqU,SAAWjD,IAC5E,IAAImF,EAAmBtL,SAASqL,EAAmBE,aAAa,2BAA4B,IACxFnQ,OAAO6E,MAAMqL,KACfA,EAAmBjX,KAAKC,IAAIpB,EAAO8N,OAAO7U,QAAQkf,GAAqB,IAEzEX,EAAYrW,KAAKmP,MAAM8H,EAAmB5X,EAAO6O,KAAKC,KACxD,MAAO,GAAItP,EAAO8N,OAAOmF,GAAc,CACrC,MAAM3B,EAAatR,EAAO8N,OAAOmF,GAAaoF,aAAa,2BAEzDb,EADElG,EACUxE,SAASwE,EAAY,IAErB2B,CAEhB,MACEuE,EAAYvE,EAEd3e,OAAO0Y,OAAOhN,EAAQ,CACpB+X,oBACAhG,YACA+F,oBACAN,YACAK,gBACA5E,gBAEEjT,EAAO4I,aACTmO,GAAQ/W,GAEVA,EAAO9G,KAAK,qBACZ8G,EAAO9G,KAAK,oBACR8G,EAAO4I,aAAe5I,EAAOQ,OAAO8X,sBAClCR,IAAsBN,GACxBxX,EAAO9G,KAAK,mBAEd8G,EAAO9G,KAAK,eAEhB,CAEA,SAASqf,GAAmBhb,EAAIib,GAC9B,MAAMxY,EAAS/D,KACTuE,EAASR,EAAOQ,OACtB,IAAIqP,EAAQtS,EAAGmZ,QAAQ,IAAIlW,EAAOuN,6BAC7B8B,GAAS7P,EAAOyK,WAAa+N,GAAQA,EAAKziB,OAAS,GAAKyiB,EAAK1V,SAASvF,IACzE,IAAIib,EAAKrf,MAAMqf,EAAKvf,QAAQsE,GAAM,EAAGib,EAAKziB,SAASyD,SAAQif,KACpD5I,GAAS4I,EAAOrW,SAAWqW,EAAOrW,QAAQ,IAAI5B,EAAOuN,8BACxD8B,EAAQ4I,EACV,IAGJ,IACInH,EADAoH,GAAa,EAEjB,GAAI7I,EACF,IAAK,IAAI/Z,EAAI,EAAGA,EAAIkK,EAAO8N,OAAO/X,OAAQD,GAAK,EAC7C,GAAIkK,EAAO8N,OAAOhY,KAAO+Z,EAAO,CAC9B6I,GAAa,EACbpH,EAAaxb,EACb,KACF,CAGJ,IAAI+Z,IAAS6I,EAUX,OAFA1Y,EAAO2Y,kBAAezZ,OACtBc,EAAO4Y,kBAAe1Z,GARtBc,EAAO2Y,aAAe9I,EAClB7P,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAC1C5N,EAAO4Y,aAAe9L,SAAS+C,EAAMwI,aAAa,2BAA4B,IAE9ErY,EAAO4Y,aAAetH,EAOtB9Q,EAAOqY,0BAA+C3Z,IAAxBc,EAAO4Y,cAA8B5Y,EAAO4Y,eAAiB5Y,EAAOiT,aACpGjT,EAAO6Y,qBAEX,CAEA,IAAIC,GAAS,CACXrM,aACAQ,eACA0F,mBACAN,qBACAsB,uBACAc,kBACAmB,uBACA+B,qBACAY,uBAGF,SAASQ,GAAmBrb,QACb,IAATA,IACFA,EAAOzB,KAAK2Q,eAAiB,IAAM,KAErC,MAAM5M,EAAS/D,MACT,OACJuE,EACA+M,aAAcC,EAAG,UACjBpN,EAAS,UACTM,GACEV,EACJ,GAAIQ,EAAOwY,iBACT,OAAOxL,GAAOpN,EAAYA,EAE5B,GAAII,EAAO2O,QACT,OAAO/O,EAET,IAAI6Y,EAAmBxb,EAAaiD,EAAWhD,GAG/C,OAFAub,GAAoBjZ,EAAOuT,wBACvB/F,IAAKyL,GAAoBA,GACtBA,GAAoB,CAC7B,CAEA,SAASC,GAAa9Y,EAAW+Y,GAC/B,MAAMnZ,EAAS/D,MAEbsR,aAAcC,EAAG,OACjBhN,EAAM,UACNE,EAAS,SACTQ,GACElB,EACJ,IAAIoZ,EAAI,EACJC,EAAI,EACR,MAAMC,EAAI,EAwBV,IAAIC,EAvBAvZ,EAAO4M,eACTwM,EAAI5L,GAAOpN,EAAYA,EAEvBiZ,EAAIjZ,EAEFI,EAAO0P,eACTkJ,EAAIjY,KAAKmP,MAAM8I,GACfC,EAAIlY,KAAKmP,MAAM+I,IAEjBrZ,EAAOwZ,kBAAoBxZ,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAO4M,eAAiBwM,EAAIC,EAC3C7Y,EAAO2O,QACTzO,EAAUV,EAAO4M,eAAiB,aAAe,aAAe5M,EAAO4M,gBAAkBwM,GAAKC,EACpF7Y,EAAOwY,mBACbhZ,EAAO4M,eACTwM,GAAKpZ,EAAOuT,wBAEZ8F,GAAKrZ,EAAOuT,wBAEd7S,EAAUlG,MAAMwD,UAAY,eAAeob,QAAQC,QAAQC,QAK7D,MAAM3E,EAAiB3U,EAAO4U,eAAiB5U,EAAOgU,eAEpDuF,EADqB,IAAnB5E,EACY,GAECvU,EAAYJ,EAAOgU,gBAAkBW,EAElD4E,IAAgBrY,GAClBlB,EAAOyU,eAAerU,GAExBJ,EAAO9G,KAAK,eAAgB8G,EAAOI,UAAW+Y,EAChD,CAEA,SAASnF,KACP,OAAQ/X,KAAKgS,SAAS,EACxB,CAEA,SAAS2G,KACP,OAAQ3Y,KAAKgS,SAAShS,KAAKgS,SAASlY,OAAS,EAC/C,CAEA,SAAS0jB,GAAYrZ,EAAWK,EAAOiZ,EAAcC,EAAiBC,QAClD,IAAdxZ,IACFA,EAAY,QAEA,IAAVK,IACFA,EAAQxE,KAAKuE,OAAOC,YAED,IAAjBiZ,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,GAEpB,MAAM3Z,EAAS/D,MACT,OACJuE,EAAM,UACNE,GACEV,EACJ,GAAIA,EAAO6Z,WAAarZ,EAAOsZ,+BAC7B,OAAO,EAET,MAAM9F,EAAehU,EAAOgU,eACtBY,EAAe5U,EAAO4U,eAC5B,IAAImF,EAKJ,GAJiDA,EAA7CJ,GAAmBvZ,EAAY4T,EAA6BA,EAAsB2F,GAAmBvZ,EAAYwU,EAA6BA,EAAiCxU,EAGnLJ,EAAOyU,eAAesF,GAClBvZ,EAAO2O,QAAS,CAClB,MAAM6K,EAAMha,EAAO4M,eACnB,GAAc,IAAVnM,EACFC,EAAUsZ,EAAM,aAAe,cAAgBD,MAC1C,CACL,IAAK/Z,EAAO6F,QAAQG,aAMlB,OALAlG,EAAqB,CACnBE,SACAC,gBAAiB8Z,EACjB7Z,KAAM8Z,EAAM,OAAS,SAEhB,EAETtZ,EAAUgB,SAAS,CACjB,CAACsY,EAAM,OAAS,QAASD,EACzBE,SAAU,UAEd,CACA,OAAO,CACT,CAiCA,OAhCc,IAAVxZ,GACFT,EAAO6S,cAAc,GACrB7S,EAAOkZ,aAAaa,GAChBL,IACF1Z,EAAO9G,KAAK,wBAAyBuH,EAAOmZ,GAC5C5Z,EAAO9G,KAAK,oBAGd8G,EAAO6S,cAAcpS,GACrBT,EAAOkZ,aAAaa,GAChBL,IACF1Z,EAAO9G,KAAK,wBAAyBuH,EAAOmZ,GAC5C5Z,EAAO9G,KAAK,oBAET8G,EAAO6Z,YACV7Z,EAAO6Z,WAAY,EACd7Z,EAAOka,oCACVla,EAAOka,kCAAoC,SAAuBthB,GAC3DoH,IAAUA,EAAO2I,WAClB/P,EAAEhD,SAAWqG,OACjB+D,EAAOU,UAAU9G,oBAAoB,gBAAiBoG,EAAOka,mCAC7Dla,EAAOka,kCAAoC,YACpCla,EAAOka,kCACdla,EAAO6Z,WAAY,EACfH,GACF1Z,EAAO9G,KAAK,iBAEhB,GAEF8G,EAAOU,UAAU/G,iBAAiB,gBAAiBqG,EAAOka,sCAGvD,CACT,CAEA,IAAI9Z,GAAY,CACd3C,aAAcsb,GACdG,gBACAlF,gBACAY,gBACA6E,gBAGF,SAAS5G,GAActS,EAAU4Y,GAC/B,MAAMnZ,EAAS/D,KACV+D,EAAOQ,OAAO2O,UACjBnP,EAAOU,UAAUlG,MAAM2f,mBAAqB,GAAG5Z,MAC/CP,EAAOU,UAAUlG,MAAM4f,gBAA+B,IAAb7Z,EAAiB,MAAQ,IAEpEP,EAAO9G,KAAK,gBAAiBqH,EAAU4Y,EACzC,CAEA,SAASkB,GAAeta,GACtB,IAAI,OACFC,EAAM,aACN0Z,EAAY,UACZY,EAAS,KACTC,GACExa,EACJ,MAAM,YACJkT,EAAW,cACX4E,GACE7X,EACJ,IAAIa,EAAMyZ,EAKV,GAJKzZ,IAC8BA,EAA7BoS,EAAc4E,EAAqB,OAAgB5E,EAAc4E,EAAqB,OAAkB,SAE9G7X,EAAO9G,KAAK,aAAaqhB,KACrBb,GAAgBzG,IAAgB4E,EAAe,CACjD,GAAY,UAARhX,EAEF,YADAb,EAAO9G,KAAK,uBAAuBqhB,KAGrCva,EAAO9G,KAAK,wBAAwBqhB,KACxB,SAAR1Z,EACFb,EAAO9G,KAAK,sBAAsBqhB,KAElCva,EAAO9G,KAAK,sBAAsBqhB,IAEtC,CACF,CAEA,SAASC,GAAgBd,EAAcY,QAChB,IAAjBZ,IACFA,GAAe,GAEjB,MAAM1Z,EAAS/D,MACT,OACJuE,GACER,EACAQ,EAAO2O,UACP3O,EAAOkV,YACT1V,EAAO2S,mBAET0H,GAAe,CACbra,SACA0Z,eACAY,YACAC,KAAM,UAEV,CAEA,SAASE,GAAcf,EAAcY,QACd,IAAjBZ,IACFA,GAAe,GAEjB,MAAM1Z,EAAS/D,MACT,OACJuE,GACER,EACJA,EAAO6Z,WAAY,EACfrZ,EAAO2O,UACXnP,EAAO6S,cAAc,GACrBwH,GAAe,CACbra,SACA0Z,eACAY,YACAC,KAAM,QAEV,CAEA,IAAIG,GAAa,CACf7H,iBACA2H,mBACAC,kBAGF,SAASE,GAAQ1O,EAAOxL,EAAOiZ,EAAcE,EAAUgB,QACvC,IAAV3O,IACFA,EAAQ,QAEW,IAAjByN,IACFA,GAAe,GAEI,kBAAVzN,IACTA,EAAQa,SAASb,EAAO,KAE1B,MAAMjM,EAAS/D,KACf,IAAIqV,EAAarF,EACbqF,EAAa,IAAGA,EAAa,GACjC,MAAM,OACJ9Q,EAAM,SACNyN,EAAQ,WACRC,EAAU,cACV2J,EAAa,YACb5E,EACA1F,aAAcC,EAAG,UACjB9M,EAAS,QACTkN,GACE5N,EACJ,IAAK4N,IAAYgM,IAAagB,GAAW5a,EAAO2I,WAAa3I,EAAO6Z,WAAarZ,EAAOsZ,+BACtF,OAAO,EAEY,qBAAVrZ,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAMyX,EAAO/W,KAAKE,IAAIrB,EAAOQ,OAAOiQ,mBAAoBa,GACxD,IAAIS,EAAYmG,EAAO/W,KAAKmP,OAAOgB,EAAa4G,GAAQlY,EAAOQ,OAAOgQ,gBAClEuB,GAAa9D,EAASlY,SAAQgc,EAAY9D,EAASlY,OAAS,GAChE,MAAMqK,GAAa6N,EAAS8D,GAE5B,GAAIvR,EAAOkX,oBACT,IAAK,IAAI5hB,EAAI,EAAGA,EAAIoY,EAAWnY,OAAQD,GAAK,EAAG,CAC7C,MAAM+kB,GAAuB1Z,KAAKmP,MAAkB,IAAZlQ,GAClC0a,EAAiB3Z,KAAKmP,MAAsB,IAAhBpC,EAAWpY,IACvCilB,EAAqB5Z,KAAKmP,MAA0B,IAApBpC,EAAWpY,EAAI,IACpB,qBAAtBoY,EAAWpY,EAAI,GACpB+kB,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HxJ,EAAaxb,EACJ+kB,GAAuBC,GAAkBD,EAAsBE,IACxEzJ,EAAaxb,EAAI,GAEV+kB,GAAuBC,IAChCxJ,EAAaxb,EAEjB,CAGF,GAAIkK,EAAO4I,aAAe0I,IAAe2B,EAAa,CACpD,IAAKjT,EAAOgb,iBAAmBxN,EAAMpN,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOgU,eAAiB5T,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOgU,gBAC1J,OAAO,EAET,IAAKhU,EAAOib,gBAAkB7a,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAO4U,iBAC1E3B,GAAe,KAAO3B,EACzB,OAAO,CAGb,CAOA,IAAIgJ,EANAhJ,KAAgBuG,GAAiB,IAAM6B,GACzC1Z,EAAO9G,KAAK,0BAId8G,EAAOyU,eAAerU,GAEQka,EAA1BhJ,EAAa2B,EAAyB,OAAgB3B,EAAa2B,EAAyB,OAAwB,QAGxH,MAAMvF,EAAY1N,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QACpDsN,EAAmBxN,GAAakN,EAEtC,IAAKM,IAAqB1N,IAAQpN,IAAcJ,EAAOI,YAAcoN,GAAOpN,IAAcJ,EAAOI,WAc/F,OAbAJ,EAAO2X,kBAAkBrG,GAErB9Q,EAAOkV,YACT1V,EAAO2S,mBAET3S,EAAO4V,sBACe,UAAlBpV,EAAOkQ,QACT1Q,EAAOkZ,aAAa9Y,GAEJ,UAAdka,IACFta,EAAOwa,gBAAgBd,EAAcY,GACrCta,EAAOya,cAAcf,EAAcY,KAE9B,EAET,GAAI9Z,EAAO2O,QAAS,CAClB,MAAM6K,EAAMha,EAAO4M,eACbjU,EAAI6U,EAAMpN,GAAaA,EAC7B,GAAc,IAAVK,EACEiN,IACF1N,EAAOU,UAAUlG,MAAMmG,eAAiB,OACxCX,EAAOmb,mBAAoB,GAEzBzN,IAAc1N,EAAOob,2BAA6Bpb,EAAOQ,OAAO6a,aAAe,GACjFrb,EAAOob,2BAA4B,EACnC3e,uBAAsB,KACpBiE,EAAUsZ,EAAM,aAAe,aAAerhB,CAAC,KAGjD+H,EAAUsZ,EAAM,aAAe,aAAerhB,EAE5C+U,GACFjR,uBAAsB,KACpBuD,EAAOU,UAAUlG,MAAMmG,eAAiB,GACxCX,EAAOmb,mBAAoB,CAAK,QAG/B,CACL,IAAKnb,EAAO6F,QAAQG,aAMlB,OALAlG,EAAqB,CACnBE,SACAC,eAAgBtH,EAChBuH,KAAM8Z,EAAM,OAAS,SAEhB,EAETtZ,EAAUgB,SAAS,CACjB,CAACsY,EAAM,OAAS,OAAQrhB,EACxBshB,SAAU,UAEd,CACA,OAAO,CACT,CACA,MAAMtU,EAAU2C,IACVV,EAAWjC,EAAQiC,SA0BzB,OAzBI8F,IAAckN,GAAWhT,GAAY5H,EAAOyK,WAC9CzK,EAAO2N,QAAQmL,QAAO,GAAO,EAAOxH,GAEtCtR,EAAO6S,cAAcpS,GACrBT,EAAOkZ,aAAa9Y,GACpBJ,EAAO2X,kBAAkBrG,GACzBtR,EAAO4V,sBACP5V,EAAO9G,KAAK,wBAAyBuH,EAAOmZ,GAC5C5Z,EAAOwa,gBAAgBd,EAAcY,GACvB,IAAV7Z,EACFT,EAAOya,cAAcf,EAAcY,GACzBta,EAAO6Z,YACjB7Z,EAAO6Z,WAAY,EACd7Z,EAAOsb,gCACVtb,EAAOsb,8BAAgC,SAAuB1iB,GACvDoH,IAAUA,EAAO2I,WAClB/P,EAAEhD,SAAWqG,OACjB+D,EAAOU,UAAU9G,oBAAoB,gBAAiBoG,EAAOsb,+BAC7Dtb,EAAOsb,8BAAgC,YAChCtb,EAAOsb,8BACdtb,EAAOya,cAAcf,EAAcY,GACrC,GAEFta,EAAOU,UAAU/G,iBAAiB,gBAAiBqG,EAAOsb,iCAErD,CACT,CAEA,SAASC,GAAYtP,EAAOxL,EAAOiZ,EAAcE,GAO/C,QANc,IAAV3N,IACFA,EAAQ,QAEW,IAAjByN,IACFA,GAAe,GAEI,kBAAVzN,EAAoB,CAC7B,MAAMuP,EAAgB1O,SAASb,EAAO,IACtCA,EAAQuP,CACV,CACA,MAAMxb,EAAS/D,KACf,GAAI+D,EAAO2I,UAAW,OACD,qBAAVlI,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAM2O,EAAcpP,EAAOqP,MAAQrP,EAAOQ,OAAO6O,MAAQrP,EAAOQ,OAAO6O,KAAKC,KAAO,EACnF,IAAImM,EAAWxP,EACf,GAAIjM,EAAOQ,OAAOuQ,KAChB,GAAI/Q,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAE1C6N,GAAsBzb,EAAO2N,QAAQuD,iBAChC,CACL,IAAIwK,EACJ,GAAItM,EAAa,CACf,MAAMkC,EAAamK,EAAWzb,EAAOQ,OAAO6O,KAAKC,KACjDoM,EAAmB1b,EAAO8N,OAAOmI,MAAKpU,GAA6D,EAAlDA,EAAQwW,aAAa,6BAAmC/G,IAAY4E,MACvH,MACEwF,EAAmB1b,EAAO+S,oBAAoB0I,GAEhD,MAAME,EAAOvM,EAAcjO,KAAK8P,KAAKjR,EAAO8N,OAAO/X,OAASiK,EAAOQ,OAAO6O,KAAKC,MAAQtP,EAAO8N,OAAO/X,QAC/F,eACJmZ,GACElP,EAAOQ,OACX,IAAImP,EAAgB3P,EAAOQ,OAAOmP,cACZ,SAAlBA,EACFA,EAAgB3P,EAAOkX,wBAEvBvH,EAAgBxO,KAAK8P,KAAKvS,WAAWsB,EAAOQ,OAAOmP,cAAe,KAC9DT,GAAkBS,EAAgB,IAAM,IAC1CA,GAAgC,IAGpC,IAAIiM,EAAcD,EAAOD,EAAmB/L,EAO5C,GANIT,IACF0M,EAAcA,GAAeF,EAAmBva,KAAK8P,KAAKtB,EAAgB,IAExEiK,GAAY1K,GAAkD,SAAhClP,EAAOQ,OAAOmP,gBAA6BP,IAC3EwM,GAAc,GAEZA,EAAa,CACf,MAAMtB,EAAYpL,EAAiBwM,EAAmB1b,EAAOiT,YAAc,OAAS,OAASyI,EAAmB1b,EAAOiT,YAAc,EAAIjT,EAAOQ,OAAOmP,cAAgB,OAAS,OAChL3P,EAAO6b,QAAQ,CACbvB,YACAK,SAAS,EACTvC,iBAAgC,SAAdkC,EAAuBoB,EAAmB,EAAIA,EAAmBC,EAAO,EAC1FG,eAA8B,SAAdxB,EAAuBta,EAAOwX,eAAYtY,GAE9D,CACA,GAAIkQ,EAAa,CACf,MAAMkC,EAAamK,EAAWzb,EAAOQ,OAAO6O,KAAKC,KACjDmM,EAAWzb,EAAO8N,OAAOmI,MAAKpU,GAA6D,EAAlDA,EAAQwW,aAAa,6BAAmC/G,IAAY4E,MAC/G,MACEuF,EAAWzb,EAAO+S,oBAAoB0I,EAE1C,CAKF,OAHAhf,uBAAsB,KACpBuD,EAAO2a,QAAQc,EAAUhb,EAAOiZ,EAAcE,EAAS,IAElD5Z,CACT,CAGA,SAAS+b,GAAUtb,EAAOiZ,EAAcE,QACjB,IAAjBF,IACFA,GAAe,GAEjB,MAAM1Z,EAAS/D,MACT,QACJ2R,EAAO,OACPpN,EAAM,UACNqZ,GACE7Z,EACJ,IAAK4N,GAAW5N,EAAO2I,UAAW,OAAO3I,EACpB,qBAAVS,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,IAAIub,EAAWxb,EAAOgQ,eACO,SAAzBhQ,EAAOmP,eAAsD,IAA1BnP,EAAOgQ,gBAAwBhQ,EAAOyb,qBAC3ED,EAAW7a,KAAKC,IAAIpB,EAAOkX,qBAAqB,WAAW,GAAO,IAEpE,MAAMgF,EAAYlc,EAAOiT,YAAczS,EAAOiQ,mBAAqB,EAAIuL,EACjEtO,EAAY1N,EAAO2N,SAAWnN,EAAOmN,QAAQC,QACnD,GAAIpN,EAAOuQ,KAAM,CACf,GAAI8I,IAAcnM,GAAalN,EAAO2b,oBAAqB,OAAO,EAMlE,GALAnc,EAAO6b,QAAQ,CACbvB,UAAW,SAGbta,EAAOoc,YAAcpc,EAAOU,UAAUiD,WAClC3D,EAAOiT,cAAgBjT,EAAO8N,OAAO/X,OAAS,GAAKyK,EAAO2O,QAI5D,OAHA1S,uBAAsB,KACpBuD,EAAO2a,QAAQ3a,EAAOiT,YAAciJ,EAAWzb,EAAOiZ,EAAcE,EAAS,KAExE,CAEX,CACA,OAAIpZ,EAAO+W,QAAUvX,EAAO8U,MACnB9U,EAAO2a,QAAQ,EAAGla,EAAOiZ,EAAcE,GAEzC5Z,EAAO2a,QAAQ3a,EAAOiT,YAAciJ,EAAWzb,EAAOiZ,EAAcE,EAC7E,CAGA,SAASyC,GAAU5b,EAAOiZ,EAAcE,QACjB,IAAjBF,IACFA,GAAe,GAEjB,MAAM1Z,EAAS/D,MACT,OACJuE,EAAM,SACNyN,EAAQ,WACRC,EAAU,aACVX,EAAY,QACZK,EAAO,UACPiM,GACE7Z,EACJ,IAAK4N,GAAW5N,EAAO2I,UAAW,OAAO3I,EACpB,qBAAVS,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAMiN,EAAY1N,EAAO2N,SAAWnN,EAAOmN,QAAQC,QACnD,GAAIpN,EAAOuQ,KAAM,CACf,GAAI8I,IAAcnM,GAAalN,EAAO2b,oBAAqB,OAAO,EAClEnc,EAAO6b,QAAQ,CACbvB,UAAW,SAGbta,EAAOoc,YAAcpc,EAAOU,UAAUiD,UACxC,CACA,MAAMvD,EAAYmN,EAAevN,EAAOI,WAAaJ,EAAOI,UAC5D,SAASkc,EAAUC,GACjB,OAAIA,EAAM,GAAWpb,KAAKmP,MAAMnP,KAAKuE,IAAI6W,IAClCpb,KAAKmP,MAAMiM,EACpB,CACA,MAAM1B,EAAsByB,EAAUlc,GAChCoc,EAAqBvO,EAAS7U,KAAImjB,GAAOD,EAAUC,KACnDE,EAAajc,EAAOkc,UAAYlc,EAAOkc,SAAS9O,QACtD,IAAI+O,EAAW1O,EAASuO,EAAmBvjB,QAAQ4hB,GAAuB,GAC1E,GAAwB,qBAAb8B,IAA6Bnc,EAAO2O,SAAWsN,GAAa,CACrE,IAAIG,EACJ3O,EAASzU,SAAQ,CAACmY,EAAMI,KAClB8I,GAAuBlJ,IAEzBiL,EAAgB7K,EAClB,IAE2B,qBAAlB6K,IACTD,EAAWF,EAAaxO,EAAS2O,GAAiB3O,EAAS2O,EAAgB,EAAIA,EAAgB,EAAIA,GAEvG,CACA,IAAIC,EAAY,EAShB,GARwB,qBAAbF,IACTE,EAAY3O,EAAWjV,QAAQ0jB,GAC3BE,EAAY,IAAGA,EAAY7c,EAAOiT,YAAc,GACvB,SAAzBzS,EAAOmP,eAAsD,IAA1BnP,EAAOgQ,gBAAwBhQ,EAAOyb,qBAC3EY,EAAYA,EAAY7c,EAAOkX,qBAAqB,YAAY,GAAQ,EACxE2F,EAAY1b,KAAKC,IAAIyb,EAAW,KAGhCrc,EAAO+W,QAAUvX,EAAO6U,YAAa,CACvC,MAAMiI,EAAY9c,EAAOQ,OAAOmN,SAAW3N,EAAOQ,OAAOmN,QAAQC,SAAW5N,EAAO2N,QAAU3N,EAAO2N,QAAQG,OAAO/X,OAAS,EAAIiK,EAAO8N,OAAO/X,OAAS,EACvJ,OAAOiK,EAAO2a,QAAQmC,EAAWrc,EAAOiZ,EAAcE,EACxD,CAAO,OAAIpZ,EAAOuQ,MAA+B,IAAvB/Q,EAAOiT,aAAqBzS,EAAO2O,SAC3D1S,uBAAsB,KACpBuD,EAAO2a,QAAQkC,EAAWpc,EAAOiZ,EAAcE,EAAS,KAEnD,GAEF5Z,EAAO2a,QAAQkC,EAAWpc,EAAOiZ,EAAcE,EACxD,CAGA,SAASmD,GAAWtc,EAAOiZ,EAAcE,QAClB,IAAjBF,IACFA,GAAe,GAEjB,MAAM1Z,EAAS/D,KACf,IAAI+D,EAAO2I,UAIX,MAHqB,qBAAVlI,IACTA,EAAQT,EAAOQ,OAAOC,OAEjBT,EAAO2a,QAAQ3a,EAAOiT,YAAaxS,EAAOiZ,EAAcE,EACjE,CAGA,SAASoD,GAAevc,EAAOiZ,EAAcE,EAAUqD,QAChC,IAAjBvD,IACFA,GAAe,QAEC,IAAduD,IACFA,EAAY,IAEd,MAAMjd,EAAS/D,KACf,GAAI+D,EAAO2I,UAAW,OACD,qBAAVlI,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,IAAIwL,EAAQjM,EAAOiT,YACnB,MAAMiF,EAAO/W,KAAKE,IAAIrB,EAAOQ,OAAOiQ,mBAAoBxE,GAClD8F,EAAYmG,EAAO/W,KAAKmP,OAAOrE,EAAQiM,GAAQlY,EAAOQ,OAAOgQ,gBAC7DpQ,EAAYJ,EAAOuN,aAAevN,EAAOI,WAAaJ,EAAOI,UACnE,GAAIA,GAAaJ,EAAOiO,SAAS8D,GAAY,CAG3C,MAAMmL,EAAcld,EAAOiO,SAAS8D,GAC9BoL,EAAWnd,EAAOiO,SAAS8D,EAAY,GACzC3R,EAAY8c,GAAeC,EAAWD,GAAeD,IACvDhR,GAASjM,EAAOQ,OAAOgQ,eAE3B,KAAO,CAGL,MAAMmM,EAAW3c,EAAOiO,SAAS8D,EAAY,GACvCmL,EAAcld,EAAOiO,SAAS8D,GAChC3R,EAAYuc,IAAaO,EAAcP,GAAYM,IACrDhR,GAASjM,EAAOQ,OAAOgQ,eAE3B,CAGA,OAFAvE,EAAQ9K,KAAKC,IAAI6K,EAAO,GACxBA,EAAQ9K,KAAKE,IAAI4K,EAAOjM,EAAOkO,WAAWnY,OAAS,GAC5CiK,EAAO2a,QAAQ1O,EAAOxL,EAAOiZ,EAAcE,EACpD,CAEA,SAASf,KACP,MAAM7Y,EAAS/D,KACf,GAAI+D,EAAO2I,UAAW,OACtB,MAAM,OACJnI,EAAM,SACN6M,GACErN,EACE2P,EAAyC,SAAzBnP,EAAOmP,cAA2B3P,EAAOkX,uBAAyB1W,EAAOmP,cAC/F,IACI6H,EADA4F,EAAepd,EAAO4Y,aAE1B,MAAMnC,EAAgBzW,EAAOyK,UAAY,eAAiB,IAAIjK,EAAOuN,aACrE,GAAIvN,EAAOuQ,KAAM,CACf,GAAI/Q,EAAO6Z,UAAW,OACtBrC,EAAY1K,SAAS9M,EAAO2Y,aAAaN,aAAa,2BAA4B,IAC9E7X,EAAO0O,eACLkO,EAAepd,EAAOqd,aAAe1N,EAAgB,GAAKyN,EAAepd,EAAO8N,OAAO/X,OAASiK,EAAOqd,aAAe1N,EAAgB,GACxI3P,EAAO6b,UACPuB,EAAepd,EAAOsd,cAAcvb,EAAgBsL,EAAU,GAAGoJ,8BAA0Ce,OAAe,IAC1Hpa,GAAS,KACP4C,EAAO2a,QAAQyC,EAAa,KAG9Bpd,EAAO2a,QAAQyC,GAERA,EAAepd,EAAO8N,OAAO/X,OAAS4Z,GAC/C3P,EAAO6b,UACPuB,EAAepd,EAAOsd,cAAcvb,EAAgBsL,EAAU,GAAGoJ,8BAA0Ce,OAAe,IAC1Hpa,GAAS,KACP4C,EAAO2a,QAAQyC,EAAa,KAG9Bpd,EAAO2a,QAAQyC,EAEnB,MACEpd,EAAO2a,QAAQyC,EAEnB,CAEA,IAAIvN,GAAQ,CACV8K,WACAY,eACAQ,aACAM,aACAU,cACAC,kBACAnE,wBAGF,SAAS0E,GAAWzB,GAClB,MAAM9b,EAAS/D,MACT,OACJuE,EAAM,SACN6M,GACErN,EACJ,IAAKQ,EAAOuQ,MAAQ/Q,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAS,OACrE,MAAM4B,EAAa,KACjB,MAAM1B,EAAS/L,EAAgBsL,EAAU,IAAI7M,EAAOuN,4BACpDD,EAAOtU,SAAQ,CAAC+D,EAAI0O,KAClB1O,EAAG9C,aAAa,0BAA2BwR,EAAM,GACjD,EAEEmD,EAAcpP,EAAOqP,MAAQ7O,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,EAC/DkB,EAAiBhQ,EAAOgQ,gBAAkBpB,EAAc5O,EAAO6O,KAAKC,KAAO,GAC3EkO,EAAkBxd,EAAO8N,OAAO/X,OAASya,IAAmB,EAC5DiN,EAAiBrO,GAAepP,EAAO8N,OAAO/X,OAASyK,EAAO6O,KAAKC,OAAS,EAC5EoO,EAAiBC,IACrB,IAAK,IAAI7nB,EAAI,EAAGA,EAAI6nB,EAAgB7nB,GAAK,EAAG,CAC1C,MAAM+L,EAAU7B,EAAOyK,UAAYpQ,EAAc,eAAgB,CAACmG,EAAOod,kBAAoBvjB,EAAc,MAAO,CAACmG,EAAOuN,WAAYvN,EAAOod,kBAC7I5d,EAAOqN,SAASwQ,OAAOhc,EACzB,GAEF,GAAI2b,EAAiB,CACnB,GAAIhd,EAAOsd,mBAAoB,CAC7B,MAAMC,EAAcvN,EAAiBxQ,EAAO8N,OAAO/X,OAASya,EAC5DkN,EAAeK,GACf/d,EAAOge,eACPhe,EAAOiN,cACT,MACElK,EAAY,mLAEdyM,GACF,MAAO,GAAIiO,EAAgB,CACzB,GAAIjd,EAAOsd,mBAAoB,CAC7B,MAAMC,EAAcvd,EAAO6O,KAAKC,KAAOtP,EAAO8N,OAAO/X,OAASyK,EAAO6O,KAAKC,KAC1EoO,EAAeK,GACf/d,EAAOge,eACPhe,EAAOiN,cACT,MACElK,EAAY,8KAEdyM,GACF,MACEA,IAEFxP,EAAO6b,QAAQ,CACbC,iBACAxB,UAAW9Z,EAAO0O,oBAAiBhQ,EAAY,QAEnD,CAEA,SAAS2c,GAAQvV,GACf,IAAI,eACFwV,EAAc,QACdnB,GAAU,EAAI,UACdL,EAAS,aACTpB,EAAY,iBACZd,EAAgB,aAChBe,EAAY,aACZ8E,QACY,IAAV3X,EAAmB,CAAC,EAAIA,EAC5B,MAAMtG,EAAS/D,KACf,IAAK+D,EAAOQ,OAAOuQ,KAAM,OACzB/Q,EAAO9G,KAAK,iBACZ,MAAM,OACJ4U,EAAM,eACNmN,EAAc,eACdD,EAAc,SACd3N,EAAQ,OACR7M,GACER,GACE,eACJkP,GACE1O,EAGJ,GAFAR,EAAOib,gBAAiB,EACxBjb,EAAOgb,gBAAiB,EACpBhb,EAAO2N,SAAWnN,EAAOmN,QAAQC,QAanC,OAZI+M,IACGna,EAAO0O,gBAAuC,IAArBlP,EAAO+R,UAE1BvR,EAAO0O,gBAAkBlP,EAAO+R,UAAYvR,EAAOmP,cAC5D3P,EAAO2a,QAAQ3a,EAAO2N,QAAQG,OAAO/X,OAASiK,EAAO+R,UAAW,GAAG,GAAO,GACjE/R,EAAO+R,YAAc/R,EAAOiO,SAASlY,OAAS,GACvDiK,EAAO2a,QAAQ3a,EAAO2N,QAAQuD,aAAc,GAAG,GAAO,GAJtDlR,EAAO2a,QAAQ3a,EAAO2N,QAAQG,OAAO/X,OAAQ,GAAG,GAAO,IAO3DiK,EAAOib,eAAiBA,EACxBjb,EAAOgb,eAAiBA,OACxBhb,EAAO9G,KAAK,WAGd,IAAIyW,EAAgBnP,EAAOmP,cACL,SAAlBA,EACFA,EAAgB3P,EAAOkX,wBAEvBvH,EAAgBxO,KAAK8P,KAAKvS,WAAW8B,EAAOmP,cAAe,KACvDT,GAAkBS,EAAgB,IAAM,IAC1CA,GAAgC,IAGpC,MAAMa,EAAiBhQ,EAAOyb,mBAAqBtM,EAAgBnP,EAAOgQ,eAC1E,IAAI6M,EAAe7M,EACf6M,EAAe7M,IAAmB,IACpC6M,GAAgB7M,EAAiB6M,EAAe7M,GAElD6M,GAAgB7c,EAAO0d,qBACvBle,EAAOqd,aAAeA,EACtB,MAAMjO,EAAcpP,EAAOqP,MAAQ7O,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,EACjExB,EAAO/X,OAAS4Z,EAAgB0N,EAClCta,EAAY,6OACHqM,GAAoC,QAArB5O,EAAO6O,KAAK8O,MACpCpb,EAAY,2EAEd,MAAMqb,EAAuB,GACvBC,EAAsB,GAC5B,IAAIpL,EAAcjT,EAAOiT,YACO,qBAArBmF,EACTA,EAAmBpY,EAAOsd,cAAcxP,EAAOmI,MAAK1Y,GAAMA,EAAG8F,UAAUR,SAASrC,EAAO2V,qBAEvFlD,EAAcmF,EAEhB,MAAMkG,EAAuB,SAAdhE,IAAyBA,EAClCiE,EAAuB,SAAdjE,IAAyBA,EACxC,IAAIkE,EAAkB,EAClBC,EAAiB,EACrB,MAAM9C,EAAOvM,EAAcjO,KAAK8P,KAAKnD,EAAO/X,OAASyK,EAAO6O,KAAKC,MAAQxB,EAAO/X,OAC1E2oB,EAAiBtP,EAActB,EAAOsK,GAAkBlC,OAASkC,EACjEuG,EAA0BD,GAAkBxP,GAA0C,qBAAjBgK,GAAgCvJ,EAAgB,EAAI,GAAM,GAErI,GAAIgP,EAA0BtB,EAAc,CAC1CmB,EAAkBrd,KAAKC,IAAIic,EAAesB,EAAyBnO,GACnE,IAAK,IAAI1a,EAAI,EAAGA,EAAIunB,EAAesB,EAAyB7oB,GAAK,EAAG,CAClE,MAAMmW,EAAQnW,EAAIqL,KAAKmP,MAAMxa,EAAI6lB,GAAQA,EACzC,GAAIvM,EAAa,CACf,MAAMwP,EAAoBjD,EAAO1P,EAAQ,EACzC,IAAK,IAAInW,EAAIgY,EAAO/X,OAAS,EAAGD,GAAK,EAAGA,GAAK,EACvCgY,EAAOhY,GAAGogB,SAAW0I,GAAmBR,EAAqB/lB,KAAKvC,EAK1E,MACEsoB,EAAqB/lB,KAAKsjB,EAAO1P,EAAQ,EAE7C,CACF,MAAO,GAAI0S,EAA0BhP,EAAgBgM,EAAO0B,EAAc,CACxEoB,EAAiBtd,KAAKC,IAAIud,GAA2BhD,EAAsB,EAAf0B,GAAmB7M,GAC/E,IAAK,IAAI1a,EAAI,EAAGA,EAAI2oB,EAAgB3oB,GAAK,EAAG,CAC1C,MAAMmW,EAAQnW,EAAIqL,KAAKmP,MAAMxa,EAAI6lB,GAAQA,EACrCvM,EACFtB,EAAOtU,SAAQ,CAACqW,EAAOyB,KACjBzB,EAAMqG,SAAWjK,GAAOoS,EAAoBhmB,KAAKiZ,EAAW,IAGlE+M,EAAoBhmB,KAAK4T,EAE7B,CACF,CA8BA,GA7BAjM,EAAOqK,qBAAsB,EAC7B5N,uBAAsB,KACpBuD,EAAOqK,qBAAsB,CAAK,IAEhCkU,GACFH,EAAqB5kB,SAAQyS,IAC3B6B,EAAO7B,GAAO4S,mBAAoB,EAClCxR,EAASyR,QAAQhR,EAAO7B,IACxB6B,EAAO7B,GAAO4S,mBAAoB,CAAK,IAGvCP,GACFD,EAAoB7kB,SAAQyS,IAC1B6B,EAAO7B,GAAO4S,mBAAoB,EAClCxR,EAASwQ,OAAO/P,EAAO7B,IACvB6B,EAAO7B,GAAO4S,mBAAoB,CAAK,IAG3C7e,EAAOge,eACsB,SAAzBxd,EAAOmP,cACT3P,EAAOiN,eACEmC,IAAgBgP,EAAqBroB,OAAS,GAAKwoB,GAAUF,EAAoBtoB,OAAS,GAAKuoB,IACxGte,EAAO8N,OAAOtU,SAAQ,CAACqW,EAAOyB,KAC5BtR,EAAOqP,KAAKS,YAAYwB,EAAYzB,EAAO7P,EAAO8N,OAAO,IAGzDtN,EAAO4R,qBACTpS,EAAOqS,qBAELsI,EACF,GAAIyD,EAAqBroB,OAAS,GAAKwoB,GACrC,GAA8B,qBAAnBzC,EAAgC,CACzC,MAAMiD,EAAwB/e,EAAOkO,WAAW+E,GAC1C+L,EAAoBhf,EAAOkO,WAAW+E,EAAcuL,GACpDS,EAAOD,EAAoBD,EAC7Bd,EACFje,EAAOkZ,aAAalZ,EAAOI,UAAY6e,IAEvCjf,EAAO2a,QAAQ1H,EAAc9R,KAAK8P,KAAKuN,GAAkB,GAAG,GAAO,GAC/DtF,IACFlZ,EAAOkf,gBAAgBC,eAAiBnf,EAAOkf,gBAAgBC,eAAiBF,EAChFjf,EAAOkf,gBAAgBjG,iBAAmBjZ,EAAOkf,gBAAgBjG,iBAAmBgG,GAG1F,MACE,GAAI/F,EAAc,CAChB,MAAMzW,EAAQ2M,EAAcgP,EAAqBroB,OAASyK,EAAO6O,KAAKC,KAAO8O,EAAqBroB,OAClGiK,EAAO2a,QAAQ3a,EAAOiT,YAAcxQ,EAAO,GAAG,GAAO,GACrDzC,EAAOkf,gBAAgBjG,iBAAmBjZ,EAAOI,SACnD,OAEG,GAAIie,EAAoBtoB,OAAS,GAAKuoB,EAC3C,GAA8B,qBAAnBxC,EAAgC,CACzC,MAAMiD,EAAwB/e,EAAOkO,WAAW+E,GAC1C+L,EAAoBhf,EAAOkO,WAAW+E,EAAcwL,GACpDQ,EAAOD,EAAoBD,EAC7Bd,EACFje,EAAOkZ,aAAalZ,EAAOI,UAAY6e,IAEvCjf,EAAO2a,QAAQ1H,EAAcwL,EAAgB,GAAG,GAAO,GACnDvF,IACFlZ,EAAOkf,gBAAgBC,eAAiBnf,EAAOkf,gBAAgBC,eAAiBF,EAChFjf,EAAOkf,gBAAgBjG,iBAAmBjZ,EAAOkf,gBAAgBjG,iBAAmBgG,GAG1F,KAAO,CACL,MAAMxc,EAAQ2M,EAAciP,EAAoBtoB,OAASyK,EAAO6O,KAAKC,KAAO+O,EAAoBtoB,OAChGiK,EAAO2a,QAAQ3a,EAAOiT,YAAcxQ,EAAO,GAAG,GAAO,EACvD,CAKJ,GAFAzC,EAAOib,eAAiBA,EACxBjb,EAAOgb,eAAiBA,EACpBhb,EAAOof,YAAcpf,EAAOof,WAAWC,UAAYlG,EAAc,CACnE,MAAMmG,EAAa,CACjBxD,iBACAxB,YACApB,eACAd,mBACAe,cAAc,GAEZxhB,MAAMC,QAAQoI,EAAOof,WAAWC,SAClCrf,EAAOof,WAAWC,QAAQ7lB,SAAQ0D,KAC3BA,EAAEyL,WAAazL,EAAEsD,OAAOuQ,MAAM7T,EAAE2e,QAAQ,IACxCyD,EACH3E,QAASzd,EAAEsD,OAAOmP,gBAAkBnP,EAAOmP,eAAgBgL,GAC3D,IAEK3a,EAAOof,WAAWC,mBAAmBrf,EAAO5I,aAAe4I,EAAOof,WAAWC,QAAQ7e,OAAOuQ,MACrG/Q,EAAOof,WAAWC,QAAQxD,QAAQ,IAC7ByD,EACH3E,QAAS3a,EAAOof,WAAWC,QAAQ7e,OAAOmP,gBAAkBnP,EAAOmP,eAAgBgL,GAGzF,CACA3a,EAAO9G,KAAK,UACd,CAEA,SAASqmB,KACP,MAAMvf,EAAS/D,MACT,OACJuE,EAAM,SACN6M,GACErN,EACJ,IAAKQ,EAAOuQ,MAAQ/Q,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAS,OACrE5N,EAAOge,eACP,MAAMwB,EAAiB,GACvBxf,EAAO8N,OAAOtU,SAAQqI,IACpB,MAAMoK,EAA4C,qBAA7BpK,EAAQ4d,iBAAqF,EAAlD5d,EAAQwW,aAAa,2BAAiCxW,EAAQ4d,iBAC9HD,EAAevT,GAASpK,CAAO,IAEjC7B,EAAO8N,OAAOtU,SAAQqI,IACpBA,EAAQiV,gBAAgB,0BAA0B,IAEpD0I,EAAehmB,SAAQqI,IACrBwL,EAASwQ,OAAOhc,EAAQ,IAE1B7B,EAAOge,eACPhe,EAAO2a,QAAQ3a,EAAOwX,UAAW,EACnC,CAEA,IAAIzG,GAAO,CACTwM,cACA1B,WACA0D,gBAGF,SAASG,GAAcC,GACrB,MAAM3f,EAAS/D,KACf,IAAK+D,EAAOQ,OAAOof,eAAiB5f,EAAOQ,OAAO0R,eAAiBlS,EAAO6f,UAAY7f,EAAOQ,OAAO2O,QAAS,OAC7G,MAAM5R,EAAyC,cAApCyC,EAAOQ,OAAOsf,kBAAoC9f,EAAOzC,GAAKyC,EAAOU,UAC5EV,EAAOyK,YACTzK,EAAOqK,qBAAsB,GAE/B9M,EAAG/C,MAAMulB,OAAS,OAClBxiB,EAAG/C,MAAMulB,OAASJ,EAAS,WAAa,OACpC3f,EAAOyK,WACThO,uBAAsB,KACpBuD,EAAOqK,qBAAsB,CAAK,GAGxC,CAEA,SAAS2V,KACP,MAAMhgB,EAAS/D,KACX+D,EAAOQ,OAAO0R,eAAiBlS,EAAO6f,UAAY7f,EAAOQ,OAAO2O,UAGhEnP,EAAOyK,YACTzK,EAAOqK,qBAAsB,GAE/BrK,EAA2C,cAApCA,EAAOQ,OAAOsf,kBAAoC,KAAO,aAAatlB,MAAMulB,OAAS,GACxF/f,EAAOyK,WACThO,uBAAsB,KACpBuD,EAAOqK,qBAAsB,CAAK,IAGxC,CAEA,IAAI4V,GAAa,CACfP,iBACAM,oBAIF,SAASE,GAAeje,EAAUke,GAIhC,SAASC,EAAc7iB,GACrB,IAAKA,GAAMA,IAAOjC,KAAiBiC,IAAOX,IAAa,OAAO,KAC1DW,EAAG8iB,eAAc9iB,EAAKA,EAAG8iB,cAC7B,MAAMC,EAAQ/iB,EAAGmZ,QAAQzU,GACzB,OAAKqe,GAAU/iB,EAAGgjB,YAGXD,GAASF,EAAc7iB,EAAGgjB,cAAcxlB,MAFtC,IAGX,CACA,YAZa,IAATolB,IACFA,EAAOlkB,MAWFmkB,EAAcD,EACvB,CACA,SAASK,GAAiBxgB,EAAQuL,EAAOkV,GACvC,MAAM5pB,EAAS+F,KACT,OACJ4D,GACER,EACE0gB,EAAqBlgB,EAAOkgB,mBAC5BC,EAAqBngB,EAAOmgB,mBAClC,OAAID,KAAuBD,GAAUE,GAAsBF,GAAU5pB,EAAO+pB,WAAaD,IAC5D,YAAvBD,IACFnV,EAAMsV,kBACC,EAKb,CACA,SAASC,GAAavV,GACpB,MAAMvL,EAAS/D,KACTjI,EAAWsH,IACjB,IAAI1C,EAAI2S,EACJ3S,EAAEmoB,gBAAenoB,EAAIA,EAAEmoB,eAC3B,MAAM5U,EAAOnM,EAAOkf,gBACpB,GAAe,gBAAXtmB,EAAEooB,KAAwB,CAC5B,GAAuB,OAAnB7U,EAAK8U,WAAsB9U,EAAK8U,YAAcroB,EAAEqoB,UAClD,OAEF9U,EAAK8U,UAAYroB,EAAEqoB,SACrB,KAAsB,eAAXroB,EAAEooB,MAAoD,IAA3BpoB,EAAEsoB,cAAcnrB,SACpDoW,EAAKgV,QAAUvoB,EAAEsoB,cAAc,GAAGE,YAEpC,GAAe,eAAXxoB,EAAEooB,KAGJ,YADAR,GAAiBxgB,EAAQpH,EAAGA,EAAEsoB,cAAc,GAAGG,OAGjD,MAAM,OACJ7gB,EAAM,QACN8gB,EAAO,QACP1T,GACE5N,EACJ,IAAK4N,EAAS,OACd,IAAKpN,EAAOof,eAAmC,UAAlBhnB,EAAE2oB,YAAyB,OACxD,GAAIvhB,EAAO6Z,WAAarZ,EAAOsZ,+BAC7B,QAEG9Z,EAAO6Z,WAAarZ,EAAO2O,SAAW3O,EAAOuQ,MAChD/Q,EAAO6b,UAET,IAAI2F,EAAW5oB,EAAEhD,OACjB,GAAiC,YAA7B4K,EAAOsf,oBACJpd,EAAiB8e,EAAUxhB,EAAOU,WAAY,OAErD,GAAI,UAAW9H,GAAiB,IAAZA,EAAE6oB,MAAa,OACnC,GAAI,WAAY7oB,GAAKA,EAAE8oB,OAAS,EAAG,OACnC,GAAIvV,EAAKwV,WAAaxV,EAAKyV,QAAS,OAGpC,MAAMC,IAAyBrhB,EAAOshB,gBAA4C,KAA1BthB,EAAOshB,eAEzDC,EAAYnpB,EAAEopB,aAAeppB,EAAEopB,eAAiBppB,EAAE4f,KACpDqJ,GAAwBjpB,EAAEhD,QAAUgD,EAAEhD,OAAOkM,YAAcigB,IAC7DP,EAAWO,EAAU,IAEvB,MAAME,EAAoBzhB,EAAOyhB,kBAAoBzhB,EAAOyhB,kBAAoB,IAAIzhB,EAAOshB,iBACrFI,KAAoBtpB,EAAEhD,SAAUgD,EAAEhD,OAAOkM,YAG/C,GAAItB,EAAO2hB,YAAcD,EAAiBhC,GAAe+B,EAAmBT,GAAYA,EAAS9K,QAAQuL,IAEvG,YADAjiB,EAAOoiB,YAAa,GAGtB,GAAI5hB,EAAO6hB,eACJb,EAAS9K,QAAQlW,EAAO6hB,cAAe,OAE9Cf,EAAQgB,SAAW1pB,EAAEyoB,MACrBC,EAAQiB,SAAW3pB,EAAE4pB,MACrB,MAAM/B,EAASa,EAAQgB,SACjBG,EAASnB,EAAQiB,SAIvB,IAAK/B,GAAiBxgB,EAAQpH,EAAG6nB,GAC/B,OAEFnsB,OAAO0Y,OAAOb,EAAM,CAClBwV,WAAW,EACXC,SAAS,EACTc,qBAAqB,EACrBC,iBAAazjB,EACb0jB,iBAAa1jB,IAEfoiB,EAAQb,OAASA,EACjBa,EAAQmB,OAASA,EACjBtW,EAAK0W,eAAiBvlB,IACtB0C,EAAOoiB,YAAa,EACpBpiB,EAAOyM,aACPzM,EAAO8iB,oBAAiB5jB,EACpBsB,EAAOyc,UAAY,IAAG9Q,EAAK4W,oBAAqB,GACpD,IAAIlC,GAAiB,EACjBW,EAASpf,QAAQ+J,EAAK6W,qBACxBnC,GAAiB,EACS,WAAtBW,EAASznB,WACXoS,EAAKwV,WAAY,IAGjB3tB,EAAS6F,eAAiB7F,EAAS6F,cAAcuI,QAAQ+J,EAAK6W,oBAAsBhvB,EAAS6F,gBAAkB2nB,IAA+B,UAAlB5oB,EAAE2oB,aAA6C,UAAlB3oB,EAAE2oB,cAA4BC,EAASpf,QAAQ+J,EAAK6W,qBAC/MhvB,EAAS6F,cAAcC,OAEzB,MAAMmpB,EAAuBpC,GAAkB7gB,EAAOkjB,gBAAkB1iB,EAAO2iB,0BAC1E3iB,EAAO4iB,gCAAiCH,GAA0BzB,EAAS6B,mBAC9EzqB,EAAEioB,iBAEArgB,EAAOkc,UAAYlc,EAAOkc,SAAS9O,SAAW5N,EAAO0c,UAAY1c,EAAO6Z,YAAcrZ,EAAO2O,SAC/FnP,EAAO0c,SAASoE,eAElB9gB,EAAO9G,KAAK,aAAcN,EAC5B,CAEA,SAAS0qB,GAAY/X,GACnB,MAAMvX,EAAWsH,IACX0E,EAAS/D,KACTkQ,EAAOnM,EAAOkf,iBACd,OACJ1e,EAAM,QACN8gB,EACA/T,aAAcC,EAAG,QACjBI,GACE5N,EACJ,IAAK4N,EAAS,OACd,IAAKpN,EAAOof,eAAuC,UAAtBrU,EAAMgW,YAAyB,OAC5D,IAOIgC,EAPA3qB,EAAI2S,EAER,GADI3S,EAAEmoB,gBAAenoB,EAAIA,EAAEmoB,eACZ,gBAAXnoB,EAAEooB,KAAwB,CAC5B,GAAqB,OAAjB7U,EAAKgV,QAAkB,OAC3B,MAAMjsB,EAAK0D,EAAEqoB,UACb,GAAI/rB,IAAOiX,EAAK8U,UAAW,MAC7B,CAEA,GAAe,cAAXroB,EAAEooB,MAEJ,GADAuC,EAAc,IAAI3qB,EAAE4qB,gBAAgBvN,MAAKtd,GAAKA,EAAEyoB,aAAejV,EAAKgV,WAC/DoC,GAAeA,EAAYnC,aAAejV,EAAKgV,QAAS,YAE7DoC,EAAc3qB,EAEhB,IAAKuT,EAAKwV,UAIR,YAHIxV,EAAKyW,aAAezW,EAAKwW,aAC3B3iB,EAAO9G,KAAK,oBAAqBN,IAIrC,MAAMyoB,EAAQkC,EAAYlC,MACpBmB,EAAQe,EAAYf,MAC1B,GAAI5pB,EAAE6qB,wBAGJ,OAFAnC,EAAQb,OAASY,OACjBC,EAAQmB,OAASD,GAGnB,IAAKxiB,EAAOkjB,eAaV,OAZKtqB,EAAEhD,OAAOwM,QAAQ+J,EAAK6W,qBACzBhjB,EAAOoiB,YAAa,QAElBjW,EAAKwV,YACPrtB,OAAO0Y,OAAOsU,EAAS,CACrBb,OAAQY,EACRoB,OAAQD,EACRF,SAAUjB,EACVkB,SAAUC,IAEZrW,EAAK0W,eAAiBvlB,MAI1B,GAAIkD,EAAOkjB,sBAAwBljB,EAAOuQ,KACxC,GAAI/Q,EAAO6M,cAET,GAAI2V,EAAQlB,EAAQmB,QAAUziB,EAAOI,WAAaJ,EAAO4U,gBAAkB4N,EAAQlB,EAAQmB,QAAUziB,EAAOI,WAAaJ,EAAOgU,eAG9H,OAFA7H,EAAKwV,WAAY,OACjBxV,EAAKyV,SAAU,QAGZ,GAAIP,EAAQC,EAAQb,QAAUzgB,EAAOI,WAAaJ,EAAO4U,gBAAkByM,EAAQC,EAAQb,QAAUzgB,EAAOI,WAAaJ,EAAOgU,eACrI,OAMJ,GAHIhgB,EAAS6F,eAAiB7F,EAAS6F,cAAcuI,QAAQ+J,EAAK6W,oBAAsBhvB,EAAS6F,gBAAkBjB,EAAEhD,QAA4B,UAAlBgD,EAAE2oB,aAC/HvtB,EAAS6F,cAAcC,OAErB9F,EAAS6F,eACPjB,EAAEhD,SAAW5B,EAAS6F,eAAiBjB,EAAEhD,OAAOwM,QAAQ+J,EAAK6W,mBAG/D,OAFA7W,EAAKyV,SAAU,OACf5hB,EAAOoiB,YAAa,GAIpBjW,EAAKuW,qBACP1iB,EAAO9G,KAAK,YAAaN,GAE3B0oB,EAAQqC,UAAYrC,EAAQgB,SAC5BhB,EAAQsC,UAAYtC,EAAQiB,SAC5BjB,EAAQgB,SAAWjB,EACnBC,EAAQiB,SAAWC,EACnB,MAAMqB,EAAQvC,EAAQgB,SAAWhB,EAAQb,OACnCqD,EAAQxC,EAAQiB,SAAWjB,EAAQmB,OACzC,GAAIziB,EAAOQ,OAAOyc,WAAa9b,KAAK4iB,KAAKF,GAAS,EAAIC,GAAS,GAAK9jB,EAAOQ,OAAOyc,UAAW,OAC7F,GAAgC,qBAArB9Q,EAAKwW,YAA6B,CAC3C,IAAIqB,EACAhkB,EAAO4M,gBAAkB0U,EAAQiB,WAAajB,EAAQmB,QAAUziB,EAAO6M,cAAgByU,EAAQgB,WAAahB,EAAQb,OACtHtU,EAAKwW,aAAc,EAGfkB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/C7iB,KAAK8iB,MAAM9iB,KAAKuE,IAAIoe,GAAQ3iB,KAAKuE,IAAIme,IAAgB1iB,KAAKK,GACvE2K,EAAKwW,YAAc3iB,EAAO4M,eAAiBoX,EAAaxjB,EAAOwjB,WAAa,GAAKA,EAAaxjB,EAAOwjB,WAG3G,CASA,GARI7X,EAAKwW,aACP3iB,EAAO9G,KAAK,oBAAqBN,GAEH,qBAArBuT,EAAKyW,cACVtB,EAAQgB,WAAahB,EAAQb,QAAUa,EAAQiB,WAAajB,EAAQmB,SACtEtW,EAAKyW,aAAc,IAGnBzW,EAAKwW,aAA0B,cAAX/pB,EAAEooB,MAAwB7U,EAAK+X,gCAErD,YADA/X,EAAKwV,WAAY,GAGnB,IAAKxV,EAAKyW,YACR,OAEF5iB,EAAOoiB,YAAa,GACf5hB,EAAO2O,SAAWvW,EAAEurB,YACvBvrB,EAAEioB,iBAEArgB,EAAO4jB,2BAA6B5jB,EAAO6jB,QAC7CzrB,EAAE0rB,kBAEJ,IAAIrF,EAAOjf,EAAO4M,eAAiBiX,EAAQC,EACvCS,EAAcvkB,EAAO4M,eAAiB0U,EAAQgB,SAAWhB,EAAQqC,UAAYrC,EAAQiB,SAAWjB,EAAQsC,UACxGpjB,EAAOgkB,iBACTvF,EAAO9d,KAAKuE,IAAIuZ,IAASzR,EAAM,GAAK,GACpC+W,EAAcpjB,KAAKuE,IAAI6e,IAAgB/W,EAAM,GAAK,IAEpD8T,EAAQrC,KAAOA,EACfA,GAAQze,EAAOikB,WACXjX,IACFyR,GAAQA,EACRsF,GAAeA,GAEjB,MAAMG,EAAuB1kB,EAAO2kB,iBACpC3kB,EAAO8iB,eAAiB7D,EAAO,EAAI,OAAS,OAC5Cjf,EAAO2kB,iBAAmBJ,EAAc,EAAI,OAAS,OACrD,MAAMK,EAAS5kB,EAAOQ,OAAOuQ,OAASvQ,EAAO2O,QACvC0V,EAA2C,SAA5B7kB,EAAO2kB,kBAA+B3kB,EAAOgb,gBAA8C,SAA5Bhb,EAAO2kB,kBAA+B3kB,EAAOib,eACjI,IAAK9O,EAAKyV,QAAS,CAQjB,GAPIgD,GAAUC,GACZ7kB,EAAO6b,QAAQ,CACbvB,UAAWta,EAAO8iB,iBAGtB3W,EAAKgT,eAAiBnf,EAAOvC,eAC7BuC,EAAO6S,cAAc,GACjB7S,EAAO6Z,UAAW,CACpB,MAAMiL,EAAM,IAAIjuB,OAAOmF,YAAY,gBAAiB,CAClD+oB,SAAS,EACTZ,YAAY,EACZa,OAAQ,CACNC,mBAAmB,KAGvBjlB,EAAOU,UAAUwkB,cAAcJ,EACjC,CACA3Y,EAAKgZ,qBAAsB,GAEvB3kB,EAAOyf,aAAyC,IAA1BjgB,EAAOgb,iBAAqD,IAA1Bhb,EAAOib,gBACjEjb,EAAO0f,eAAc,GAEvB1f,EAAO9G,KAAK,kBAAmBN,EACjC,CACA,IAAIwsB,EAEJ,IADA,IAAI7vB,MAAO0L,WACmB,IAA1BT,EAAO6kB,gBAA4BlZ,EAAKyV,SAAWzV,EAAK4W,oBAAsB2B,IAAyB1kB,EAAO2kB,kBAAoBC,GAAUC,GAAgB1jB,KAAKuE,IAAIuZ,IAAS,EAUhL,OATA3qB,OAAO0Y,OAAOsU,EAAS,CACrBb,OAAQY,EACRoB,OAAQD,EACRF,SAAUjB,EACVkB,SAAUC,EACVrD,eAAgBhT,EAAK8M,mBAEvB9M,EAAKmZ,eAAgB,OACrBnZ,EAAKgT,eAAiBhT,EAAK8M,kBAG7BjZ,EAAO9G,KAAK,aAAcN,GAC1BuT,EAAKyV,SAAU,EACfzV,EAAK8M,iBAAmBgG,EAAO9S,EAAKgT,eACpC,IAAIoG,GAAsB,EACtBC,EAAkBhlB,EAAOglB,gBAiD7B,GAhDIhlB,EAAOkjB,sBACT8B,EAAkB,GAEhBvG,EAAO,GACL2F,GAAUC,IAAiBO,GAAajZ,EAAK4W,oBAAsB5W,EAAK8M,kBAAoBzY,EAAO0O,eAAiBlP,EAAOgU,eAAiBhU,EAAOmO,gBAAgBnO,EAAOiT,YAAc,IAA+B,SAAzBzS,EAAOmP,eAA4B3P,EAAO8N,OAAO/X,OAASyK,EAAOmP,eAAiB,EAAI3P,EAAOmO,gBAAgBnO,EAAOiT,YAAc,GAAKjT,EAAOQ,OAAOkO,aAAe,GAAK1O,EAAOQ,OAAOkO,aAAe1O,EAAOgU,iBAC7YhU,EAAO6b,QAAQ,CACbvB,UAAW,OACXpB,cAAc,EACdd,iBAAkB,IAGlBjM,EAAK8M,iBAAmBjZ,EAAOgU,iBACjCuR,GAAsB,EAClB/kB,EAAOilB,aACTtZ,EAAK8M,iBAAmBjZ,EAAOgU,eAAiB,IAAMhU,EAAOgU,eAAiB7H,EAAKgT,eAAiBF,IAASuG,KAGxGvG,EAAO,IACZ2F,GAAUC,IAAiBO,GAAajZ,EAAK4W,oBAAsB5W,EAAK8M,kBAAoBzY,EAAO0O,eAAiBlP,EAAO4U,eAAiB5U,EAAOmO,gBAAgBnO,EAAOmO,gBAAgBpY,OAAS,GAAKiK,EAAOQ,OAAOkO,cAAyC,SAAzBlO,EAAOmP,eAA4B3P,EAAO8N,OAAO/X,OAASyK,EAAOmP,eAAiB,EAAI3P,EAAOmO,gBAAgBnO,EAAOmO,gBAAgBpY,OAAS,GAAKiK,EAAOQ,OAAOkO,aAAe,GAAK1O,EAAO4U,iBACna5U,EAAO6b,QAAQ,CACbvB,UAAW,OACXpB,cAAc,EACdd,iBAAkBpY,EAAO8N,OAAO/X,QAAmC,SAAzByK,EAAOmP,cAA2B3P,EAAOkX,uBAAyB/V,KAAK8P,KAAKvS,WAAW8B,EAAOmP,cAAe,QAGvJxD,EAAK8M,iBAAmBjZ,EAAO4U,iBACjC2Q,GAAsB,EAClB/kB,EAAOilB,aACTtZ,EAAK8M,iBAAmBjZ,EAAO4U,eAAiB,GAAK5U,EAAO4U,eAAiBzI,EAAKgT,eAAiBF,IAASuG,KAI9GD,IACF3sB,EAAE6qB,yBAA0B,IAIzBzjB,EAAOgb,gBAA4C,SAA1Bhb,EAAO8iB,gBAA6B3W,EAAK8M,iBAAmB9M,EAAKgT,iBAC7FhT,EAAK8M,iBAAmB9M,EAAKgT,iBAE1Bnf,EAAOib,gBAA4C,SAA1Bjb,EAAO8iB,gBAA6B3W,EAAK8M,iBAAmB9M,EAAKgT,iBAC7FhT,EAAK8M,iBAAmB9M,EAAKgT,gBAE1Bnf,EAAOib,gBAAmBjb,EAAOgb,iBACpC7O,EAAK8M,iBAAmB9M,EAAKgT,gBAI3B3e,EAAOyc,UAAY,EAAG,CACxB,KAAI9b,KAAKuE,IAAIuZ,GAAQze,EAAOyc,WAAa9Q,EAAK4W,oBAW5C,YADA5W,EAAK8M,iBAAmB9M,EAAKgT,gBAT7B,IAAKhT,EAAK4W,mBAMR,OALA5W,EAAK4W,oBAAqB,EAC1BzB,EAAQb,OAASa,EAAQgB,SACzBhB,EAAQmB,OAASnB,EAAQiB,SACzBpW,EAAK8M,iBAAmB9M,EAAKgT,oBAC7BmC,EAAQrC,KAAOjf,EAAO4M,eAAiB0U,EAAQgB,SAAWhB,EAAQb,OAASa,EAAQiB,SAAWjB,EAAQmB,OAO5G,CACKjiB,EAAOklB,eAAgBllB,EAAO2O,WAG/B3O,EAAOkc,UAAYlc,EAAOkc,SAAS9O,SAAW5N,EAAO0c,UAAYlc,EAAO4R,uBAC1EpS,EAAO2X,oBACP3X,EAAO4V,uBAELpV,EAAOkc,UAAYlc,EAAOkc,SAAS9O,SAAW5N,EAAO0c,UACvD1c,EAAO0c,SAAS4G,cAGlBtjB,EAAOyU,eAAetI,EAAK8M,kBAE3BjZ,EAAOkZ,aAAa/M,EAAK8M,kBAC3B,CAEA,SAAS0M,GAAWpa,GAClB,MAAMvL,EAAS/D,KACTkQ,EAAOnM,EAAOkf,gBACpB,IAEIqE,EAFA3qB,EAAI2S,EACJ3S,EAAEmoB,gBAAenoB,EAAIA,EAAEmoB,eAE3B,MAAM6E,EAA0B,aAAXhtB,EAAEooB,MAAkC,gBAAXpoB,EAAEooB,KAChD,GAAK4E,GAMH,GADArC,EAAc,IAAI3qB,EAAE4qB,gBAAgBvN,MAAKtd,GAAKA,EAAEyoB,aAAejV,EAAKgV,WAC/DoC,GAAeA,EAAYnC,aAAejV,EAAKgV,QAAS,WAN5C,CACjB,GAAqB,OAAjBhV,EAAKgV,QAAkB,OAC3B,GAAIvoB,EAAEqoB,YAAc9U,EAAK8U,UAAW,OACpCsC,EAAc3qB,CAChB,CAIA,GAAI,CAAC,gBAAiB,aAAc,eAAgB,eAAekK,SAASlK,EAAEooB,MAAO,CACnF,MAAM6E,EAAU,CAAC,gBAAiB,eAAe/iB,SAASlK,EAAEooB,QAAUhhB,EAAO2F,QAAQiC,UAAY5H,EAAO2F,QAAQwC,WAChH,IAAK0d,EACH,MAEJ,CACA1Z,EAAK8U,UAAY,KACjB9U,EAAKgV,QAAU,KACf,MAAM,OACJ3gB,EAAM,QACN8gB,EACA/T,aAAcC,EAAG,WACjBU,EAAU,QACVN,GACE5N,EACJ,IAAK4N,EAAS,OACd,IAAKpN,EAAOof,eAAmC,UAAlBhnB,EAAE2oB,YAAyB,OAKxD,GAJIpV,EAAKuW,qBACP1iB,EAAO9G,KAAK,WAAYN,GAE1BuT,EAAKuW,qBAAsB,GACtBvW,EAAKwV,UAMR,OALIxV,EAAKyV,SAAWphB,EAAOyf,YACzBjgB,EAAO0f,eAAc,GAEvBvT,EAAKyV,SAAU,OACfzV,EAAKyW,aAAc,GAKjBpiB,EAAOyf,YAAc9T,EAAKyV,SAAWzV,EAAKwV,aAAwC,IAA1B3hB,EAAOgb,iBAAqD,IAA1Bhb,EAAOib,iBACnGjb,EAAO0f,eAAc,GAIvB,MAAMoG,EAAexoB,IACfyoB,EAAWD,EAAe3Z,EAAK0W,eAGrC,GAAI7iB,EAAOoiB,WAAY,CACrB,MAAM4D,EAAWptB,EAAE4f,MAAQ5f,EAAEopB,cAAgBppB,EAAEopB,eAC/ChiB,EAAOuY,mBAAmByN,GAAYA,EAAS,IAAMptB,EAAEhD,OAAQowB,GAC/DhmB,EAAO9G,KAAK,YAAaN,GACrBmtB,EAAW,KAAOD,EAAe3Z,EAAK8Z,cAAgB,KACxDjmB,EAAO9G,KAAK,wBAAyBN,EAEzC,CAKA,GAJAuT,EAAK8Z,cAAgB3oB,IACrBF,GAAS,KACF4C,EAAO2I,YAAW3I,EAAOoiB,YAAa,EAAI,KAE5CjW,EAAKwV,YAAcxV,EAAKyV,UAAY5hB,EAAO8iB,gBAAmC,IAAjBxB,EAAQrC,OAAe9S,EAAKmZ,eAAiBnZ,EAAK8M,mBAAqB9M,EAAKgT,iBAAmBhT,EAAKmZ,cAIpK,OAHAnZ,EAAKwV,WAAY,EACjBxV,EAAKyV,SAAU,OACfzV,EAAKyW,aAAc,GAMrB,IAAIsD,EAMJ,GATA/Z,EAAKwV,WAAY,EACjBxV,EAAKyV,SAAU,EACfzV,EAAKyW,aAAc,EAGjBsD,EADE1lB,EAAOklB,aACIlY,EAAMxN,EAAOI,WAAaJ,EAAOI,WAEhC+L,EAAK8M,iBAEjBzY,EAAO2O,QACT,OAEF,GAAI3O,EAAOkc,UAAYlc,EAAOkc,SAAS9O,QAIrC,YAHA5N,EAAO0c,SAASiJ,WAAW,CACzBO,eAMJ,MAAMC,EAAcD,IAAelmB,EAAO4U,iBAAmB5U,EAAOQ,OAAOuQ,KAC3E,IAAIqV,EAAY,EACZhV,EAAYpR,EAAOmO,gBAAgB,GACvC,IAAK,IAAIrY,EAAI,EAAGA,EAAIoY,EAAWnY,OAAQD,GAAKA,EAAI0K,EAAOiQ,mBAAqB,EAAIjQ,EAAOgQ,eAAgB,CACrG,MAAM0L,EAAYpmB,EAAI0K,EAAOiQ,mBAAqB,EAAI,EAAIjQ,EAAOgQ,eACxB,qBAA9BtC,EAAWpY,EAAIomB,IACpBiK,GAAeD,GAAchY,EAAWpY,IAAMowB,EAAahY,EAAWpY,EAAIomB,MAC5EkK,EAAYtwB,EACZsb,EAAYlD,EAAWpY,EAAIomB,GAAahO,EAAWpY,KAE5CqwB,GAAeD,GAAchY,EAAWpY,MACjDswB,EAAYtwB,EACZsb,EAAYlD,EAAWA,EAAWnY,OAAS,GAAKmY,EAAWA,EAAWnY,OAAS,GAEnF,CACA,IAAIswB,EAAmB,KACnBC,EAAkB,KAClB9lB,EAAO+W,SACLvX,EAAO6U,YACTyR,EAAkB9lB,EAAOmN,SAAWnN,EAAOmN,QAAQC,SAAW5N,EAAO2N,QAAU3N,EAAO2N,QAAQG,OAAO/X,OAAS,EAAIiK,EAAO8N,OAAO/X,OAAS,EAChIiK,EAAO8U,QAChBuR,EAAmB,IAIvB,MAAME,GAASL,EAAahY,EAAWkY,IAAchV,EAC/C8K,EAAYkK,EAAY5lB,EAAOiQ,mBAAqB,EAAI,EAAIjQ,EAAOgQ,eACzE,GAAIuV,EAAWvlB,EAAOgmB,aAAc,CAElC,IAAKhmB,EAAOimB,WAEV,YADAzmB,EAAO2a,QAAQ3a,EAAOiT,aAGM,SAA1BjT,EAAO8iB,iBACLyD,GAAS/lB,EAAOkmB,gBAAiB1mB,EAAO2a,QAAQna,EAAO+W,QAAUvX,EAAO8U,MAAQuR,EAAmBD,EAAYlK,GAAgBlc,EAAO2a,QAAQyL,IAEtH,SAA1BpmB,EAAO8iB,iBACLyD,EAAQ,EAAI/lB,EAAOkmB,gBACrB1mB,EAAO2a,QAAQyL,EAAYlK,GACE,OAApBoK,GAA4BC,EAAQ,GAAKplB,KAAKuE,IAAI6gB,GAAS/lB,EAAOkmB,gBAC3E1mB,EAAO2a,QAAQ2L,GAEftmB,EAAO2a,QAAQyL,GAGrB,KAAO,CAEL,IAAK5lB,EAAOmmB,YAEV,YADA3mB,EAAO2a,QAAQ3a,EAAOiT,aAGxB,MAAM2T,EAAoB5mB,EAAO6mB,aAAejuB,EAAEhD,SAAWoK,EAAO6mB,WAAWC,QAAUluB,EAAEhD,SAAWoK,EAAO6mB,WAAWE,QACnHH,EAOMhuB,EAAEhD,SAAWoK,EAAO6mB,WAAWC,OACxC9mB,EAAO2a,QAAQyL,EAAYlK,GAE3Blc,EAAO2a,QAAQyL,IATe,SAA1BpmB,EAAO8iB,gBACT9iB,EAAO2a,QAA6B,OAArB0L,EAA4BA,EAAmBD,EAAYlK,GAE9C,SAA1Blc,EAAO8iB,gBACT9iB,EAAO2a,QAA4B,OAApB2L,EAA2BA,EAAkBF,GAOlE,CACF,CAEA,SAASY,KACP,MAAMhnB,EAAS/D,MACT,OACJuE,EAAM,GACNjD,GACEyC,EACJ,GAAIzC,GAAyB,IAAnBA,EAAG+H,YAAmB,OAG5B9E,EAAOoP,aACT5P,EAAOinB,gBAIT,MAAM,eACJjM,EAAc,eACdC,EAAc,SACdhN,GACEjO,EACE0N,EAAY1N,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAG1D5N,EAAOgb,gBAAiB,EACxBhb,EAAOib,gBAAiB,EACxBjb,EAAOyM,aACPzM,EAAOiN,eACPjN,EAAO4V,sBACP,MAAMsR,EAAgBxZ,GAAalN,EAAOuQ,OACZ,SAAzBvQ,EAAOmP,eAA4BnP,EAAOmP,cAAgB,KAAM3P,EAAO8U,OAAU9U,EAAO6U,aAAgB7U,EAAOQ,OAAO0O,gBAAmBgY,EAGxIlnB,EAAOQ,OAAOuQ,OAASrD,EACzB1N,EAAOub,YAAYvb,EAAOwX,UAAW,GAAG,GAAO,GAE/CxX,EAAO2a,QAAQ3a,EAAOiT,YAAa,GAAG,GAAO,GAL/CjT,EAAO2a,QAAQ3a,EAAO8N,OAAO/X,OAAS,EAAG,GAAG,GAAO,GAQjDiK,EAAOmnB,UAAYnnB,EAAOmnB,SAASC,SAAWpnB,EAAOmnB,SAASE,SAChE9qB,aAAayD,EAAOmnB,SAASG,eAC7BtnB,EAAOmnB,SAASG,cAAgBhrB,YAAW,KACrC0D,EAAOmnB,UAAYnnB,EAAOmnB,SAASC,SAAWpnB,EAAOmnB,SAASE,QAChErnB,EAAOmnB,SAASI,QAClB,GACC,MAGLvnB,EAAOib,eAAiBA,EACxBjb,EAAOgb,eAAiBA,EACpBhb,EAAOQ,OAAO0R,eAAiBjE,IAAajO,EAAOiO,UACrDjO,EAAOmS,eAEX,CAEA,SAASqV,GAAQ5uB,GACf,MAAMoH,EAAS/D,KACV+D,EAAO4N,UACP5N,EAAOoiB,aACNpiB,EAAOQ,OAAOinB,eAAe7uB,EAAEioB,iBAC/B7gB,EAAOQ,OAAOknB,0BAA4B1nB,EAAO6Z,YACnDjhB,EAAE0rB,kBACF1rB,EAAE+uB,6BAGR,CAEA,SAASC,KACP,MAAM5nB,EAAS/D,MACT,UACJyE,EAAS,aACT6M,EAAY,QACZK,GACE5N,EACJ,IAAK4N,EAAS,OAWd,IAAI2L,EAVJvZ,EAAOwZ,kBAAoBxZ,EAAOI,UAC9BJ,EAAO4M,eACT5M,EAAOI,WAAaM,EAAUoD,WAE9B9D,EAAOI,WAAaM,EAAUkD,UAGP,IAArB5D,EAAOI,YAAiBJ,EAAOI,UAAY,GAC/CJ,EAAO2X,oBACP3X,EAAO4V,sBAEP,MAAMjB,EAAiB3U,EAAO4U,eAAiB5U,EAAOgU,eAEpDuF,EADqB,IAAnB5E,EACY,GAEC3U,EAAOI,UAAYJ,EAAOgU,gBAAkBW,EAEzD4E,IAAgBvZ,EAAOkB,UACzBlB,EAAOyU,eAAelH,GAAgBvN,EAAOI,UAAYJ,EAAOI,WAElEJ,EAAO9G,KAAK,eAAgB8G,EAAOI,WAAW,EAChD,CAEA,SAASynB,GAAOjvB,GACd,MAAMoH,EAAS/D,KACfsa,GAAqBvW,EAAQpH,EAAEhD,QAC3BoK,EAAOQ,OAAO2O,SAA2C,SAAhCnP,EAAOQ,OAAOmP,gBAA6B3P,EAAOQ,OAAOkV,YAGtF1V,EAAO8Y,QACT,CAEA,SAASgP,KACP,MAAM9nB,EAAS/D,KACX+D,EAAO+nB,gCACX/nB,EAAO+nB,+BAAgC,EACnC/nB,EAAOQ,OAAOkjB,sBAChB1jB,EAAOzC,GAAG/C,MAAMwtB,YAAc,QAElC,CAEA,MAAM9c,GAAS,CAAClL,EAAQsL,KACtB,MAAMtX,EAAWsH,KACX,OACJkF,EAAM,GACNjD,EAAE,UACFmD,EAAS,OACT+F,GACEzG,EACEioB,IAAYznB,EAAO6jB,OACnB6D,EAAuB,OAAX5c,EAAkB,mBAAqB,sBACnD6c,EAAe7c,EAChB/N,GAAoB,kBAAPA,IAGlBvJ,EAASk0B,GAAW,aAAcloB,EAAO8nB,qBAAsB,CAC7DM,SAAS,EACTH,YAEF1qB,EAAG2qB,GAAW,aAAcloB,EAAO8gB,aAAc,CAC/CsH,SAAS,IAEX7qB,EAAG2qB,GAAW,cAAeloB,EAAO8gB,aAAc,CAChDsH,SAAS,IAEXp0B,EAASk0B,GAAW,YAAaloB,EAAOsjB,YAAa,CACnD8E,SAAS,EACTH,YAEFj0B,EAASk0B,GAAW,cAAeloB,EAAOsjB,YAAa,CACrD8E,SAAS,EACTH,YAEFj0B,EAASk0B,GAAW,WAAYloB,EAAO2lB,WAAY,CACjDyC,SAAS,IAEXp0B,EAASk0B,GAAW,YAAaloB,EAAO2lB,WAAY,CAClDyC,SAAS,IAEXp0B,EAASk0B,GAAW,gBAAiBloB,EAAO2lB,WAAY,CACtDyC,SAAS,IAEXp0B,EAASk0B,GAAW,cAAeloB,EAAO2lB,WAAY,CACpDyC,SAAS,IAEXp0B,EAASk0B,GAAW,aAAcloB,EAAO2lB,WAAY,CACnDyC,SAAS,IAEXp0B,EAASk0B,GAAW,eAAgBloB,EAAO2lB,WAAY,CACrDyC,SAAS,IAEXp0B,EAASk0B,GAAW,cAAeloB,EAAO2lB,WAAY,CACpDyC,SAAS,KAIP5nB,EAAOinB,eAAiBjnB,EAAOknB,2BACjCnqB,EAAG2qB,GAAW,QAASloB,EAAOwnB,SAAS,GAErChnB,EAAO2O,SACTzO,EAAUwnB,GAAW,SAAUloB,EAAO4nB,UAIpCpnB,EAAO6nB,qBACTroB,EAAOmoB,GAAc1hB,EAAOC,KAAOD,EAAOE,QAAU,0CAA4C,wBAAyBqgB,IAAU,GAEnIhnB,EAAOmoB,GAAc,iBAAkBnB,IAAU,GAInDzpB,EAAG2qB,GAAW,OAAQloB,EAAO6nB,OAAQ,CACnCI,SAAS,IACT,EAEJ,SAASK,KACP,MAAMtoB,EAAS/D,MACT,OACJuE,GACER,EACJA,EAAO8gB,aAAeA,GAAappB,KAAKsI,GACxCA,EAAOsjB,YAAcA,GAAY5rB,KAAKsI,GACtCA,EAAO2lB,WAAaA,GAAWjuB,KAAKsI,GACpCA,EAAO8nB,qBAAuBA,GAAqBpwB,KAAKsI,GACpDQ,EAAO2O,UACTnP,EAAO4nB,SAAWA,GAASlwB,KAAKsI,IAElCA,EAAOwnB,QAAUA,GAAQ9vB,KAAKsI,GAC9BA,EAAO6nB,OAASA,GAAOnwB,KAAKsI,GAC5BkL,GAAOlL,EAAQ,KACjB,CACA,SAASuoB,KACP,MAAMvoB,EAAS/D,KACfiP,GAAOlL,EAAQ,MACjB,CACA,IAAIwoB,GAAW,CACbF,gBACAC,iBAGF,MAAME,GAAgB,CAACzoB,EAAQQ,IACtBR,EAAOqP,MAAQ7O,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,EAE1D,SAAS2X,KACP,MAAMjnB,EAAS/D,MACT,UACJub,EAAS,YACT5O,EAAW,OACXpI,EAAM,GACNjD,GACEyC,EACE4P,EAAcpP,EAAOoP,YAC3B,IAAKA,GAAeA,GAAmD,IAApCtb,OAAO0D,KAAK4X,GAAa7Z,OAAc,OAC1E,MAAM/B,EAAWsH,IAGXotB,EAA6C,WAA3BloB,EAAOkoB,iBAAiCloB,EAAOkoB,gBAA2C,YAAzBloB,EAAOkoB,gBAC1FC,EAAsB,CAAC,SAAU,aAAa7lB,SAAStC,EAAOkoB,mBAAqBloB,EAAOkoB,gBAAkB1oB,EAAOzC,GAAKvJ,EAASgG,cAAcwG,EAAOkoB,iBACtJE,EAAa5oB,EAAO6oB,cAAcjZ,EAAa8Y,EAAiBC,GACtE,IAAKC,GAAc5oB,EAAO8oB,oBAAsBF,EAAY,OAC5D,MAAMG,EAAuBH,KAAchZ,EAAcA,EAAYgZ,QAAc1pB,EAC7E8pB,EAAmBD,GAAwB/oB,EAAOipB,eAClDC,EAAcT,GAAczoB,EAAQQ,GACpC2oB,EAAaV,GAAczoB,EAAQgpB,GACnCI,EAAgBppB,EAAOQ,OAAOyf,WAC9BoJ,EAAeL,EAAiB/I,WAChCqJ,EAAa9oB,EAAOoN,QACtBsb,IAAgBC,GAClB5rB,EAAG8F,UAAUqP,OAAO,GAAGlS,EAAO+R,6BAA8B,GAAG/R,EAAO+R,qCACtEvS,EAAOupB,yBACGL,GAAeC,IACzB5rB,EAAG8F,UAAUC,IAAI,GAAG9C,EAAO+R,+BACvByW,EAAiB3Z,KAAK8O,MAAuC,WAA/B6K,EAAiB3Z,KAAK8O,OAAsB6K,EAAiB3Z,KAAK8O,MAA6B,WAArB3d,EAAO6O,KAAK8O,OACtH5gB,EAAG8F,UAAUC,IAAI,GAAG9C,EAAO+R,qCAE7BvS,EAAOupB,wBAELH,IAAkBC,EACpBrpB,EAAOggB,mBACGoJ,GAAiBC,GAC3BrpB,EAAO0f,gBAIT,CAAC,aAAc,aAAc,aAAalmB,SAAQkL,IAChD,GAAsC,qBAA3BskB,EAAiBtkB,GAAuB,OACnD,MAAM8kB,EAAmBhpB,EAAOkE,IAASlE,EAAOkE,GAAMkJ,QAChD6b,EAAkBT,EAAiBtkB,IAASskB,EAAiBtkB,GAAMkJ,QACrE4b,IAAqBC,GACvBzpB,EAAO0E,GAAMglB,WAEVF,GAAoBC,GACvBzpB,EAAO0E,GAAMilB,QACf,IAEF,MAAMC,EAAmBZ,EAAiB1O,WAAa0O,EAAiB1O,YAAc9Z,EAAO8Z,UACvFuP,EAAcrpB,EAAOuQ,OAASiY,EAAiBrZ,gBAAkBnP,EAAOmP,eAAiBia,GACzFE,EAAUtpB,EAAOuQ,KACnB6Y,GAAoBhhB,GACtB5I,EAAO+pB,kBAET,EAAO/pB,EAAOQ,OAAQwoB,GACtB,MAAMgB,EAAYhqB,EAAOQ,OAAOoN,QAC1Bqc,EAAUjqB,EAAOQ,OAAOuQ,KAC9Bzc,OAAO0Y,OAAOhN,EAAQ,CACpBkjB,eAAgBljB,EAAOQ,OAAO0iB,eAC9BlI,eAAgBhb,EAAOQ,OAAOwa,eAC9BC,eAAgBjb,EAAOQ,OAAOya,iBAE5BqO,IAAeU,EACjBhqB,EAAO0pB,WACGJ,GAAcU,GACxBhqB,EAAO2pB,SAET3pB,EAAO8oB,kBAAoBF,EAC3B5oB,EAAO9G,KAAK,oBAAqB8vB,GAC7BpgB,IACEihB,GACF7pB,EAAOuf,cACPvf,EAAOud,WAAW/F,GAClBxX,EAAOiN,iBACG6c,GAAWG,GACrBjqB,EAAOud,WAAW/F,GAClBxX,EAAOiN,gBACE6c,IAAYG,GACrBjqB,EAAOuf,eAGXvf,EAAO9G,KAAK,aAAc8vB,EAC5B,CAEA,SAASH,GAAcjZ,EAAauQ,EAAM+J,GAIxC,QAHa,IAAT/J,IACFA,EAAO,WAEJvQ,GAAwB,cAATuQ,IAAyB+J,EAAa,OAC1D,IAAItB,GAAa,EACjB,MAAM/xB,EAAS+F,IACTutB,EAAyB,WAAThK,EAAoBtpB,EAAOuzB,YAAcF,EAAYvd,aACrE0d,EAAS/1B,OAAO0D,KAAK4X,GAAaxW,KAAIkxB,IAC1C,GAAqB,kBAAVA,GAA6C,IAAvBA,EAAMrxB,QAAQ,KAAY,CACzD,MAAMsxB,EAAW7rB,WAAW4rB,EAAME,OAAO,IACnCl3B,EAAQ62B,EAAgBI,EAC9B,MAAO,CACLj3B,QACAg3B,QAEJ,CACA,MAAO,CACLh3B,MAAOg3B,EACPA,QACD,IAEHD,EAAOI,MAAK,CAACvsB,EAAGwsB,IAAM5d,SAAS5O,EAAE5K,MAAO,IAAMwZ,SAAS4d,EAAEp3B,MAAO,MAChE,IAAK,IAAIwC,EAAI,EAAGA,EAAIu0B,EAAOt0B,OAAQD,GAAK,EAAG,CACzC,MAAM,MACJw0B,EAAK,MACLh3B,GACE+2B,EAAOv0B,GACE,WAATqqB,EACEtpB,EAAO2F,WAAW,eAAelJ,QAAY8O,UAC/CwmB,EAAa0B,GAENh3B,GAAS42B,EAAYxd,cAC9Bkc,EAAa0B,EAEjB,CACA,OAAO1B,GAAc,KACvB,CAEA,IAAIhZ,GAAc,CAChBqX,iBACA4B,kBAGF,SAAS8B,GAAe5hB,EAAS6hB,GAC/B,MAAMC,EAAgB,GAYtB,OAXA9hB,EAAQvP,SAAQsxB,IACM,kBAATA,EACTx2B,OAAO0D,KAAK8yB,GAAMtxB,SAAQuxB,IACpBD,EAAKC,IACPF,EAAcxyB,KAAKuyB,EAASG,EAC9B,IAEuB,kBAATD,GAChBD,EAAcxyB,KAAKuyB,EAASE,EAC9B,IAEKD,CACT,CACA,SAASG,KACP,MAAMhrB,EAAS/D,MACT,WACJ8uB,EAAU,OACVvqB,EAAM,IACNgN,EAAG,GACHjQ,EAAE,OACFkJ,GACEzG,EAEEirB,EAAWN,GAAe,CAAC,cAAenqB,EAAO8Z,UAAW,CAChE,YAAata,EAAOQ,OAAOkc,UAAYlc,EAAOkc,SAAS9O,SACtD,CACD,WAAcpN,EAAOkV,YACpB,CACD,IAAOlI,GACN,CACD,KAAQhN,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,GACzC,CACD,cAAe9O,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,GAA0B,WAArB9O,EAAO6O,KAAK8O,MACjE,CACD,QAAW1X,EAAOE,SACjB,CACD,IAAOF,EAAOC,KACb,CACD,WAAYlG,EAAO2O,SAClB,CACD,SAAY3O,EAAO2O,SAAW3O,EAAO0O,gBACpC,CACD,iBAAkB1O,EAAO4R,sBACvB5R,EAAO+R,wBACXwY,EAAW1yB,QAAQ4yB,GACnB1tB,EAAG8F,UAAUC,OAAOynB,GACpB/qB,EAAOupB,sBACT,CAEA,SAAS2B,KACP,MAAMlrB,EAAS/D,MACT,GACJsB,EAAE,WACFwtB,GACE/qB,EACCzC,GAAoB,kBAAPA,IAClBA,EAAG8F,UAAUqP,UAAUqY,GACvB/qB,EAAOupB,uBACT,CAEA,IAAIxsB,GAAU,CACZiuB,cACAE,kBAGF,SAAS/Y,KACP,MAAMnS,EAAS/D,MAEb4jB,SAAUsL,EAAS,OACnB3qB,GACER,GACE,mBACJqO,GACE7N,EACJ,GAAI6N,EAAoB,CACtB,MAAMgH,EAAiBrV,EAAO8N,OAAO/X,OAAS,EACxCq1B,EAAqBprB,EAAOkO,WAAWmH,GAAkBrV,EAAOmO,gBAAgBkH,GAAuC,EAArBhH,EACxGrO,EAAO6f,SAAW7f,EAAOoF,KAAOgmB,CAClC,MACEprB,EAAO6f,SAAsC,IAA3B7f,EAAOiO,SAASlY,QAEN,IAA1ByK,EAAOwa,iBACThb,EAAOgb,gBAAkBhb,EAAO6f,WAEJ,IAA1Brf,EAAOya,iBACTjb,EAAOib,gBAAkBjb,EAAO6f,UAE9BsL,GAAaA,IAAcnrB,EAAO6f,WACpC7f,EAAO8U,OAAQ,GAEbqW,IAAcnrB,EAAO6f,UACvB7f,EAAO9G,KAAK8G,EAAO6f,SAAW,OAAS,SAE3C,CACA,IAAIwL,GAAkB,CACpBlZ,kBAGEmZ,GAAW,CACb71B,MAAM,EACN6kB,UAAW,aACXkK,gBAAgB,EAChB+G,sBAAuB,mBACvBzL,kBAAmB,UACnBzE,aAAc,EACd5a,MAAO,IACP0O,SAAS,EACTkZ,sBAAsB,EACtB1e,gBAAgB,EAChB0a,QAAQ,EACRmH,gBAAgB,EAChBC,aAAc,SACd7d,SAAS,EACToV,kBAAmB,wDAEnBnc,MAAO,KACPE,OAAQ,KAER+S,gCAAgC,EAEhCpe,UAAW,KACXgwB,IAAK,KAELhL,oBAAoB,EACpBC,mBAAoB,GAEpBjL,YAAY,EAEZ/E,gBAAgB,EAEhBqI,kBAAkB,EAElBtI,OAAQ,QAIRd,iBAAa1Q,EACbwpB,gBAAiB,SAEjBha,aAAc,EACdiB,cAAe,EACfa,eAAgB,EAChBC,mBAAoB,EACpBwL,oBAAoB,EACpB/M,gBAAgB,EAChBqC,sBAAsB,EACtBlD,mBAAoB,EAEpBE,kBAAmB,EAEnBmJ,qBAAqB,EACrB9F,0BAA0B,EAE1BM,eAAe,EAEfhC,cAAc,EAEduU,WAAY,EACZT,WAAY,GACZpE,eAAe,EACf+G,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdd,cAAc,EACdxC,gBAAgB,EAChBjG,UAAW,EACXmH,0BAA0B,EAC1BjB,0BAA0B,EAC1BC,+BAA+B,EAC/BM,qBAAqB,EAErBiI,mBAAmB,EAEnBlG,YAAY,EACZD,gBAAiB,IAEjBpT,qBAAqB,EAErB6N,YAAY,EAEZwH,eAAe,EACfC,0BAA0B,EAC1B7O,qBAAqB,EAErB9H,MAAM,EACN+M,oBAAoB,EACpBI,qBAAsB,EACtB/B,qBAAqB,EAErB5E,QAAQ,EAER0D,gBAAgB,EAChBD,gBAAgB,EAChBqH,aAAc,KAEdF,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnB2J,kBAAkB,EAClBnZ,wBAAyB,GAEzBF,uBAAwB,UAExBxE,WAAY,eACZ6P,gBAAiB,qBACjBzH,iBAAkB,sBAClB7B,kBAAmB,uBACnBC,uBAAwB,6BACxB6B,eAAgB,oBAChBC,eAAgB,oBAChBwV,aAAc,iBACdjV,mBAAoB,wBACpBK,oBAAqB,EAErBqB,oBAAoB,EAEpBwT,cAAc,GAGhB,SAASC,GAAmBvrB,EAAQwrB,GAClC,OAAO,SAAsB/0B,QACf,IAARA,IACFA,EAAM,CAAC,GAET,MAAMg1B,EAAkB33B,OAAO0D,KAAKf,GAAK,GACnCi1B,EAAej1B,EAAIg1B,GACG,kBAAjBC,GAA8C,OAAjBA,IAIR,IAA5B1rB,EAAOyrB,KACTzrB,EAAOyrB,GAAmB,CACxBre,SAAS,IAGW,eAApBqe,GAAoCzrB,EAAOyrB,IAAoBzrB,EAAOyrB,GAAiBre,UAAYpN,EAAOyrB,GAAiBlF,SAAWvmB,EAAOyrB,GAAiBnF,SAChKtmB,EAAOyrB,GAAiBE,MAAO,GAE7B,CAAC,aAAc,aAAalzB,QAAQgzB,IAAoB,GAAKzrB,EAAOyrB,IAAoBzrB,EAAOyrB,GAAiBre,UAAYpN,EAAOyrB,GAAiB1uB,KACtJiD,EAAOyrB,GAAiBE,MAAO,GAE3BF,KAAmBzrB,GAAU,YAAa0rB,GAIT,kBAA5B1rB,EAAOyrB,IAAmC,YAAazrB,EAAOyrB,KACvEzrB,EAAOyrB,GAAiBre,SAAU,GAE/BpN,EAAOyrB,KAAkBzrB,EAAOyrB,GAAmB,CACtDre,SAAS,IAEX,EAAOoe,EAAkB/0B,IATvB,EAAO+0B,EAAkB/0B,IAfzB,EAAO+0B,EAAkB/0B,EAyB7B,CACF,CAGA,MAAMm1B,GAAa,CACjBnhB,gBACA6N,UACA1Y,aACAsa,cACA7K,SACAkB,QACAkP,cACA/U,OAAQsd,GACR5Y,eACAuC,cAAekZ,GACftuB,YAEIsvB,GAAmB,CAAC,EAC1B,MAAMC,GACJ,WAAAl1B,GACE,IAAImG,EACAiD,EACJ,IAAK,IAAImL,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEL,IAAhBD,EAAK7V,QAAgB6V,EAAK,GAAGxU,aAAwE,WAAzD9C,OAAOkB,UAAU5B,SAAS4D,KAAKoU,EAAK,IAAIzS,MAAM,GAAI,GAChGqH,EAASoL,EAAK,IAEbrO,EAAIiD,GAAUoL,EAEZpL,IAAQA,EAAS,CAAC,GACvBA,EAAS,EAAO,CAAC,EAAGA,GAChBjD,IAAOiD,EAAOjD,KAAIiD,EAAOjD,GAAKA,GAClC,MAAMvJ,EAAWsH,IACjB,GAAIkF,EAAOjD,IAA2B,kBAAdiD,EAAOjD,IAAmBvJ,EAASiG,iBAAiBuG,EAAOjD,IAAIxH,OAAS,EAAG,CACjG,MAAMw2B,EAAU,GAQhB,OAPAv4B,EAASiG,iBAAiBuG,EAAOjD,IAAI/D,SAAQ0wB,IAC3C,MAAMsC,EAAY,EAAO,CAAC,EAAGhsB,EAAQ,CACnCjD,GAAI2sB,IAENqC,EAAQl0B,KAAK,IAAIi0B,GAAOE,GAAW,IAG9BD,CACT,CAGA,MAAMvsB,EAAS/D,KACf+D,EAAOP,YAAa,EACpBO,EAAO6F,QAAUO,IACjBpG,EAAOyG,OAASe,EAAU,CACxB9L,UAAW8E,EAAO9E,YAEpBsE,EAAO2F,QAAU2C,IACjBtI,EAAOqL,gBAAkB,CAAC,EAC1BrL,EAAO+L,mBAAqB,GAC5B/L,EAAOysB,QAAU,IAAIzsB,EAAO0sB,aACxBlsB,EAAOisB,SAAW90B,MAAMC,QAAQ4I,EAAOisB,UACzCzsB,EAAOysB,QAAQp0B,QAAQmI,EAAOisB,SAEhC,MAAMT,EAAmB,CAAC,EAC1BhsB,EAAOysB,QAAQjzB,SAAQmzB,IACrBA,EAAI,CACFnsB,SACAR,SACA6J,aAAckiB,GAAmBvrB,EAAQwrB,GACzCtzB,GAAIsH,EAAOtH,GAAGhB,KAAKsI,GACnBwL,KAAMxL,EAAOwL,KAAK9T,KAAKsI,GACvBjH,IAAKiH,EAAOjH,IAAIrB,KAAKsI,GACrB9G,KAAM8G,EAAO9G,KAAKxB,KAAKsI,IACvB,IAIJ,MAAM4sB,EAAe,EAAO,CAAC,EAAGtB,GAAUU,GAqG1C,OAlGAhsB,EAAOQ,OAAS,EAAO,CAAC,EAAGosB,EAAcP,GAAkB7rB,GAC3DR,EAAOipB,eAAiB,EAAO,CAAC,EAAGjpB,EAAOQ,QAC1CR,EAAO6sB,aAAe,EAAO,CAAC,EAAGrsB,GAG7BR,EAAOQ,QAAUR,EAAOQ,OAAO9H,IACjCpE,OAAO0D,KAAKgI,EAAOQ,OAAO9H,IAAIc,SAAQszB,IACpC9sB,EAAOtH,GAAGo0B,EAAW9sB,EAAOQ,OAAO9H,GAAGo0B,GAAW,IAGjD9sB,EAAOQ,QAAUR,EAAOQ,OAAOsL,OACjC9L,EAAO8L,MAAM9L,EAAOQ,OAAOsL,OAI7BxX,OAAO0Y,OAAOhN,EAAQ,CACpB4N,QAAS5N,EAAOQ,OAAOoN,QACvBrQ,KAEAwtB,WAAY,GAEZjd,OAAQ,GACRI,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAEjB,YAAAvB,GACE,MAAmC,eAA5B5M,EAAOQ,OAAO8Z,SACvB,EACA,UAAAzN,GACE,MAAmC,aAA5B7M,EAAOQ,OAAO8Z,SACvB,EAEArH,YAAa,EACbuE,UAAW,EAEX3C,aAAa,EACbC,OAAO,EAEP1U,UAAW,EACXoZ,kBAAmB,EACnBtY,SAAU,EACV6rB,SAAU,EACVlT,WAAW,EACX,qBAAAtG,GAGE,OAAOpS,KAAK6rB,MAAM/wB,KAAKmE,UAAY,GAAK,IAAM,GAAK,EACrD,EAEA4a,eAAgBhb,EAAOQ,OAAOwa,eAC9BC,eAAgBjb,EAAOQ,OAAOya,eAE9BiE,gBAAiB,CACfyC,eAAWziB,EACX0iB,aAAS1iB,EACTwjB,yBAAqBxjB,EACrB2jB,oBAAgB3jB,EAChByjB,iBAAazjB,EACb+Z,sBAAkB/Z,EAClBigB,oBAAgBjgB,EAChB6jB,wBAAoB7jB,EAEpB8jB,kBAAmBhjB,EAAOQ,OAAOwiB,kBAEjCiD,cAAe,EACfgH,kBAAc/tB,EAEdguB,WAAY,GACZ/H,yBAAqBjmB,EACrB0jB,iBAAa1jB,EACb+hB,UAAW,KACXE,QAAS,MAGXiB,YAAY,EAEZc,eAAgBljB,EAAOQ,OAAO0iB,eAC9B5B,QAAS,CACPb,OAAQ,EACRgC,OAAQ,EACRH,SAAU,EACVC,SAAU,EACVtD,KAAM,GAGRkO,aAAc,GACdC,aAAc,IAEhBptB,EAAO9G,KAAK,WAGR8G,EAAOQ,OAAO/K,MAChBuK,EAAOvK,OAKFuK,CACT,CACA,iBAAAoN,CAAkBigB,GAChB,OAAIpxB,KAAK2Q,eACAygB,EAGF,CACL,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB,YAAe,gBACfA,EACJ,CACA,aAAA/P,CAAczb,GACZ,MAAM,SACJwL,EAAQ,OACR7M,GACEvE,KACE6R,EAAS/L,EAAgBsL,EAAU,IAAI7M,EAAOuN,4BAC9CqH,EAAkBzQ,EAAamJ,EAAO,IAC5C,OAAOnJ,EAAa9C,GAAWuT,CACjC,CACA,mBAAArC,CAAoB9G,GAClB,OAAOhQ,KAAKqhB,cAAcrhB,KAAK6R,OAAOmI,MAAKpU,GAA6D,EAAlDA,EAAQwW,aAAa,6BAAmCpM,IAChH,CACA,YAAA+R,GACE,MAAMhe,EAAS/D,MACT,SACJoR,EAAQ,OACR7M,GACER,EACJA,EAAO8N,OAAS/L,EAAgBsL,EAAU,IAAI7M,EAAOuN,2BACvD,CACA,MAAA4b,GACE,MAAM3pB,EAAS/D,KACX+D,EAAO4N,UACX5N,EAAO4N,SAAU,EACb5N,EAAOQ,OAAOyf,YAChBjgB,EAAO0f,gBAET1f,EAAO9G,KAAK,UACd,CACA,OAAAwwB,GACE,MAAM1pB,EAAS/D,KACV+D,EAAO4N,UACZ5N,EAAO4N,SAAU,EACb5N,EAAOQ,OAAOyf,YAChBjgB,EAAOggB,kBAEThgB,EAAO9G,KAAK,WACd,CACA,WAAAo0B,CAAYpsB,EAAUT,GACpB,MAAMT,EAAS/D,KACfiF,EAAWC,KAAKE,IAAIF,KAAKC,IAAIF,EAAU,GAAI,GAC3C,MAAMG,EAAMrB,EAAOgU,eACb5S,EAAMpB,EAAO4U,eACb7T,GAAWK,EAAMC,GAAOH,EAAWG,EACzCrB,EAAOyZ,YAAY1Y,EAA0B,qBAAVN,EAAwB,EAAIA,GAC/DT,EAAO2X,oBACP3X,EAAO4V,qBACT,CACA,oBAAA2T,GACE,MAAMvpB,EAAS/D,KACf,IAAK+D,EAAOQ,OAAOsrB,eAAiB9rB,EAAOzC,GAAI,OAC/C,MAAMgwB,EAAMvtB,EAAOzC,GAAGmW,UAAUzW,MAAM,KAAK/E,QAAOwb,GACT,IAAhCA,EAAUza,QAAQ,WAA+E,IAA5Dya,EAAUza,QAAQ+G,EAAOQ,OAAO+R,0BAE9EvS,EAAO9G,KAAK,oBAAqBq0B,EAAInvB,KAAK,KAC5C,CACA,eAAAovB,CAAgB3rB,GACd,MAAM7B,EAAS/D,KACf,OAAI+D,EAAO2I,UAAkB,GACtB9G,EAAQ6R,UAAUzW,MAAM,KAAK/E,QAAOwb,GACI,IAAtCA,EAAUza,QAAQ,iBAAyE,IAAhDya,EAAUza,QAAQ+G,EAAOQ,OAAOuN,cACjF3P,KAAK,IACV,CACA,iBAAAkY,GACE,MAAMtW,EAAS/D,KACf,IAAK+D,EAAOQ,OAAOsrB,eAAiB9rB,EAAOzC,GAAI,OAC/C,MAAMkwB,EAAU,GAChBztB,EAAO8N,OAAOtU,SAAQqI,IACpB,MAAMkpB,EAAa/qB,EAAOwtB,gBAAgB3rB,GAC1C4rB,EAAQp1B,KAAK,CACXwJ,UACAkpB,eAEF/qB,EAAO9G,KAAK,cAAe2I,EAASkpB,EAAW,IAEjD/qB,EAAO9G,KAAK,gBAAiBu0B,EAC/B,CACA,oBAAAvW,CAAqBwW,EAAMC,QACZ,IAATD,IACFA,EAAO,gBAEK,IAAVC,IACFA,GAAQ,GAEV,MAAM3tB,EAAS/D,MACT,OACJuE,EAAM,OACNsN,EAAM,WACNI,EAAU,gBACVC,EACA/I,KAAMkI,EAAU,YAChB2F,GACEjT,EACJ,IAAI4tB,EAAM,EACV,GAAoC,kBAAzBptB,EAAOmP,cAA4B,OAAOnP,EAAOmP,cAC5D,GAAInP,EAAO0O,eAAgB,CACzB,IACI2e,EADAte,EAAYzB,EAAOmF,GAAe9R,KAAK8P,KAAKnD,EAAOmF,GAAa1C,iBAAmB,EAEvF,IAAK,IAAIza,EAAImd,EAAc,EAAGnd,EAAIgY,EAAO/X,OAAQD,GAAK,EAChDgY,EAAOhY,KAAO+3B,IAChBte,GAAapO,KAAK8P,KAAKnD,EAAOhY,GAAGya,iBACjCqd,GAAO,EACHre,EAAYjC,IAAYugB,GAAY,IAG5C,IAAK,IAAI/3B,EAAImd,EAAc,EAAGnd,GAAK,EAAGA,GAAK,EACrCgY,EAAOhY,KAAO+3B,IAChBte,GAAazB,EAAOhY,GAAGya,gBACvBqd,GAAO,EACHre,EAAYjC,IAAYugB,GAAY,GAG9C,MAEE,GAAa,YAATH,EACF,IAAK,IAAI53B,EAAImd,EAAc,EAAGnd,EAAIgY,EAAO/X,OAAQD,GAAK,EAAG,CACvD,MAAMg4B,EAAcH,EAAQzf,EAAWpY,GAAKqY,EAAgBrY,GAAKoY,EAAW+E,GAAe3F,EAAaY,EAAWpY,GAAKoY,EAAW+E,GAAe3F,EAC9IwgB,IACFF,GAAO,EAEX,MAGA,IAAK,IAAI93B,EAAImd,EAAc,EAAGnd,GAAK,EAAGA,GAAK,EAAG,CAC5C,MAAMg4B,EAAc5f,EAAW+E,GAAe/E,EAAWpY,GAAKwX,EAC1DwgB,IACFF,GAAO,EAEX,CAGJ,OAAOA,CACT,CACA,MAAA9U,GACE,MAAM9Y,EAAS/D,KACf,IAAK+D,GAAUA,EAAO2I,UAAW,OACjC,MAAM,SACJsF,EAAQ,OACRzN,GACER,EAcJ,SAASkZ,IACP,MAAM6U,EAAiB/tB,EAAOuN,cAAmC,EAApBvN,EAAOI,UAAiBJ,EAAOI,UACtE2Z,EAAe5Y,KAAKE,IAAIF,KAAKC,IAAI2sB,EAAgB/tB,EAAO4U,gBAAiB5U,EAAOgU,gBACtFhU,EAAOkZ,aAAaa,GACpB/Z,EAAO2X,oBACP3X,EAAO4V,qBACT,CACA,IAAIoY,EACJ,GApBIxtB,EAAOoP,aACT5P,EAAOinB,gBAET,IAAIjnB,EAAOzC,GAAGtD,iBAAiB,qBAAqBT,SAAQgd,IACtDA,EAAQyX,UACV1X,GAAqBvW,EAAQwW,EAC/B,IAEFxW,EAAOyM,aACPzM,EAAOiN,eACPjN,EAAOyU,iBACPzU,EAAO4V,sBASHpV,EAAOkc,UAAYlc,EAAOkc,SAAS9O,UAAYpN,EAAO2O,QACxD+J,IACI1Y,EAAOkV,YACT1V,EAAO2S,uBAEJ,CACL,IAA8B,SAAzBnS,EAAOmP,eAA4BnP,EAAOmP,cAAgB,IAAM3P,EAAO8U,QAAUtU,EAAO0O,eAAgB,CAC3G,MAAMpB,EAAS9N,EAAO2N,SAAWnN,EAAOmN,QAAQC,QAAU5N,EAAO2N,QAAQG,OAAS9N,EAAO8N,OACzFkgB,EAAahuB,EAAO2a,QAAQ7M,EAAO/X,OAAS,EAAG,GAAG,GAAO,EAC3D,MACEi4B,EAAahuB,EAAO2a,QAAQ3a,EAAOiT,YAAa,GAAG,GAAO,GAEvD+a,GACH9U,GAEJ,CACI1Y,EAAO0R,eAAiBjE,IAAajO,EAAOiO,UAC9CjO,EAAOmS,gBAETnS,EAAO9G,KAAK,SACd,CACA,eAAA6wB,CAAgBmE,EAAcC,QACT,IAAfA,IACFA,GAAa,GAEf,MAAMnuB,EAAS/D,KACTmyB,EAAmBpuB,EAAOQ,OAAO8Z,UAKvC,OAJK4T,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAG1EluB,EAAOzC,GAAG8F,UAAUqP,OAAO,GAAG1S,EAAOQ,OAAO+R,yBAAyB6b,KACrEpuB,EAAOzC,GAAG8F,UAAUC,IAAI,GAAGtD,EAAOQ,OAAO+R,yBAAyB2b,KAClEluB,EAAOupB,uBACPvpB,EAAOQ,OAAO8Z,UAAY4T,EAC1BluB,EAAO8N,OAAOtU,SAAQqI,IACC,aAAjBqsB,EACFrsB,EAAQrH,MAAMqM,MAAQ,GAEtBhF,EAAQrH,MAAMuM,OAAS,EACzB,IAEF/G,EAAO9G,KAAK,mBACRi1B,GAAYnuB,EAAO8Y,UAdd9Y,CAgBX,CACA,uBAAAquB,CAAwB/T,GACtB,MAAMta,EAAS/D,KACX+D,EAAOwN,KAAqB,QAAd8M,IAAwBta,EAAOwN,KAAqB,QAAd8M,IACxDta,EAAOwN,IAAoB,QAAd8M,EACbta,EAAOuN,aAA2C,eAA5BvN,EAAOQ,OAAO8Z,WAA8Bta,EAAOwN,IACrExN,EAAOwN,KACTxN,EAAOzC,GAAG8F,UAAUC,IAAI,GAAGtD,EAAOQ,OAAO+R,6BACzCvS,EAAOzC,GAAGsD,IAAM,QAEhBb,EAAOzC,GAAG8F,UAAUqP,OAAO,GAAG1S,EAAOQ,OAAO+R,6BAC5CvS,EAAOzC,GAAGsD,IAAM,OAElBb,EAAO8Y,SACT,CACA,KAAAwV,CAAMtsB,GACJ,MAAMhC,EAAS/D,KACf,GAAI+D,EAAOuuB,QAAS,OAAO,EAG3B,IAAIhxB,EAAKyE,GAAWhC,EAAOQ,OAAOjD,GAIlC,GAHkB,kBAAPA,IACTA,EAAKvJ,SAASgG,cAAcuD,KAEzBA,EACH,OAAO,EAETA,EAAGyC,OAASA,EACRzC,EAAGixB,YAAcjxB,EAAGixB,WAAWzzB,MAAQwC,EAAGixB,WAAWzzB,KAAKhB,WAAaiG,EAAOQ,OAAO+qB,sBAAsBkD,gBAC7GzuB,EAAOyK,WAAY,GAErB,MAAMikB,EAAqB,IAClB,KAAK1uB,EAAOQ,OAAOqrB,cAAgB,IAAI7uB,OAAOC,MAAM,KAAKmB,KAAK,OAEjEuwB,EAAa,KACjB,GAAIpxB,GAAMA,EAAGuE,YAAcvE,EAAGuE,WAAW9H,cAAe,CACtD,MAAM40B,EAAMrxB,EAAGuE,WAAW9H,cAAc00B,KAExC,OAAOE,CACT,CACA,OAAO7sB,EAAgBxE,EAAImxB,KAAsB,EAAE,EAGrD,IAAIhuB,EAAYiuB,IAmBhB,OAlBKjuB,GAAaV,EAAOQ,OAAOgrB,iBAC9B9qB,EAAYrG,EAAc,MAAO2F,EAAOQ,OAAOqrB,cAC/CtuB,EAAGsgB,OAAOnd,GACVqB,EAAgBxE,EAAI,IAAIyC,EAAOQ,OAAOuN,cAAcvU,SAAQqI,IAC1DnB,EAAUmd,OAAOhc,EAAQ,KAG7BvN,OAAO0Y,OAAOhN,EAAQ,CACpBzC,KACAmD,YACA2M,SAAUrN,EAAOyK,YAAclN,EAAGixB,WAAWzzB,KAAK8zB,WAAatxB,EAAGixB,WAAWzzB,KAAO2F,EACpFmK,OAAQ7K,EAAOyK,UAAYlN,EAAGixB,WAAWzzB,KAAOwC,EAChDgxB,SAAS,EAET/gB,IAA8B,QAAzBjQ,EAAGsD,IAAIgH,eAA6D,QAAlCpD,EAAalH,EAAI,aACxDgQ,aAA0C,eAA5BvN,EAAOQ,OAAO8Z,YAAwD,QAAzB/c,EAAGsD,IAAIgH,eAA6D,QAAlCpD,EAAalH,EAAI,cAC9GkQ,SAAiD,gBAAvChJ,EAAa/D,EAAW,cAE7B,CACT,CACA,IAAAjL,CAAK8H,GACH,MAAMyC,EAAS/D,KACf,GAAI+D,EAAO4I,YAAa,OAAO5I,EAC/B,MAAMuuB,EAAUvuB,EAAOsuB,MAAM/wB,GAC7B,IAAgB,IAAZgxB,EAAmB,OAAOvuB,EAC9BA,EAAO9G,KAAK,cAGR8G,EAAOQ,OAAOoP,aAChB5P,EAAOinB,gBAITjnB,EAAOgrB,aAGPhrB,EAAOyM,aAGPzM,EAAOiN,eACHjN,EAAOQ,OAAO0R,eAChBlS,EAAOmS,gBAILnS,EAAOQ,OAAOyf,YAAcjgB,EAAO4N,SACrC5N,EAAO0f,gBAIL1f,EAAOQ,OAAOuQ,MAAQ/Q,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAChE5N,EAAO2a,QAAQ3a,EAAOQ,OAAO6a,aAAerb,EAAO2N,QAAQuD,aAAc,EAAGlR,EAAOQ,OAAO8X,oBAAoB,GAAO,GAErHtY,EAAO2a,QAAQ3a,EAAOQ,OAAO6a,aAAc,EAAGrb,EAAOQ,OAAO8X,oBAAoB,GAAO,GAIrFtY,EAAOQ,OAAOuQ,MAChB/Q,EAAOud,aAITvd,EAAOsoB,eACP,MAAMwG,EAAe,IAAI9uB,EAAOzC,GAAGtD,iBAAiB,qBAsBpD,OArBI+F,EAAOyK,WACTqkB,EAAaz2B,QAAQ2H,EAAO6K,OAAO5Q,iBAAiB,qBAEtD60B,EAAat1B,SAAQgd,IACfA,EAAQyX,SACV1X,GAAqBvW,EAAQwW,GAE7BA,EAAQ7c,iBAAiB,QAAQf,IAC/B2d,GAAqBvW,EAAQpH,EAAEhD,OAAO,GAE1C,IAEFmhB,GAAQ/W,GAGRA,EAAO4I,aAAc,EACrBmO,GAAQ/W,GAGRA,EAAO9G,KAAK,QACZ8G,EAAO9G,KAAK,aACL8G,CACT,CACA,OAAA+K,CAAQgkB,EAAgBC,QACC,IAAnBD,IACFA,GAAiB,QAEC,IAAhBC,IACFA,GAAc,GAEhB,MAAMhvB,EAAS/D,MACT,OACJuE,EAAM,GACNjD,EAAE,UACFmD,EAAS,OACToN,GACE9N,EACJ,MAA6B,qBAAlBA,EAAOQ,QAA0BR,EAAO2I,YAGnD3I,EAAO9G,KAAK,iBAGZ8G,EAAO4I,aAAc,EAGrB5I,EAAOuoB,eAGH/nB,EAAOuQ,MACT/Q,EAAOuf,cAILyP,IACFhvB,EAAOkrB,gBACH3tB,GAAoB,kBAAPA,GACfA,EAAGuZ,gBAAgB,SAEjBpW,GACFA,EAAUoW,gBAAgB,SAExBhJ,GAAUA,EAAO/X,QACnB+X,EAAOtU,SAAQqI,IACbA,EAAQwB,UAAUqP,OAAOlS,EAAO8T,kBAAmB9T,EAAO+T,uBAAwB/T,EAAO2V,iBAAkB3V,EAAO4V,eAAgB5V,EAAO6V,gBACzIxU,EAAQiV,gBAAgB,SACxBjV,EAAQiV,gBAAgB,0BAA0B,KAIxD9W,EAAO9G,KAAK,WAGZ5E,OAAO0D,KAAKgI,EAAOqL,iBAAiB7R,SAAQszB,IAC1C9sB,EAAOjH,IAAI+zB,EAAU,KAEA,IAAnBiC,IACE/uB,EAAOzC,IAA2B,kBAAdyC,EAAOzC,KAC7ByC,EAAOzC,GAAGyC,OAAS,MAErB7C,EAAY6C,IAEdA,EAAO2I,WAAY,GA5CV,IA8CX,CACA,qBAAOsmB,CAAeC,GACpB,EAAO7C,GAAkB6C,EAC3B,CACA,2BAAW7C,GACT,OAAOA,EACT,CACA,mBAAWf,GACT,OAAOA,EACT,CACA,oBAAO6D,CAAcxC,GACdL,GAAO92B,UAAUk3B,cAAaJ,GAAO92B,UAAUk3B,YAAc,IAClE,MAAMD,EAAUH,GAAO92B,UAAUk3B,YACd,oBAARC,GAAsBF,EAAQxzB,QAAQ0zB,GAAO,GACtDF,EAAQp0B,KAAKs0B,EAEjB,CACA,UAAOyC,CAAI18B,GACT,OAAIiF,MAAMC,QAAQlF,IAChBA,EAAO8G,SAAQ61B,GAAK/C,GAAO6C,cAAcE,KAClC/C,KAETA,GAAO6C,cAAcz8B,GACd45B,GACT,ECp0HF,SAASgD,GAAQvvB,GACf,IAkBIwvB,GAlBA,OACFvvB,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EACJ8J,EAAa,CACX8D,QAAS,CACPC,SAAS,EACTE,OAAQ,GACR0hB,OAAO,EACPC,YAAa,KACbC,eAAgB,KAChBC,sBAAsB,EACtBC,gBAAiB,EACjBC,eAAgB,KAIpB,MAAM77B,EAAWsH,IACjB0E,EAAO2N,QAAU,CACf6hB,MAAO,CAAC,EACRnY,UAAMnY,EACNF,QAAIE,EACJ4O,OAAQ,GACRgiB,OAAQ,EACR5hB,WAAY,IAEd,MAAM6hB,EAAU/7B,EAASqG,cAAc,OACvC,SAASo1B,EAAY5f,EAAO5D,GAC1B,MAAMzL,EAASR,EAAOQ,OAAOmN,QAC7B,GAAInN,EAAOgvB,OAASxvB,EAAO2N,QAAQ6hB,MAAMvjB,GACvC,OAAOjM,EAAO2N,QAAQ6hB,MAAMvjB,GAG9B,IAAIpK,EAmBJ,OAlBIrB,EAAOivB,aACT5tB,EAAUrB,EAAOivB,YAAYj4B,KAAKwI,EAAQ6P,EAAO5D,GAC1B,kBAAZpK,IACTkuB,EAAQC,UAAYnuB,EACpBA,EAAUkuB,EAAQz1B,SAAS,KAG7BuH,EADS7B,EAAOyK,UACNpQ,EAAc,gBAEdA,EAAc,MAAO2F,EAAOQ,OAAOuN,YAE/ClM,EAAQpH,aAAa,0BAA2BwR,GAC3CzL,EAAOivB,cACV5tB,EAAQmuB,UAAYngB,GAElBrP,EAAOgvB,QACTxvB,EAAO2N,QAAQ6hB,MAAMvjB,GAASpK,GAEzBA,CACT,CACA,SAASiX,EAAOmX,EAAOC,EAAYC,GACjC,MAAM,cACJxgB,EAAa,eACba,EAAc,eACdtB,EACA6B,KAAM6T,EAAM,aACZvJ,GACErb,EAAOQ,OACX,GAAI0vB,IAAetL,GAAUvJ,EAAe,EAC1C,OAEF,MAAM,gBACJuU,EAAe,eACfC,GACE7vB,EAAOQ,OAAOmN,SAEhB0J,KAAM+Y,EACNpxB,GAAIqxB,EAAU,OACdviB,EACAI,WAAYoiB,EACZR,OAAQS,GACNvwB,EAAO2N,QACN3N,EAAOQ,OAAO2O,SACjBnP,EAAO2X,oBAET,MAAM1E,EAA0C,qBAArBkd,EAAmCnwB,EAAOiT,aAAe,EAAIkd,EACxF,IAAIK,EAEArf,EACAD,EAFqBsf,EAArBxwB,EAAOuN,aAA2B,QAA0BvN,EAAO4M,eAAiB,OAAS,MAG7FsC,GACFiC,EAAchQ,KAAKmP,MAAMX,EAAgB,GAAKa,EAAiBqf,EAC/D3e,EAAe/P,KAAKmP,MAAMX,EAAgB,GAAKa,EAAiBof,IAEhEze,EAAcxB,GAAiBa,EAAiB,GAAKqf,EACrD3e,GAAgB0T,EAASjV,EAAgBa,GAAkBof,GAE7D,IAAIvY,EAAOpE,EAAc/B,EACrBlS,EAAKiU,EAAc9B,EAClByT,IACHvN,EAAOlW,KAAKC,IAAIiW,EAAM,GACtBrY,EAAKmC,KAAKE,IAAIrC,EAAI8O,EAAO/X,OAAS,IAEpC,IAAI+5B,GAAU9vB,EAAOkO,WAAWmJ,IAAS,IAAMrX,EAAOkO,WAAW,IAAM,GAgBvE,SAASuiB,IACPzwB,EAAOiN,eACPjN,EAAOyU,iBACPzU,EAAO4V,sBACP1c,EAAK,gBACP,CACA,GArBI0rB,GAAU3R,GAAe/B,GAC3BmG,GAAQnG,EACHhC,IAAgB4gB,GAAU9vB,EAAOkO,WAAW,KACxC0W,GAAU3R,EAAc/B,IACjCmG,GAAQnG,EACJhC,IAAgB4gB,GAAU9vB,EAAOkO,WAAW,KAElD5Z,OAAO0Y,OAAOhN,EAAO2N,QAAS,CAC5B0J,OACArY,KACA8wB,SACA5hB,WAAYlO,EAAOkO,WACnBgD,eACAC,gBAQEif,IAAiB/Y,GAAQgZ,IAAerxB,IAAOixB,EAQjD,OAPIjwB,EAAOkO,aAAeoiB,GAAsBR,IAAWS,GACzDvwB,EAAO8N,OAAOtU,SAAQqI,IACpBA,EAAQrH,MAAMg2B,GAAiBV,EAAS3uB,KAAKuE,IAAI1F,EAAOuT,yBAA5B,IAAwD,IAGxFvT,EAAOyU,sBACPvb,EAAK,iBAGP,GAAI8G,EAAOQ,OAAOmN,QAAQ+hB,eAkBxB,OAjBA1vB,EAAOQ,OAAOmN,QAAQ+hB,eAAel4B,KAAKwI,EAAQ,CAChD8vB,SACAzY,OACArY,KACA8O,OAAQ,WACN,MAAM4iB,EAAiB,GACvB,IAAK,IAAI56B,EAAIuhB,EAAMvhB,GAAKkJ,EAAIlJ,GAAK,EAC/B46B,EAAer4B,KAAKyV,EAAOhY,IAE7B,OAAO46B,CACT,CANQ,UAQN1wB,EAAOQ,OAAOmN,QAAQgiB,qBACxBc,IAEAv3B,EAAK,kBAIT,MAAMy3B,EAAiB,GACjBC,EAAgB,GAChBtT,EAAgBrR,IACpB,IAAIqF,EAAarF,EAOjB,OANIA,EAAQ,EACVqF,EAAaxD,EAAO/X,OAASkW,EACpBqF,GAAcxD,EAAO/X,SAE9Bub,GAA0BxD,EAAO/X,QAE5Bub,CAAU,EAEnB,GAAI2e,EACFjwB,EAAO8N,OAAO5V,QAAOqF,GAAMA,EAAG6E,QAAQ,IAAIpC,EAAOQ,OAAOuN,8BAA6BvU,SAAQqI,IAC3FA,EAAQ6Q,QAAQ,SAGlB,IAAK,IAAI5c,EAAIs6B,EAAct6B,GAAKu6B,EAAYv6B,GAAK,EAC/C,GAAIA,EAAIuhB,GAAQvhB,EAAIkJ,EAAI,CACtB,MAAMsS,EAAagM,EAAcxnB,GACjCkK,EAAO8N,OAAO5V,QAAOqF,GAAMA,EAAG6E,QAAQ,IAAIpC,EAAOQ,OAAOuN,uCAAuCuD,8CAAuDA,SAAiB9X,SAAQqI,IAC7KA,EAAQ6Q,QAAQ,GAEpB,CAGJ,MAAMme,EAAWjM,GAAU9W,EAAO/X,OAAS,EACrC+6B,EAASlM,EAAyB,EAAhB9W,EAAO/X,OAAa+X,EAAO/X,OACnD,IAAK,IAAID,EAAI+6B,EAAU/6B,EAAIg7B,EAAQh7B,GAAK,EACtC,GAAIA,GAAKuhB,GAAQvhB,GAAKkJ,EAAI,CACxB,MAAMsS,EAAagM,EAAcxnB,GACP,qBAAfu6B,GAA8BJ,EACvCW,EAAcv4B,KAAKiZ,IAEfxb,EAAIu6B,GAAYO,EAAcv4B,KAAKiZ,GACnCxb,EAAIs6B,GAAcO,EAAet4B,KAAKiZ,GAE9C,CAKF,GAHAsf,EAAcp3B,SAAQyS,IACpBjM,EAAOqN,SAASwQ,OAAO4R,EAAY3hB,EAAO7B,GAAQA,GAAO,IAEvD2Y,EACF,IAAK,IAAI9uB,EAAI66B,EAAe56B,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAAG,CACtD,MAAMmW,EAAQ0kB,EAAe76B,GAC7BkK,EAAOqN,SAASyR,QAAQ2Q,EAAY3hB,EAAO7B,GAAQA,GACrD,MAEA0kB,EAAelG,MAAK,CAACvsB,EAAGwsB,IAAMA,EAAIxsB,IAClCyyB,EAAen3B,SAAQyS,IACrBjM,EAAOqN,SAASyR,QAAQ2Q,EAAY3hB,EAAO7B,GAAQA,GAAO,IAG9DlK,EAAgB/B,EAAOqN,SAAU,+BAA+B7T,SAAQqI,IACtEA,EAAQrH,MAAMg2B,GAAiBV,EAAS3uB,KAAKuE,IAAI1F,EAAOuT,yBAA5B,IAAwD,IAEtFkd,GACF,CACA,SAASM,EAAYjjB,GACnB,GAAsB,kBAAXA,GAAuB,WAAYA,EAC5C,IAAK,IAAIhY,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAClCgY,EAAOhY,IAAIkK,EAAO2N,QAAQG,OAAOzV,KAAKyV,EAAOhY,SAGnDkK,EAAO2N,QAAQG,OAAOzV,KAAKyV,GAE7BgL,GAAO,EACT,CACA,SAASkY,EAAaljB,GACpB,MAAMmF,EAAcjT,EAAOiT,YAC3B,IAAI2E,EAAiB3E,EAAc,EAC/Bge,EAAoB,EACxB,GAAIt5B,MAAMC,QAAQkW,GAAS,CACzB,IAAK,IAAIhY,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAClCgY,EAAOhY,IAAIkK,EAAO2N,QAAQG,OAAOvB,QAAQuB,EAAOhY,IAEtD8hB,EAAiB3E,EAAcnF,EAAO/X,OACtCk7B,EAAoBnjB,EAAO/X,MAC7B,MACEiK,EAAO2N,QAAQG,OAAOvB,QAAQuB,GAEhC,GAAI9N,EAAOQ,OAAOmN,QAAQ6hB,MAAO,CAC/B,MAAMA,EAAQxvB,EAAO2N,QAAQ6hB,MACvB0B,EAAW,CAAC,EAClB58B,OAAO0D,KAAKw3B,GAAOh2B,SAAQ23B,IACzB,MAAMC,EAAW5B,EAAM2B,GACjBE,EAAgBD,EAAS/Y,aAAa,2BACxCgZ,GACFD,EAAS32B,aAAa,0BAA2BqS,SAASukB,EAAe,IAAMJ,GAEjFC,EAASpkB,SAASqkB,EAAa,IAAMF,GAAqBG,CAAQ,IAEpEpxB,EAAO2N,QAAQ6hB,MAAQ0B,CACzB,CACApY,GAAO,GACP9Y,EAAO2a,QAAQ/C,EAAgB,EACjC,CACA,SAAS0Z,EAAYC,GACnB,GAA6B,qBAAlBA,GAAmD,OAAlBA,EAAwB,OACpE,IAAIte,EAAcjT,EAAOiT,YACzB,GAAItb,MAAMC,QAAQ25B,GAChB,IAAK,IAAIz7B,EAAIy7B,EAAcx7B,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAC9CkK,EAAOQ,OAAOmN,QAAQ6hB,eACjBxvB,EAAO2N,QAAQ6hB,MAAM+B,EAAcz7B,IAE1CxB,OAAO0D,KAAKgI,EAAO2N,QAAQ6hB,OAAOh2B,SAAQnD,IACpCA,EAAMk7B,IACRvxB,EAAO2N,QAAQ6hB,MAAMn5B,EAAM,GAAK2J,EAAO2N,QAAQ6hB,MAAMn5B,GACrD2J,EAAO2N,QAAQ6hB,MAAMn5B,EAAM,GAAGoE,aAAa,0BAA2BpE,EAAM,UACrE2J,EAAO2N,QAAQ6hB,MAAMn5B,GAC9B,KAGJ2J,EAAO2N,QAAQG,OAAO9U,OAAOu4B,EAAcz7B,GAAI,GAC3Cy7B,EAAcz7B,GAAKmd,IAAaA,GAAe,GACnDA,EAAc9R,KAAKC,IAAI6R,EAAa,QAGlCjT,EAAOQ,OAAOmN,QAAQ6hB,eACjBxvB,EAAO2N,QAAQ6hB,MAAM+B,GAE5Bj9B,OAAO0D,KAAKgI,EAAO2N,QAAQ6hB,OAAOh2B,SAAQnD,IACpCA,EAAMk7B,IACRvxB,EAAO2N,QAAQ6hB,MAAMn5B,EAAM,GAAK2J,EAAO2N,QAAQ6hB,MAAMn5B,GACrD2J,EAAO2N,QAAQ6hB,MAAMn5B,EAAM,GAAGoE,aAAa,0BAA2BpE,EAAM,UACrE2J,EAAO2N,QAAQ6hB,MAAMn5B,GAC9B,KAGJ2J,EAAO2N,QAAQG,OAAO9U,OAAOu4B,EAAe,GACxCA,EAAgBte,IAAaA,GAAe,GAChDA,EAAc9R,KAAKC,IAAI6R,EAAa,GAEtC6F,GAAO,GACP9Y,EAAO2a,QAAQ1H,EAAa,EAC9B,CACA,SAASue,IACPxxB,EAAO2N,QAAQG,OAAS,GACpB9N,EAAOQ,OAAOmN,QAAQ6hB,QACxBxvB,EAAO2N,QAAQ6hB,MAAQ,CAAC,GAE1B1W,GAAO,GACP9Y,EAAO2a,QAAQ,EAAG,EACpB,CACAjiB,EAAG,cAAc,KACf,IAAKsH,EAAOQ,OAAOmN,QAAQC,QAAS,OACpC,IAAI6jB,EACJ,GAAkD,qBAAvCzxB,EAAO6sB,aAAalf,QAAQG,OAAwB,CAC7D,MAAMA,EAAS,IAAI9N,EAAOqN,SAAS/S,UAAUpC,QAAOqF,GAAMA,EAAG6E,QAAQ,IAAIpC,EAAOQ,OAAOuN,8BACnFD,GAAUA,EAAO/X,SACnBiK,EAAO2N,QAAQG,OAAS,IAAIA,GAC5B2jB,GAAoB,EACpB3jB,EAAOtU,SAAQ,CAACqI,EAASyP,KACvBzP,EAAQpH,aAAa,0BAA2B6W,GAChDtR,EAAO2N,QAAQ6hB,MAAMle,GAAczP,EACnCA,EAAQ6Q,QAAQ,IAGtB,CACK+e,IACHzxB,EAAO2N,QAAQG,OAAS9N,EAAOQ,OAAOmN,QAAQG,QAEhD9N,EAAO+qB,WAAW1yB,KAAK,GAAG2H,EAAOQ,OAAO+R,iCACxCvS,EAAOQ,OAAO4R,qBAAsB,EACpCpS,EAAOipB,eAAe7W,qBAAsB,EAC5C0G,GAAO,GAAO,EAAK,IAErBpgB,EAAG,gBAAgB,KACZsH,EAAOQ,OAAOmN,QAAQC,UACvB5N,EAAOQ,OAAO2O,UAAYnP,EAAOmb,mBACnC5e,aAAagzB,GACbA,EAAiBjzB,YAAW,KAC1Bwc,GAAQ,GACP,MAEHA,IACF,IAEFpgB,EAAG,sBAAsB,KAClBsH,EAAOQ,OAAOmN,QAAQC,SACvB5N,EAAOQ,OAAO2O,SAChBzP,EAAeM,EAAOU,UAAW,wBAAyB,GAAGV,EAAO6O,gBACtE,IAEFva,OAAO0Y,OAAOhN,EAAO2N,QAAS,CAC5BojB,cACAC,eACAM,cACAE,kBACA1Y,UAEJ,CCtVA,SAAS4Y,GAAS3xB,GAChB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EACJ,MAAM/L,EAAWsH,IACXzE,EAAS+F,IAWf,SAAS+0B,EAAOpmB,GACd,IAAKvL,EAAO4N,QAAS,OACrB,MACEL,aAAcC,GACZxN,EACJ,IAAIpH,EAAI2S,EACJ3S,EAAEmoB,gBAAenoB,EAAIA,EAAEmoB,eAC3B,MAAM6Q,EAAKh5B,EAAEi5B,SAAWj5B,EAAEk5B,SACpBC,EAAa/xB,EAAOQ,OAAOwxB,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IAAK5xB,EAAOgb,iBAAmBhb,EAAO4M,gBAAkBwlB,GAAgBpyB,EAAO6M,cAAgBylB,GAAeJ,GAC5G,OAAO,EAET,IAAKlyB,EAAOib,iBAAmBjb,EAAO4M,gBAAkBulB,GAAenyB,EAAO6M,cAAgBwlB,GAAaJ,GACzG,OAAO,EAET,KAAIr5B,EAAE25B,UAAY35B,EAAE45B,QAAU55B,EAAE65B,SAAW75B,EAAE85B,YAGzC1+B,EAAS6F,gBAAiB7F,EAAS6F,cAAcE,UAA+D,UAAlD/F,EAAS6F,cAAcE,SAAS8N,eAA+E,aAAlD7T,EAAS6F,cAAcE,SAAS8N,eAA/J,CAGA,GAAI7H,EAAOQ,OAAOwxB,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAI9tB,EAAe9E,EAAOzC,GAAI,IAAIyC,EAAOQ,OAAOuN,4BAA4BhY,OAAS,GAAgF,IAA3E+O,EAAe9E,EAAOzC,GAAI,IAAIyC,EAAOQ,OAAO2V,oBAAoBpgB,OACxJ,OAEF,MAAMwH,EAAKyC,EAAOzC,GACZs1B,EAAct1B,EAAGmP,YACjBomB,EAAev1B,EAAGoP,aAClBomB,EAAcl8B,EAAO+pB,WACrBoS,EAAen8B,EAAOuzB,YACtB6I,EAAe1vB,EAAchG,GAC/BiQ,IAAKylB,EAAahvB,MAAQ1G,EAAGuG,YACjC,MAAMovB,EAAc,CAAC,CAACD,EAAahvB,KAAMgvB,EAAajvB,KAAM,CAACivB,EAAahvB,KAAO4uB,EAAaI,EAAajvB,KAAM,CAACivB,EAAahvB,KAAMgvB,EAAajvB,IAAM8uB,GAAe,CAACG,EAAahvB,KAAO4uB,EAAaI,EAAajvB,IAAM8uB,IAC5N,IAAK,IAAIh9B,EAAI,EAAGA,EAAIo9B,EAAYn9B,OAAQD,GAAK,EAAG,CAC9C,MAAMw0B,EAAQ4I,EAAYp9B,GAC1B,GAAIw0B,EAAM,IAAM,GAAKA,EAAM,IAAMyI,GAAezI,EAAM,IAAM,GAAKA,EAAM,IAAM0I,EAAc,CACzF,GAAiB,IAAb1I,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCsI,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MACf,CACI5yB,EAAO4M,iBACLqlB,GAAYC,GAAcC,GAAeC,KACvCx5B,EAAEioB,eAAgBjoB,EAAEioB,iBAAsBjoB,EAAEu6B,aAAc,KAE3DjB,GAAcE,KAAkB5kB,IAAQykB,GAAYE,IAAgB3kB,IAAKxN,EAAO+b,cAChFkW,GAAYE,KAAiB3kB,IAAQ0kB,GAAcE,IAAiB5kB,IAAKxN,EAAOqc,eAEjF4V,GAAYC,GAAcG,GAAaC,KACrC15B,EAAEioB,eAAgBjoB,EAAEioB,iBAAsBjoB,EAAEu6B,aAAc,IAE5DjB,GAAcI,IAAatyB,EAAO+b,aAClCkW,GAAYI,IAAWryB,EAAOqc,aAEpCnjB,EAAK,WAAY04B,EArCjB,CAuCF,CACA,SAASjI,IACH3pB,EAAOgyB,SAASpkB,UACpB5Z,EAAS2F,iBAAiB,UAAWg4B,GACrC3xB,EAAOgyB,SAASpkB,SAAU,EAC5B,CACA,SAAS8b,IACF1pB,EAAOgyB,SAASpkB,UACrB5Z,EAAS4F,oBAAoB,UAAW+3B,GACxC3xB,EAAOgyB,SAASpkB,SAAU,EAC5B,CAtFA5N,EAAOgyB,SAAW,CAChBpkB,SAAS,GAEX/D,EAAa,CACXmoB,SAAU,CACRpkB,SAAS,EACT+kB,gBAAgB,EAChBZ,YAAY,KAgFhBr5B,EAAG,QAAQ,KACLsH,EAAOQ,OAAOwxB,SAASpkB,SACzB+b,GACF,IAEFjxB,EAAG,WAAW,KACRsH,EAAOgyB,SAASpkB,SAClB8b,GACF,IAEFp1B,OAAO0Y,OAAOhN,EAAOgyB,SAAU,CAC7BrI,SACAD,WAEJ,CC9GA,SAAS0J,GAAWrzB,GAClB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EACJ,MAAMlJ,EAAS+F,IAiBf,IAAIy2B,EAhBJxpB,EAAa,CACXypB,WAAY,CACV1lB,SAAS,EACT2lB,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,KACfC,kBAAmB,0BAGvB9zB,EAAOszB,WAAa,CAClB1lB,SAAS,GAGX,IACImmB,EADAC,EAAiB12B,IAErB,MAAM22B,EAAoB,GAC1B,SAAS3X,EAAU1jB,GAEjB,MAAMs7B,EAAa,GACbC,EAAc,GACdC,EAAc,IACpB,IAAIC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAqDT,MAlDI,WAAY57B,IACd07B,EAAK17B,EAAEosB,QAEL,eAAgBpsB,IAClB07B,GAAM17B,EAAE67B,WAAa,KAEnB,gBAAiB77B,IACnB07B,GAAM17B,EAAE87B,YAAc,KAEpB,gBAAiB97B,IACnBy7B,GAAMz7B,EAAE+7B,YAAc,KAIpB,SAAU/7B,GAAKA,EAAE8E,OAAS9E,EAAEg8B,kBAC9BP,EAAKC,EACLA,EAAK,GAEPC,EAAKF,EAAKH,EACVM,EAAKF,EAAKJ,EACN,WAAYt7B,IACd47B,EAAK57B,EAAEi8B,QAEL,WAAYj8B,IACd27B,EAAK37B,EAAEk8B,QAELl8B,EAAE25B,WAAagC,IAEjBA,EAAKC,EACLA,EAAK,IAEFD,GAAMC,IAAO57B,EAAEm8B,YACE,IAAhBn8B,EAAEm8B,WAEJR,GAAMJ,EACNK,GAAML,IAGNI,GAAMH,EACNI,GAAMJ,IAKNG,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEd,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,EAEZ,CACA,SAASY,IACFp1B,EAAO4N,UACZ5N,EAAOq1B,cAAe,EACxB,CACA,SAASC,IACFt1B,EAAO4N,UACZ5N,EAAOq1B,cAAe,EACxB,CACA,SAASE,EAAcC,GACrB,QAAIx1B,EAAOQ,OAAO8yB,WAAWM,gBAAkB4B,EAASC,MAAQz1B,EAAOQ,OAAO8yB,WAAWM,oBAIrF5zB,EAAOQ,OAAO8yB,WAAWO,eAAiBv2B,IAAQ02B,EAAiBh0B,EAAOQ,OAAO8yB,WAAWO,iBAQ5F2B,EAASC,OAAS,GAAKn4B,IAAQ02B,EAAiB,KAgBhDwB,EAASlb,UAAY,EACjBta,EAAO8U,QAAS9U,EAAOQ,OAAOuQ,MAAU/Q,EAAO6Z,YACnD7Z,EAAO+b,YACP7iB,EAAK,SAAUs8B,EAASE,MAEf11B,EAAO6U,cAAe7U,EAAOQ,OAAOuQ,MAAU/Q,EAAO6Z,YAChE7Z,EAAOqc,YACPnjB,EAAK,SAAUs8B,EAASE,MAG1B1B,GAAiB,IAAIn9B,EAAOtB,MAAO0L,WAE5B,IACT,CACA,SAAS00B,EAAcH,GACrB,MAAMh1B,EAASR,EAAOQ,OAAO8yB,WAC7B,GAAIkC,EAASlb,UAAY,GACvB,GAAIta,EAAO8U,QAAU9U,EAAOQ,OAAOuQ,MAAQvQ,EAAO+yB,eAEhD,OAAO,OAEJ,GAAIvzB,EAAO6U,cAAgB7U,EAAOQ,OAAOuQ,MAAQvQ,EAAO+yB,eAE7D,OAAO,EAET,OAAO,CACT,CACA,SAAS5B,EAAOpmB,GACd,IAAI3S,EAAI2S,EACJga,GAAsB,EAC1B,IAAKvlB,EAAO4N,QAAS,OAGrB,GAAIrC,EAAM3V,OAAO8gB,QAAQ,IAAI1W,EAAOQ,OAAO8yB,WAAWQ,qBAAsB,OAC5E,MAAMtzB,EAASR,EAAOQ,OAAO8yB,WACzBtzB,EAAOQ,OAAO2O,SAChBvW,EAAEioB,iBAEJ,IAAIW,EAAWxhB,EAAOzC,GACwB,cAA1CyC,EAAOQ,OAAO8yB,WAAWK,eAC3BnS,EAAWxtB,SAASgG,cAAcgG,EAAOQ,OAAO8yB,WAAWK,eAE7D,MAAMiC,EAAyBpU,GAAYA,EAAS3e,SAASjK,EAAEhD,QAC/D,IAAKoK,EAAOq1B,eAAiBO,IAA2Bp1B,EAAO+yB,eAAgB,OAAO,EAClF36B,EAAEmoB,gBAAenoB,EAAIA,EAAEmoB,eAC3B,IAAI0U,EAAQ,EACZ,MAAMI,EAAY71B,EAAOuN,cAAgB,EAAI,EACvCpB,EAAOmQ,EAAU1jB,GACvB,GAAI4H,EAAOizB,YACT,GAAIzzB,EAAO4M,eAAgB,CACzB,KAAIzL,KAAKuE,IAAIyG,EAAK+oB,QAAU/zB,KAAKuE,IAAIyG,EAAKgpB,SAA+C,OAAO,EAA7CM,GAAStpB,EAAK+oB,OAASW,CAC5E,KAAO,MAAI10B,KAAKuE,IAAIyG,EAAKgpB,QAAUh0B,KAAKuE,IAAIyG,EAAK+oB,SAAmC,OAAO,EAAjCO,GAAStpB,EAAKgpB,MAAuB,MAE/FM,EAAQt0B,KAAKuE,IAAIyG,EAAK+oB,QAAU/zB,KAAKuE,IAAIyG,EAAKgpB,SAAWhpB,EAAK+oB,OAASW,GAAa1pB,EAAKgpB,OAE3F,GAAc,IAAVM,EAAa,OAAO,EACpBj1B,EAAOgzB,SAAQiC,GAASA,GAG5B,IAAIK,EAAY91B,EAAOvC,eAAiBg4B,EAAQj1B,EAAOkzB,YAavD,GAZIoC,GAAa91B,EAAOgU,iBAAgB8hB,EAAY91B,EAAOgU,gBACvD8hB,GAAa91B,EAAO4U,iBAAgBkhB,EAAY91B,EAAO4U,gBAS3D2Q,IAAsBvlB,EAAOQ,OAAOuQ,QAAgB+kB,IAAc91B,EAAOgU,gBAAkB8hB,IAAc91B,EAAO4U,gBAC5G2Q,GAAuBvlB,EAAOQ,OAAO6jB,QAAQzrB,EAAE0rB,kBAC9CtkB,EAAOQ,OAAOkc,UAAa1c,EAAOQ,OAAOkc,SAAS9O,QAoChD,CAOL,MAAM4nB,EAAW,CACfn1B,KAAM/C,IACNm4B,MAAOt0B,KAAKuE,IAAI+vB,GAChBnb,UAAWnZ,KAAK40B,KAAKN,IAEjBO,EAAoBjC,GAAuByB,EAASn1B,KAAO0zB,EAAoB1zB,KAAO,KAAOm1B,EAASC,OAAS1B,EAAoB0B,OAASD,EAASlb,YAAcyZ,EAAoBzZ,UAC7L,IAAK0b,EAAmB,CACtBjC,OAAsB70B,EACtB,IAAI+2B,EAAWj2B,EAAOvC,eAAiBg4B,EAAQj1B,EAAOkzB,YACtD,MAAM1e,EAAehV,EAAO6U,YACtBI,EAASjV,EAAO8U,MAiBtB,GAhBImhB,GAAYj2B,EAAOgU,iBAAgBiiB,EAAWj2B,EAAOgU,gBACrDiiB,GAAYj2B,EAAO4U,iBAAgBqhB,EAAWj2B,EAAO4U,gBACzD5U,EAAO6S,cAAc,GACrB7S,EAAOkZ,aAAa+c,GACpBj2B,EAAOyU,iBACPzU,EAAO2X,oBACP3X,EAAO4V,wBACFZ,GAAgBhV,EAAO6U,cAAgBI,GAAUjV,EAAO8U,QAC3D9U,EAAO4V,sBAEL5V,EAAOQ,OAAOuQ,MAChB/Q,EAAO6b,QAAQ,CACbvB,UAAWkb,EAASlb,UAAY,EAAI,OAAS,OAC7C2D,cAAc,IAGdje,EAAOQ,OAAOkc,SAASwZ,OAAQ,CAYjC35B,aAAa82B,GACbA,OAAUn0B,EACN+0B,EAAkBl+B,QAAU,IAC9Bk+B,EAAkBxxB,QAGpB,MAAM0zB,EAAYlC,EAAkBl+B,OAASk+B,EAAkBA,EAAkBl+B,OAAS,QAAKmJ,EACzFk3B,EAAanC,EAAkB,GAErC,GADAA,EAAkB57B,KAAKm9B,GACnBW,IAAcX,EAASC,MAAQU,EAAUV,OAASD,EAASlb,YAAc6b,EAAU7b,WAErF2Z,EAAkBj7B,OAAO,QACpB,GAAIi7B,EAAkBl+B,QAAU,IAAMy/B,EAASn1B,KAAO+1B,EAAW/1B,KAAO,KAAO+1B,EAAWX,MAAQD,EAASC,OAAS,GAAKD,EAASC,OAAS,EAAG,CAOnJ,MAAMY,EAAkBZ,EAAQ,EAAI,GAAM,GAC1C1B,EAAsByB,EACtBvB,EAAkBj7B,OAAO,GACzBq6B,EAAUj2B,GAAS,MACb4C,EAAO2I,WAAc3I,EAAOQ,QAChCR,EAAOgd,eAAehd,EAAOQ,OAAOC,OAAO,OAAMvB,EAAWm3B,EAAgB,GAC3E,EACL,CAEKhD,IAIHA,EAAUj2B,GAAS,KACjB,GAAI4C,EAAO2I,YAAc3I,EAAOQ,OAAQ,OACxC,MAAM61B,EAAkB,GACxBtC,EAAsByB,EACtBvB,EAAkBj7B,OAAO,GACzBgH,EAAOgd,eAAehd,EAAOQ,OAAOC,OAAO,OAAMvB,EAAWm3B,EAAgB,GAC3E,KAEP,CAQA,GALKL,GAAmB98B,EAAK,SAAUN,GAGnCoH,EAAOQ,OAAO2mB,UAAYnnB,EAAOQ,OAAO2mB,SAASmP,sBAAsBt2B,EAAOmnB,SAASoP,OAEvF/1B,EAAO+yB,iBAAmB0C,IAAaj2B,EAAOgU,gBAAkBiiB,IAAaj2B,EAAO4U,gBACtF,OAAO,CAEX,CACF,KAtIgE,CAE9D,MAAM4gB,EAAW,CACfn1B,KAAM/C,IACNm4B,MAAOt0B,KAAKuE,IAAI+vB,GAChBnb,UAAWnZ,KAAK40B,KAAKN,GACrBC,IAAKnqB,GAIH0oB,EAAkBl+B,QAAU,GAC9Bk+B,EAAkBxxB,QAGpB,MAAM0zB,EAAYlC,EAAkBl+B,OAASk+B,EAAkBA,EAAkBl+B,OAAS,QAAKmJ,EAmB/F,GAlBA+0B,EAAkB57B,KAAKm9B,GAQnBW,GACEX,EAASlb,YAAc6b,EAAU7b,WAAakb,EAASC,MAAQU,EAAUV,OAASD,EAASn1B,KAAO81B,EAAU91B,KAAO,MACrHk1B,EAAcC,GAGhBD,EAAcC,GAKZG,EAAcH,GAChB,OAAO,CAEX,CAoGA,OADI58B,EAAEioB,eAAgBjoB,EAAEioB,iBAAsBjoB,EAAEu6B,aAAc,GACvD,CACT,CACA,SAASjoB,EAAOI,GACd,IAAIkW,EAAWxhB,EAAOzC,GACwB,cAA1CyC,EAAOQ,OAAO8yB,WAAWK,eAC3BnS,EAAWxtB,SAASgG,cAAcgG,EAAOQ,OAAO8yB,WAAWK,eAE7DnS,EAASlW,GAAQ,aAAc8pB,GAC/B5T,EAASlW,GAAQ,aAAcgqB,GAC/B9T,EAASlW,GAAQ,QAASqmB,EAC5B,CACA,SAAShI,IACP,OAAI3pB,EAAOQ,OAAO2O,SAChBnP,EAAOU,UAAU9G,oBAAoB,QAAS+3B,IACvC,IAEL3xB,EAAOszB,WAAW1lB,UACtB1C,EAAO,oBACPlL,EAAOszB,WAAW1lB,SAAU,GACrB,EACT,CACA,SAAS8b,IACP,OAAI1pB,EAAOQ,OAAO2O,SAChBnP,EAAOU,UAAU/G,iBAAiB4R,MAAOomB,IAClC,KAEJ3xB,EAAOszB,WAAW1lB,UACvB1C,EAAO,uBACPlL,EAAOszB,WAAW1lB,SAAU,GACrB,EACT,CACAlV,EAAG,QAAQ,MACJsH,EAAOQ,OAAO8yB,WAAW1lB,SAAW5N,EAAOQ,OAAO2O,SACrDua,IAEE1pB,EAAOQ,OAAO8yB,WAAW1lB,SAAS+b,GAAQ,IAEhDjxB,EAAG,WAAW,KACRsH,EAAOQ,OAAO2O,SAChBwa,IAEE3pB,EAAOszB,WAAW1lB,SAAS8b,GAAS,IAE1Cp1B,OAAO0Y,OAAOhN,EAAOszB,WAAY,CAC/B3J,SACAD,WAEJ,CCtYA,SAAS8M,GAA0Bx2B,EAAQipB,EAAgBzoB,EAAQi2B,GAejE,OAdIz2B,EAAOQ,OAAOgrB,gBAChBl3B,OAAO0D,KAAKy+B,GAAYj9B,SAAQnD,IAC9B,IAAKmK,EAAOnK,KAAwB,IAAhBmK,EAAO2rB,KAAe,CACxC,IAAInqB,EAAUD,EAAgB/B,EAAOzC,GAAI,IAAIk5B,EAAWpgC,MAAQ,GAC3D2L,IACHA,EAAU3H,EAAc,MAAOo8B,EAAWpgC,IAC1C2L,EAAQ0R,UAAY+iB,EAAWpgC,GAC/B2J,EAAOzC,GAAGsgB,OAAO7b,IAEnBxB,EAAOnK,GAAO2L,EACdinB,EAAe5yB,GAAO2L,CACxB,KAGGxB,CACT,CCfA,SAASk2B,GAAW32B,GAClB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EAgBJ,SAAS42B,EAAMp5B,GACb,IAAIqxB,EACJ,OAAIrxB,GAAoB,kBAAPA,GAAmByC,EAAOyK,YACzCmkB,EAAM5uB,EAAOzC,GAAGvD,cAAcuD,IAAOyC,EAAO6K,OAAO7Q,cAAcuD,GAC7DqxB,GAAYA,GAEdrxB,IACgB,kBAAPA,IAAiBqxB,EAAM,IAAI56B,SAASiG,iBAAiBsD,KAC5DyC,EAAOQ,OAAOmrB,mBAAmC,kBAAPpuB,GAAmBqxB,GAAOA,EAAI74B,OAAS,GAA+C,IAA1CiK,EAAOzC,GAAGtD,iBAAiBsD,GAAIxH,OACvH64B,EAAM5uB,EAAOzC,GAAGvD,cAAcuD,GACrBqxB,GAAsB,IAAfA,EAAI74B,SACpB64B,EAAMA,EAAI,KAGVrxB,IAAOqxB,EAAYrxB,EAEhBqxB,EACT,CACA,SAASgI,EAASr5B,EAAIs5B,GACpB,MAAMr2B,EAASR,EAAOQ,OAAOqmB,WAC7BtpB,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACLA,IACFA,EAAMzzB,UAAUwzB,EAAW,MAAQ,aAAar2B,EAAOu2B,cAAc95B,MAAM,MACrD,WAAlB65B,EAAME,UAAsBF,EAAMD,SAAWA,GAC7C72B,EAAOQ,OAAO0R,eAAiBlS,EAAO4N,SACxCkpB,EAAMzzB,UAAUrD,EAAO6f,SAAW,MAAQ,UAAUrf,EAAOy2B,WAE/D,GAEJ,CACA,SAASne,IAEP,MAAM,OACJgO,EAAM,OACNC,GACE/mB,EAAO6mB,WACX,GAAI7mB,EAAOQ,OAAOuQ,KAGhB,OAFA6lB,EAAS7P,GAAQ,QACjB6P,EAAS9P,GAAQ,GAGnB8P,EAAS7P,EAAQ/mB,EAAO6U,cAAgB7U,EAAOQ,OAAO+W,QACtDqf,EAAS9P,EAAQ9mB,EAAO8U,QAAU9U,EAAOQ,OAAO+W,OAClD,CACA,SAAS2f,EAAYt+B,GACnBA,EAAEioB,mBACE7gB,EAAO6U,aAAgB7U,EAAOQ,OAAOuQ,MAAS/Q,EAAOQ,OAAO+W,UAChEvX,EAAOqc,YACPnjB,EAAK,kBACP,CACA,SAASi+B,EAAYv+B,GACnBA,EAAEioB,mBACE7gB,EAAO8U,OAAU9U,EAAOQ,OAAOuQ,MAAS/Q,EAAOQ,OAAO+W,UAC1DvX,EAAO+b,YACP7iB,EAAK,kBACP,CACA,SAASzD,IACP,MAAM+K,EAASR,EAAOQ,OAAOqmB,WAK7B,GAJA7mB,EAAOQ,OAAOqmB,WAAa2P,GAA0Bx2B,EAAQA,EAAOipB,eAAepC,WAAY7mB,EAAOQ,OAAOqmB,WAAY,CACvHC,OAAQ,qBACRC,OAAQ,wBAEJvmB,EAAOsmB,SAAUtmB,EAAOumB,OAAS,OACvC,IAAID,EAAS6P,EAAMn2B,EAAOsmB,QACtBC,EAAS4P,EAAMn2B,EAAOumB,QAC1BzyB,OAAO0Y,OAAOhN,EAAO6mB,WAAY,CAC/BC,SACAC,WAEFD,EAASvhB,EAAkBuhB,GAC3BC,EAASxhB,EAAkBwhB,GAC3B,MAAMqQ,EAAa,CAAC75B,EAAIsD,KAClBtD,GACFA,EAAG5D,iBAAiB,QAAiB,SAARkH,EAAiBs2B,EAAcD,IAEzDl3B,EAAO4N,SAAWrQ,GACrBA,EAAG8F,UAAUC,OAAO9C,EAAOy2B,UAAUh6B,MAAM,KAC7C,EAEF6pB,EAAOttB,SAAQ+D,GAAM65B,EAAW75B,EAAI,UACpCwpB,EAAOvtB,SAAQ+D,GAAM65B,EAAW75B,EAAI,SACtC,CACA,SAASwN,IACP,IAAI,OACF+b,EAAM,OACNC,GACE/mB,EAAO6mB,WACXC,EAASvhB,EAAkBuhB,GAC3BC,EAASxhB,EAAkBwhB,GAC3B,MAAMsQ,EAAgB,CAAC95B,EAAIsD,KACzBtD,EAAG3D,oBAAoB,QAAiB,SAARiH,EAAiBs2B,EAAcD,GAC/D35B,EAAG8F,UAAUqP,UAAU1S,EAAOQ,OAAOqmB,WAAWkQ,cAAc95B,MAAM,KAAK,EAE3E6pB,EAAOttB,SAAQ+D,GAAM85B,EAAc95B,EAAI,UACvCwpB,EAAOvtB,SAAQ+D,GAAM85B,EAAc95B,EAAI,SACzC,CA/GAsM,EAAa,CACXgd,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACRuQ,aAAa,EACbP,cAAe,yBACfQ,YAAa,uBACbN,UAAW,qBACXO,wBAAyB,gCAG7Bx3B,EAAO6mB,WAAa,CAClBC,OAAQ,KACRC,OAAQ,MAmGVruB,EAAG,QAAQ,MACgC,IAArCsH,EAAOQ,OAAOqmB,WAAWjZ,QAE3B8b,KAEAj0B,IACAqjB,IACF,IAEFpgB,EAAG,+BAA+B,KAChCogB,GAAQ,IAEVpgB,EAAG,WAAW,KACZqS,GAAS,IAEXrS,EAAG,kBAAkB,KACnB,IAAI,OACFouB,EAAM,OACNC,GACE/mB,EAAO6mB,WACXC,EAASvhB,EAAkBuhB,GAC3BC,EAASxhB,EAAkBwhB,GACvB/mB,EAAO4N,QACTkL,IAGF,IAAIgO,KAAWC,GAAQ7uB,QAAOqF,KAAQA,IAAI/D,SAAQ+D,GAAMA,EAAG8F,UAAUC,IAAItD,EAAOQ,OAAOqmB,WAAWoQ,YAAW,IAE/Gv+B,EAAG,SAAS,CAAC++B,EAAI7+B,KACf,IAAI,OACFkuB,EAAM,OACNC,GACE/mB,EAAO6mB,WACXC,EAASvhB,EAAkBuhB,GAC3BC,EAASxhB,EAAkBwhB,GAC3B,MAAMvF,EAAW5oB,EAAEhD,OACnB,IAAI8hC,EAAiB3Q,EAAOjkB,SAAS0e,IAAasF,EAAOhkB,SAAS0e,GAClE,GAAIxhB,EAAOyK,YAAcitB,EAAgB,CACvC,MAAMlf,EAAO5f,EAAE4f,MAAQ5f,EAAEopB,cAAgBppB,EAAEopB,eACvCxJ,IACFkf,EAAiBlf,EAAKvC,MAAKwC,GAAUqO,EAAOhkB,SAAS2V,IAAWsO,EAAOjkB,SAAS2V,KAEpF,CACA,GAAIzY,EAAOQ,OAAOqmB,WAAWyQ,cAAgBI,EAAgB,CAC3D,GAAI13B,EAAO23B,YAAc33B,EAAOQ,OAAOm3B,YAAc33B,EAAOQ,OAAOm3B,WAAWC,YAAc53B,EAAO23B,WAAWp6B,KAAOikB,GAAYxhB,EAAO23B,WAAWp6B,GAAGsF,SAAS2e,IAAY,OAC3K,IAAIqW,EACA/Q,EAAO/wB,OACT8hC,EAAW/Q,EAAO,GAAGzjB,UAAUR,SAAS7C,EAAOQ,OAAOqmB,WAAW0Q,aACxDxQ,EAAOhxB,SAChB8hC,EAAW9Q,EAAO,GAAG1jB,UAAUR,SAAS7C,EAAOQ,OAAOqmB,WAAW0Q,cAGjEr+B,GADe,IAAb2+B,EACG,iBAEA,kBAEP,IAAI/Q,KAAWC,GAAQ7uB,QAAOqF,KAAQA,IAAI/D,SAAQ+D,GAAMA,EAAG8F,UAAUy0B,OAAO93B,EAAOQ,OAAOqmB,WAAW0Q,cACvG,KAEF,MAAM5N,EAAS,KACb3pB,EAAOzC,GAAG8F,UAAUqP,UAAU1S,EAAOQ,OAAOqmB,WAAW2Q,wBAAwBv6B,MAAM,MACrFxH,IACAqjB,GAAQ,EAEJ4Q,EAAU,KACd1pB,EAAOzC,GAAG8F,UAAUC,OAAOtD,EAAOQ,OAAOqmB,WAAW2Q,wBAAwBv6B,MAAM,MAClF8N,GAAS,EAEXzW,OAAO0Y,OAAOhN,EAAO6mB,WAAY,CAC/B8C,SACAD,UACA5Q,SACArjB,OACAsV,WAEJ,CCrMA,SAASgtB,GAAkBh7B,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOmB,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,CCFA,SAAS65B,GAAWj4B,GAClB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EACJ,MAAMk4B,EAAM,oBAqCZ,IAAIC,EApCJruB,EAAa,CACX8tB,WAAY,CACVp6B,GAAI,KACJ46B,cAAe,OACfP,WAAW,EACXN,aAAa,EACbc,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrBxX,KAAM,UAENyX,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAa,GAAGb,WAChBc,kBAAmB,GAAGd,kBACtBe,cAAe,GAAGf,KAClBgB,aAAc,GAAGhB,YACjBiB,WAAY,GAAGjB,UACfV,YAAa,GAAGU,WAChBkB,qBAAsB,GAAGlB,qBACzBmB,yBAA0B,GAAGnB,yBAC7BoB,eAAgB,GAAGpB,cACnBhB,UAAW,GAAGgB,SACdqB,gBAAiB,GAAGrB,eACpBsB,cAAe,GAAGtB,aAClBuB,wBAAyB,GAAGvB,gBAGhCj4B,EAAO23B,WAAa,CAClBp6B,GAAI,KACJk8B,QAAS,IAGX,IAAIC,EAAqB,EACzB,SAASC,IACP,OAAQ35B,EAAOQ,OAAOm3B,WAAWp6B,KAAOyC,EAAO23B,WAAWp6B,IAAM5F,MAAMC,QAAQoI,EAAO23B,WAAWp6B,KAAuC,IAAhCyC,EAAO23B,WAAWp6B,GAAGxH,MAC9H,CACA,SAAS6jC,EAAeC,EAAU5D,GAChC,MAAM,kBACJ8C,GACE/4B,EAAOQ,OAAOm3B,WACbkC,IACLA,EAAWA,GAAyB,SAAb5D,EAAsB,WAAa,QAAtC,kBAChB4D,IACFA,EAASx2B,UAAUC,IAAI,GAAGy1B,KAAqB9C,KAC/C4D,EAAWA,GAAyB,SAAb5D,EAAsB,WAAa,QAAtC,kBAChB4D,GACFA,EAASx2B,UAAUC,IAAI,GAAGy1B,KAAqB9C,KAAYA,MAGjE,CACA,SAAS6D,EAAiBjd,EAAWxd,EAAWtJ,GAG9C,OAFA8mB,GAAwB9mB,EACxBsJ,GAAwBtJ,EACpBsJ,IAAcwd,EAAY,EACrB,OACExd,IAAcwd,EAAY,EAC5B,gBADF,CAIT,CACA,SAASkd,EAAcnhC,GACrB,MAAMihC,EAAWjhC,EAAEhD,OAAO8gB,QAAQqhB,GAAkB/3B,EAAOQ,OAAOm3B,WAAWmB,cAC7E,IAAKe,EACH,OAEFjhC,EAAEioB,iBACF,MAAM5U,EAAQtH,EAAak1B,GAAY75B,EAAOQ,OAAOgQ,eACrD,GAAIxQ,EAAOQ,OAAOuQ,KAAM,CACtB,GAAI/Q,EAAOwX,YAAcvL,EAAO,OAChC,MAAM+tB,EAAgBF,EAAiB95B,EAAOwX,UAAWvL,EAAOjM,EAAO8N,OAAO/X,QACxD,SAAlBikC,EACFh6B,EAAO+b,YACoB,aAAlBie,EACTh6B,EAAOqc,YAEPrc,EAAOub,YAAYtP,EAEvB,MACEjM,EAAO2a,QAAQ1O,EAEnB,CACA,SAAS6M,IAEP,MAAMtL,EAAMxN,EAAOwN,IACbhN,EAASR,EAAOQ,OAAOm3B,WAC7B,GAAIgC,IAAwB,OAC5B,IAGI54B,EACA8W,EAJAta,EAAKyC,EAAO23B,WAAWp6B,GAC3BA,EAAKgI,EAAkBhI,GAIvB,MAAMyQ,EAAehO,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAO2N,QAAQG,OAAO/X,OAASiK,EAAO8N,OAAO/X,OAC9GkkC,EAAQj6B,EAAOQ,OAAOuQ,KAAO5P,KAAK8P,KAAKjD,EAAehO,EAAOQ,OAAOgQ,gBAAkBxQ,EAAOiO,SAASlY,OAY5G,GAXIiK,EAAOQ,OAAOuQ,MAChB8G,EAAgB7X,EAAO8X,mBAAqB,EAC5C/W,EAAUf,EAAOQ,OAAOgQ,eAAiB,EAAIrP,KAAKmP,MAAMtQ,EAAOwX,UAAYxX,EAAOQ,OAAOgQ,gBAAkBxQ,EAAOwX,WAC7E,qBAArBxX,EAAO+R,WACvBhR,EAAUf,EAAO+R,UACjB8F,EAAgB7X,EAAO+X,oBAEvBF,EAAgB7X,EAAO6X,eAAiB,EACxC9W,EAAUf,EAAOiT,aAAe,GAGd,YAAhBzS,EAAOwgB,MAAsBhhB,EAAO23B,WAAW8B,SAAWz5B,EAAO23B,WAAW8B,QAAQ1jC,OAAS,EAAG,CAClG,MAAM0jC,EAAUz5B,EAAO23B,WAAW8B,QAClC,IAAIS,EACApd,EACAqd,EAsBJ,GArBI35B,EAAOi4B,iBACTP,EAAa/yB,EAAiBs0B,EAAQ,GAAIz5B,EAAO4M,eAAiB,QAAU,UAAU,GACtFrP,EAAG/D,SAAQs9B,IACTA,EAAMt8B,MAAMwF,EAAO4M,eAAiB,QAAU,UAAesrB,GAAc13B,EAAOk4B,mBAAqB,GAA7C,IAAmD,IAE3Gl4B,EAAOk4B,mBAAqB,QAAuBx5B,IAAlB2Y,IACnC6hB,GAAsB34B,GAAW8W,GAAiB,GAC9C6hB,EAAqBl5B,EAAOk4B,mBAAqB,EACnDgB,EAAqBl5B,EAAOk4B,mBAAqB,EACxCgB,EAAqB,IAC9BA,EAAqB,IAGzBQ,EAAa/4B,KAAKC,IAAIL,EAAU24B,EAAoB,GACpD5c,EAAYod,GAAc/4B,KAAKE,IAAIo4B,EAAQ1jC,OAAQyK,EAAOk4B,oBAAsB,GAChFyB,GAAYrd,EAAYod,GAAc,GAExCT,EAAQjgC,SAAQqgC,IACd,MAAMO,EAAkB,IAAI,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAAShhC,KAAIihC,GAAU,GAAG75B,EAAOu4B,oBAAoBsB,OAAWjhC,KAAIkhC,GAAkB,kBAANA,GAAkBA,EAAEx3B,SAAS,KAAOw3B,EAAEr9B,MAAM,KAAOq9B,IAAGC,OACrNV,EAASx2B,UAAUqP,UAAU0nB,EAAgB,IAE3C78B,EAAGxH,OAAS,EACd0jC,EAAQjgC,SAAQghC,IACd,MAAMC,EAAc91B,EAAa61B,GAC7BC,IAAgB15B,EAClBy5B,EAAOn3B,UAAUC,OAAO9C,EAAOu4B,kBAAkB97B,MAAM,MAC9C+C,EAAOyK,WAChB+vB,EAAO//B,aAAa,OAAQ,UAE1B+F,EAAOi4B,iBACLgC,GAAeP,GAAcO,GAAe3d,GAC9C0d,EAAOn3B,UAAUC,OAAO,GAAG9C,EAAOu4B,yBAAyB97B,MAAM,MAE/Dw9B,IAAgBP,GAClBN,EAAeY,EAAQ,QAErBC,IAAgB3d,GAClB8c,EAAeY,EAAQ,QAE3B,QAEG,CACL,MAAMA,EAASf,EAAQ14B,GASvB,GARIy5B,GACFA,EAAOn3B,UAAUC,OAAO9C,EAAOu4B,kBAAkB97B,MAAM,MAErD+C,EAAOyK,WACTgvB,EAAQjgC,SAAQ,CAACqgC,EAAUY,KACzBZ,EAASp/B,aAAa,OAAQggC,IAAgB15B,EAAU,gBAAkB,SAAS,IAGnFP,EAAOi4B,eAAgB,CACzB,MAAMiC,EAAuBjB,EAAQS,GAC/BS,EAAsBlB,EAAQ3c,GACpC,IAAK,IAAIhnB,EAAIokC,EAAYpkC,GAAKgnB,EAAWhnB,GAAK,EACxC2jC,EAAQ3jC,IACV2jC,EAAQ3jC,GAAGuN,UAAUC,OAAO,GAAG9C,EAAOu4B,yBAAyB97B,MAAM,MAGzE28B,EAAec,EAAsB,QACrCd,EAAee,EAAqB,OACtC,CACF,CACA,GAAIn6B,EAAOi4B,eAAgB,CACzB,MAAMmC,EAAuBz5B,KAAKE,IAAIo4B,EAAQ1jC,OAAQyK,EAAOk4B,mBAAqB,GAC5EmC,GAAiB3C,EAAa0C,EAAuB1C,GAAc,EAAIiC,EAAWjC,EAClF1H,EAAahjB,EAAM,QAAU,OACnCisB,EAAQjgC,SAAQghC,IACdA,EAAOhgC,MAAMwF,EAAO4M,eAAiB4jB,EAAa,OAAS,GAAGqK,KAAiB,GAEnF,CACF,CACAt9B,EAAG/D,SAAQ,CAACs9B,EAAOgE,KASjB,GARoB,aAAhBt6B,EAAOwgB,OACT8V,EAAM78B,iBAAiB89B,GAAkBv3B,EAAOy4B,eAAez/B,SAAQuhC,IACrEA,EAAWC,YAAcx6B,EAAOm4B,sBAAsB53B,EAAU,EAAE,IAEpE+1B,EAAM78B,iBAAiB89B,GAAkBv3B,EAAO04B,aAAa1/B,SAAQyhC,IACnEA,EAAQD,YAAcx6B,EAAOq4B,oBAAoBoB,EAAM,KAGvC,gBAAhBz5B,EAAOwgB,KAAwB,CACjC,IAAIka,EAEFA,EADE16B,EAAOg4B,oBACcx4B,EAAO4M,eAAiB,WAAa,aAErC5M,EAAO4M,eAAiB,aAAe,WAEhE,MAAMuuB,GAASp6B,EAAU,GAAKk5B,EAC9B,IAAImB,EAAS,EACTC,EAAS,EACgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAEXrE,EAAM78B,iBAAiB89B,GAAkBv3B,EAAO24B,uBAAuB3/B,SAAQ8hC,IAC7EA,EAAW9gC,MAAMwD,UAAY,6BAA6Bo9B,aAAkBC,KAC5EC,EAAW9gC,MAAM2f,mBAAqB,GAAGna,EAAOQ,OAAOC,SAAS,GAEpE,CACoB,WAAhBD,EAAOwgB,MAAqBxgB,EAAO+3B,cACrCzB,EAAM9G,UAAYxvB,EAAO+3B,aAAav4B,EAAQe,EAAU,EAAGk5B,GACxC,IAAfa,GAAkB5hC,EAAK,mBAAoB49B,KAE5B,IAAfgE,GAAkB5hC,EAAK,mBAAoB49B,GAC/C59B,EAAK,mBAAoB49B,IAEvB92B,EAAOQ,OAAO0R,eAAiBlS,EAAO4N,SACxCkpB,EAAMzzB,UAAUrD,EAAO6f,SAAW,MAAQ,UAAUrf,EAAOy2B,UAC7D,GAEJ,CACA,SAASsE,IAEP,MAAM/6B,EAASR,EAAOQ,OAAOm3B,WAC7B,GAAIgC,IAAwB,OAC5B,MAAM3rB,EAAehO,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAO2N,QAAQG,OAAO/X,OAASiK,EAAOqP,MAAQrP,EAAOQ,OAAO6O,KAAKC,KAAO,EAAItP,EAAO8N,OAAO/X,OAASoL,KAAK8P,KAAKjR,EAAOQ,OAAO6O,KAAKC,MAAQtP,EAAO8N,OAAO/X,OAC7N,IAAIwH,EAAKyC,EAAO23B,WAAWp6B,GAC3BA,EAAKgI,EAAkBhI,GACvB,IAAIi+B,EAAiB,GACrB,GAAoB,YAAhBh7B,EAAOwgB,KAAoB,CAC7B,IAAIya,EAAkBz7B,EAAOQ,OAAOuQ,KAAO5P,KAAK8P,KAAKjD,EAAehO,EAAOQ,OAAOgQ,gBAAkBxQ,EAAOiO,SAASlY,OAChHiK,EAAOQ,OAAOkc,UAAY1c,EAAOQ,OAAOkc,SAAS9O,SAAW6tB,EAAkBztB,IAChFytB,EAAkBztB,GAEpB,IAAK,IAAIlY,EAAI,EAAGA,EAAI2lC,EAAiB3lC,GAAK,EACpC0K,EAAO43B,aACToD,GAAkBh7B,EAAO43B,aAAa5gC,KAAKwI,EAAQlK,EAAG0K,EAAOs4B,aAG7D0C,GAAkB,IAAIh7B,EAAO23B,iBAAiBn4B,EAAOyK,UAAY,gBAAkB,aAAajK,EAAOs4B,kBAAkBt4B,EAAO23B,gBAGtI,CACoB,aAAhB33B,EAAOwgB,OAEPwa,EADEh7B,EAAO83B,eACQ93B,EAAO83B,eAAe9gC,KAAKwI,EAAQQ,EAAOy4B,aAAcz4B,EAAO04B,YAE/D,gBAAgB14B,EAAOy4B,wCAAkDz4B,EAAO04B,uBAGjF,gBAAhB14B,EAAOwgB,OAEPwa,EADEh7B,EAAO63B,kBACQ73B,EAAO63B,kBAAkB7gC,KAAKwI,EAAQQ,EAAO24B,sBAE7C,gBAAgB34B,EAAO24B,iCAG5Cn5B,EAAO23B,WAAW8B,QAAU,GAC5Bl8B,EAAG/D,SAAQs9B,IACW,WAAhBt2B,EAAOwgB,OACT8V,EAAM9G,UAAYwL,GAAkB,IAElB,YAAhBh7B,EAAOwgB,MACThhB,EAAO23B,WAAW8B,QAAQphC,QAAQy+B,EAAM78B,iBAAiB89B,GAAkBv3B,EAAOs4B,cACpF,IAEkB,WAAhBt4B,EAAOwgB,MACT9nB,EAAK,mBAAoBqE,EAAG,GAEhC,CACA,SAAS9H,IACPuK,EAAOQ,OAAOm3B,WAAanB,GAA0Bx2B,EAAQA,EAAOipB,eAAe0O,WAAY33B,EAAOQ,OAAOm3B,WAAY,CACvHp6B,GAAI,sBAEN,MAAMiD,EAASR,EAAOQ,OAAOm3B,WAC7B,IAAKn3B,EAAOjD,GAAI,OAChB,IAAIA,EACqB,kBAAdiD,EAAOjD,IAAmByC,EAAOyK,YAC1ClN,EAAKyC,EAAOzC,GAAGvD,cAAcwG,EAAOjD,KAEjCA,GAA2B,kBAAdiD,EAAOjD,KACvBA,EAAK,IAAIvJ,SAASiG,iBAAiBuG,EAAOjD,MAEvCA,IACHA,EAAKiD,EAAOjD,IAETA,GAAoB,IAAdA,EAAGxH,SACViK,EAAOQ,OAAOmrB,mBAA0C,kBAAdnrB,EAAOjD,IAAmB5F,MAAMC,QAAQ2F,IAAOA,EAAGxH,OAAS,IACvGwH,EAAK,IAAIyC,EAAOzC,GAAGtD,iBAAiBuG,EAAOjD,KAEvCA,EAAGxH,OAAS,IACdwH,EAAKA,EAAG0Y,MAAK6gB,GACPhyB,EAAegyB,EAAO,WAAW,KAAO92B,EAAOzC,OAKrD5F,MAAMC,QAAQ2F,IAAqB,IAAdA,EAAGxH,SAAcwH,EAAKA,EAAG,IAClDjJ,OAAO0Y,OAAOhN,EAAO23B,WAAY,CAC/Bp6B,OAEFA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACW,YAAhBt2B,EAAOwgB,MAAsBxgB,EAAOo3B,WACtCd,EAAMzzB,UAAUC,QAAQ9C,EAAO64B,gBAAkB,IAAIp8B,MAAM,MAE7D65B,EAAMzzB,UAAUC,IAAI9C,EAAOw4B,cAAgBx4B,EAAOwgB,MAClD8V,EAAMzzB,UAAUC,IAAItD,EAAO4M,eAAiBpM,EAAO84B,gBAAkB94B,EAAO+4B,eACxD,YAAhB/4B,EAAOwgB,MAAsBxgB,EAAOi4B,iBACtC3B,EAAMzzB,UAAUC,IAAI,GAAG9C,EAAOw4B,gBAAgBx4B,EAAOwgB,gBACrD0Y,EAAqB,EACjBl5B,EAAOk4B,mBAAqB,IAC9Bl4B,EAAOk4B,mBAAqB,IAGZ,gBAAhBl4B,EAAOwgB,MAA0BxgB,EAAOg4B,qBAC1C1B,EAAMzzB,UAAUC,IAAI9C,EAAO44B,0BAEzB54B,EAAOo3B,WACTd,EAAMn9B,iBAAiB,QAASogC,GAE7B/5B,EAAO4N,SACVkpB,EAAMzzB,UAAUC,IAAI9C,EAAOy2B,UAC7B,IAEJ,CACA,SAASlsB,IACP,MAAMvK,EAASR,EAAOQ,OAAOm3B,WAC7B,GAAIgC,IAAwB,OAC5B,IAAIp8B,EAAKyC,EAAO23B,WAAWp6B,GACvBA,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMzzB,UAAUqP,OAAOlS,EAAO+2B,aAC9BT,EAAMzzB,UAAUqP,OAAOlS,EAAOw4B,cAAgBx4B,EAAOwgB,MACrD8V,EAAMzzB,UAAUqP,OAAO1S,EAAO4M,eAAiBpM,EAAO84B,gBAAkB94B,EAAO+4B,eAC3E/4B,EAAOo3B,YACTd,EAAMzzB,UAAUqP,WAAWlS,EAAO64B,gBAAkB,IAAIp8B,MAAM,MAC9D65B,EAAMl9B,oBAAoB,QAASmgC,GACrC,KAGA/5B,EAAO23B,WAAW8B,SAASz5B,EAAO23B,WAAW8B,QAAQjgC,SAAQs9B,GAASA,EAAMzzB,UAAUqP,UAAUlS,EAAOu4B,kBAAkB97B,MAAM,OACrI,CACAvE,EAAG,mBAAmB,KACpB,IAAKsH,EAAO23B,aAAe33B,EAAO23B,WAAWp6B,GAAI,OACjD,MAAMiD,EAASR,EAAOQ,OAAOm3B,WAC7B,IAAI,GACFp6B,GACEyC,EAAO23B,WACXp6B,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMzzB,UAAUqP,OAAOlS,EAAO84B,gBAAiB94B,EAAO+4B,eACtDzC,EAAMzzB,UAAUC,IAAItD,EAAO4M,eAAiBpM,EAAO84B,gBAAkB94B,EAAO+4B,cAAc,GAC1F,IAEJ7gC,EAAG,QAAQ,MACgC,IAArCsH,EAAOQ,OAAOm3B,WAAW/pB,QAE3B8b,KAEAj0B,IACA8lC,IACAziB,IACF,IAEFpgB,EAAG,qBAAqB,KACU,qBAArBsH,EAAO+R,WAChB+G,GACF,IAEFpgB,EAAG,mBAAmB,KACpBogB,GAAQ,IAEVpgB,EAAG,wBAAwB,KACzB6iC,IACAziB,GAAQ,IAEVpgB,EAAG,WAAW,KACZqS,GAAS,IAEXrS,EAAG,kBAAkB,KACnB,IAAI,GACF6E,GACEyC,EAAO23B,WACPp6B,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,GAASA,EAAMzzB,UAAUrD,EAAO4N,QAAU,SAAW,OAAO5N,EAAOQ,OAAOm3B,WAAWV,aAClG,IAEFv+B,EAAG,eAAe,KAChBogB,GAAQ,IAEVpgB,EAAG,SAAS,CAAC++B,EAAI7+B,KACf,MAAM4oB,EAAW5oB,EAAEhD,OACb2H,EAAKgI,EAAkBvF,EAAO23B,WAAWp6B,IAC/C,GAAIyC,EAAOQ,OAAOm3B,WAAWp6B,IAAMyC,EAAOQ,OAAOm3B,WAAWL,aAAe/5B,GAAMA,EAAGxH,OAAS,IAAMyrB,EAASne,UAAUR,SAAS7C,EAAOQ,OAAOm3B,WAAWmB,aAAc,CACpK,GAAI94B,EAAO6mB,aAAe7mB,EAAO6mB,WAAWC,QAAUtF,IAAaxhB,EAAO6mB,WAAWC,QAAU9mB,EAAO6mB,WAAWE,QAAUvF,IAAaxhB,EAAO6mB,WAAWE,QAAS,OACnK,MAAM8Q,EAAWt6B,EAAG,GAAG8F,UAAUR,SAAS7C,EAAOQ,OAAOm3B,WAAWJ,aAEjEr+B,GADe,IAAb2+B,EACG,iBAEA,kBAEPt6B,EAAG/D,SAAQs9B,GAASA,EAAMzzB,UAAUy0B,OAAO93B,EAAOQ,OAAOm3B,WAAWJ,cACtE,KAEF,MAAM5N,EAAS,KACb3pB,EAAOzC,GAAG8F,UAAUqP,OAAO1S,EAAOQ,OAAOm3B,WAAW6B,yBACpD,IAAI,GACFj8B,GACEyC,EAAO23B,WACPp6B,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,GAASA,EAAMzzB,UAAUqP,OAAO1S,EAAOQ,OAAOm3B,WAAW6B,4BAEtE/jC,IACA8lC,IACAziB,GAAQ,EAEJ4Q,EAAU,KACd1pB,EAAOzC,GAAG8F,UAAUC,IAAItD,EAAOQ,OAAOm3B,WAAW6B,yBACjD,IAAI,GACFj8B,GACEyC,EAAO23B,WACPp6B,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,GAASA,EAAMzzB,UAAUC,IAAItD,EAAOQ,OAAOm3B,WAAW6B,4BAEnEzuB,GAAS,EAEXzW,OAAO0Y,OAAOhN,EAAO23B,WAAY,CAC/BhO,SACAD,UACA6R,SACAziB,SACArjB,OACAsV,WAEJ,CCpcA,SAAS2wB,GAAU37B,GACjB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EACJ,MAAM/L,EAAWsH,IACjB,IAGIqgC,EACAC,EACAC,EACAC,EANAna,GAAY,EACZ0R,EAAU,KACV0I,EAAc,KAuBlB,SAAS7iB,IACP,IAAKlZ,EAAOQ,OAAOw7B,UAAUz+B,KAAOyC,EAAOg8B,UAAUz+B,GAAI,OACzD,MAAM,UACJy+B,EACAzuB,aAAcC,GACZxN,GACE,OACJi8B,EAAM,GACN1+B,GACEy+B,EACEx7B,EAASR,EAAOQ,OAAOw7B,UACvB96B,EAAWlB,EAAOQ,OAAOuQ,KAAO/Q,EAAO+U,aAAe/U,EAAOkB,SACnE,IAAIg7B,EAAUN,EACVO,GAAUN,EAAYD,GAAY16B,EAClCsM,GACF2uB,GAAUA,EACNA,EAAS,GACXD,EAAUN,EAAWO,EACrBA,EAAS,IACCA,EAASP,EAAWC,IAC9BK,EAAUL,EAAYM,IAEfA,EAAS,GAClBD,EAAUN,EAAWO,EACrBA,EAAS,GACAA,EAASP,EAAWC,IAC7BK,EAAUL,EAAYM,GAEpBn8B,EAAO4M,gBACTqvB,EAAOzhC,MAAMwD,UAAY,eAAem+B,aACxCF,EAAOzhC,MAAMqM,MAAQ,GAAGq1B,QAExBD,EAAOzhC,MAAMwD,UAAY,oBAAoBm+B,UAC7CF,EAAOzhC,MAAMuM,OAAS,GAAGm1B,OAEvB17B,EAAO47B,OACT7/B,aAAa82B,GACb91B,EAAG/C,MAAM6hC,QAAU,EACnBhJ,EAAU/2B,YAAW,KACnBiB,EAAG/C,MAAM6hC,QAAU,EACnB9+B,EAAG/C,MAAM2f,mBAAqB,OAAO,GACpC,KAEP,CACA,SAAStH,EAActS,GAChBP,EAAOQ,OAAOw7B,UAAUz+B,IAAOyC,EAAOg8B,UAAUz+B,KACrDyC,EAAOg8B,UAAUC,OAAOzhC,MAAM2f,mBAAqB,GAAG5Z,MACxD,CACA,SAASkM,IACP,IAAKzM,EAAOQ,OAAOw7B,UAAUz+B,KAAOyC,EAAOg8B,UAAUz+B,GAAI,OACzD,MAAM,UACJy+B,GACEh8B,GACE,OACJi8B,EAAM,GACN1+B,GACEy+B,EACJC,EAAOzhC,MAAMqM,MAAQ,GACrBo1B,EAAOzhC,MAAMuM,OAAS,GACtB80B,EAAY77B,EAAO4M,eAAiBrP,EAAG+H,YAAc/H,EAAG2V,aACxD4oB,EAAU97B,EAAOoF,MAAQpF,EAAO6O,YAAc7O,EAAOQ,OAAO6N,oBAAsBrO,EAAOQ,OAAO0O,eAAiBlP,EAAOiO,SAAS,GAAK,IAEpI2tB,EADuC,SAArC57B,EAAOQ,OAAOw7B,UAAUJ,SACfC,EAAYC,EAEZhvB,SAAS9M,EAAOQ,OAAOw7B,UAAUJ,SAAU,IAEpD57B,EAAO4M,eACTqvB,EAAOzhC,MAAMqM,MAAQ,GAAG+0B,MAExBK,EAAOzhC,MAAMuM,OAAS,GAAG60B,MAGzBr+B,EAAG/C,MAAM8hC,QADPR,GAAW,EACM,OAEA,GAEjB97B,EAAOQ,OAAOw7B,UAAUI,OAC1B7+B,EAAG/C,MAAM6hC,QAAU,GAEjBr8B,EAAOQ,OAAO0R,eAAiBlS,EAAO4N,SACxCouB,EAAUz+B,GAAG8F,UAAUrD,EAAO6f,SAAW,MAAQ,UAAU7f,EAAOQ,OAAOw7B,UAAU/E,UAEvF,CACA,SAASsF,EAAmB3jC,GAC1B,OAAOoH,EAAO4M,eAAiBhU,EAAE4jC,QAAU5jC,EAAE6jC,OAC/C,CACA,SAASC,EAAgB9jC,GACvB,MAAM,UACJojC,EACAzuB,aAAcC,GACZxN,GACE,GACJzC,GACEy+B,EACJ,IAAIW,EACJA,GAAiBJ,EAAmB3jC,GAAK2K,EAAchG,GAAIyC,EAAO4M,eAAiB,OAAS,QAA2B,OAAjB+uB,EAAwBA,EAAeC,EAAW,KAAOC,EAAYD,GAC3Ke,EAAgBx7B,KAAKC,IAAID,KAAKE,IAAIs7B,EAAe,GAAI,GACjDnvB,IACFmvB,EAAgB,EAAIA,GAEtB,MAAM1G,EAAWj2B,EAAOgU,gBAAkBhU,EAAO4U,eAAiB5U,EAAOgU,gBAAkB2oB,EAC3F38B,EAAOyU,eAAewhB,GACtBj2B,EAAOkZ,aAAa+c,GACpBj2B,EAAO2X,oBACP3X,EAAO4V,qBACT,CACA,SAASgnB,EAAYhkC,GACnB,MAAM4H,EAASR,EAAOQ,OAAOw7B,WACvB,UACJA,EAAS,UACTt7B,GACEV,GACE,GACJzC,EAAE,OACF0+B,GACED,EACJra,GAAY,EACZga,EAAe/iC,EAAEhD,SAAWqmC,EAASM,EAAmB3jC,GAAKA,EAAEhD,OAAO6N,wBAAwBzD,EAAO4M,eAAiB,OAAS,OAAS,KACxIhU,EAAEioB,iBACFjoB,EAAE0rB,kBACF5jB,EAAUlG,MAAM2f,mBAAqB,QACrC8hB,EAAOzhC,MAAM2f,mBAAqB,QAClCuiB,EAAgB9jC,GAChB2D,aAAaw/B,GACbx+B,EAAG/C,MAAM2f,mBAAqB,MAC1B3Z,EAAO47B,OACT7+B,EAAG/C,MAAM6hC,QAAU,GAEjBr8B,EAAOQ,OAAO2O,UAChBnP,EAAOU,UAAUlG,MAAM,oBAAsB,QAE/CtB,EAAK,qBAAsBN,EAC7B,CACA,SAASikC,EAAWjkC,GAClB,MAAM,UACJojC,EAAS,UACTt7B,GACEV,GACE,GACJzC,EAAE,OACF0+B,GACED,EACCra,IACD/oB,EAAEioB,gBAAkBjoB,EAAEurB,WAAYvrB,EAAEioB,iBAAsBjoB,EAAEu6B,aAAc,EAC9EuJ,EAAgB9jC,GAChB8H,EAAUlG,MAAM2f,mBAAqB,MACrC5c,EAAG/C,MAAM2f,mBAAqB,MAC9B8hB,EAAOzhC,MAAM2f,mBAAqB,MAClCjhB,EAAK,oBAAqBN,GAC5B,CACA,SAASkkC,EAAUlkC,GACjB,MAAM4H,EAASR,EAAOQ,OAAOw7B,WACvB,UACJA,EAAS,UACTt7B,GACEV,GACE,GACJzC,GACEy+B,EACCra,IACLA,GAAY,EACR3hB,EAAOQ,OAAO2O,UAChBnP,EAAOU,UAAUlG,MAAM,oBAAsB,GAC7CkG,EAAUlG,MAAM2f,mBAAqB,IAEnC3Z,EAAO47B,OACT7/B,aAAaw/B,GACbA,EAAc3+B,GAAS,KACrBG,EAAG/C,MAAM6hC,QAAU,EACnB9+B,EAAG/C,MAAM2f,mBAAqB,OAAO,GACpC,MAELjhB,EAAK,mBAAoBN,GACrB4H,EAAOu8B,eACT/8B,EAAOgd,iBAEX,CACA,SAAS9R,EAAOI,GACd,MAAM,UACJ0wB,EAAS,OACTx7B,GACER,EACEzC,EAAKy+B,EAAUz+B,GACrB,IAAKA,EAAI,OACT,MAAM3H,EAAS2H,EACTy/B,IAAiBx8B,EAAOorB,kBAAmB,CAC/CxD,SAAS,EACTH,SAAS,GAELgV,IAAkBz8B,EAAOorB,kBAAmB,CAChDxD,SAAS,EACTH,SAAS,GAEX,IAAKryB,EAAQ,OACb,MAAMsnC,EAAyB,OAAX5xB,EAAkB,mBAAqB,sBAC3D1V,EAAOsnC,GAAa,cAAeN,EAAaI,GAChDhpC,EAASkpC,GAAa,cAAeL,EAAYG,GACjDhpC,EAASkpC,GAAa,YAAaJ,EAAWG,EAChD,CACA,SAASE,IACFn9B,EAAOQ,OAAOw7B,UAAUz+B,IAAOyC,EAAOg8B,UAAUz+B,IACrD2N,EAAO,KACT,CACA,SAASkyB,IACFp9B,EAAOQ,OAAOw7B,UAAUz+B,IAAOyC,EAAOg8B,UAAUz+B,IACrD2N,EAAO,MACT,CACA,SAASzV,IACP,MAAM,UACJumC,EACAz+B,GAAI8/B,GACFr9B,EACJA,EAAOQ,OAAOw7B,UAAYxF,GAA0Bx2B,EAAQA,EAAOipB,eAAe+S,UAAWh8B,EAAOQ,OAAOw7B,UAAW,CACpHz+B,GAAI,qBAEN,MAAMiD,EAASR,EAAOQ,OAAOw7B,UAC7B,IAAKx7B,EAAOjD,GAAI,OAChB,IAAIA,EAeA0+B,EAXJ,GAHyB,kBAAdz7B,EAAOjD,IAAmByC,EAAOyK,YAC1ClN,EAAKyC,EAAOzC,GAAGvD,cAAcwG,EAAOjD,KAEjCA,GAA2B,kBAAdiD,EAAOjD,GAGbA,IACVA,EAAKiD,EAAOjD,SAFZ,GADAA,EAAKvJ,EAASiG,iBAAiBuG,EAAOjD,KACjCA,EAAGxH,OAAQ,OAIdiK,EAAOQ,OAAOmrB,mBAA0C,kBAAdnrB,EAAOjD,IAAmBA,EAAGxH,OAAS,GAAqD,IAAhDsnC,EAASpjC,iBAAiBuG,EAAOjD,IAAIxH,SAC5HwH,EAAK8/B,EAASrjC,cAAcwG,EAAOjD,KAEjCA,EAAGxH,OAAS,IAAGwH,EAAKA,EAAG,IAC3BA,EAAG8F,UAAUC,IAAItD,EAAO4M,eAAiBpM,EAAO84B,gBAAkB94B,EAAO+4B,eAErEh8B,IACF0+B,EAAS1+B,EAAGvD,cAAc+9B,GAAkB/3B,EAAOQ,OAAOw7B,UAAUsB,YAC/DrB,IACHA,EAAS5hC,EAAc,MAAO2F,EAAOQ,OAAOw7B,UAAUsB,WACtD//B,EAAGsgB,OAAOoe,KAGd3nC,OAAO0Y,OAAOgvB,EAAW,CACvBz+B,KACA0+B,WAEEz7B,EAAO+8B,WACTJ,IAEE5/B,GACFA,EAAG8F,UAAUrD,EAAO4N,QAAU,SAAW,UAAU9Q,EAAgBkD,EAAOQ,OAAOw7B,UAAU/E,WAE/F,CACA,SAASlsB,IACP,MAAMvK,EAASR,EAAOQ,OAAOw7B,UACvBz+B,EAAKyC,EAAOg8B,UAAUz+B,GACxBA,GACFA,EAAG8F,UAAUqP,UAAU5V,EAAgBkD,EAAO4M,eAAiBpM,EAAO84B,gBAAkB94B,EAAO+4B,gBAEjG6D,GACF,CApRAvzB,EAAa,CACXmyB,UAAW,CACTz+B,GAAI,KACJq+B,SAAU,OACVQ,MAAM,EACNmB,WAAW,EACXR,eAAe,EACf9F,UAAW,wBACXqG,UAAW,wBACXE,uBAAwB,4BACxBlE,gBAAiB,8BACjBC,cAAe,+BAGnBv5B,EAAOg8B,UAAY,CACjBz+B,GAAI,KACJ0+B,OAAQ,MAqQVvjC,EAAG,mBAAmB,KACpB,IAAKsH,EAAOg8B,YAAch8B,EAAOg8B,UAAUz+B,GAAI,OAC/C,MAAMiD,EAASR,EAAOQ,OAAOw7B,UAC7B,IAAI,GACFz+B,GACEyC,EAAOg8B,UACXz+B,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMzzB,UAAUqP,OAAOlS,EAAO84B,gBAAiB94B,EAAO+4B,eACtDzC,EAAMzzB,UAAUC,IAAItD,EAAO4M,eAAiBpM,EAAO84B,gBAAkB94B,EAAO+4B,cAAc,GAC1F,IAEJ7gC,EAAG,QAAQ,MAC+B,IAApCsH,EAAOQ,OAAOw7B,UAAUpuB,QAE1B8b,KAEAj0B,IACAgX,IACAyM,IACF,IAEFxgB,EAAG,4DAA4D,KAC7D+T,GAAY,IAEd/T,EAAG,gBAAgB,KACjBwgB,GAAc,IAEhBxgB,EAAG,iBAAiB,CAAC++B,EAAIl3B,KACvBsS,EAActS,EAAS,IAEzB7H,EAAG,kBAAkB,KACnB,MAAM,GACJ6E,GACEyC,EAAOg8B,UACPz+B,GACFA,EAAG8F,UAAUrD,EAAO4N,QAAU,SAAW,UAAU9Q,EAAgBkD,EAAOQ,OAAOw7B,UAAU/E,WAC7F,IAEFv+B,EAAG,WAAW,KACZqS,GAAS,IAEX,MAAM4e,EAAS,KACb3pB,EAAOzC,GAAG8F,UAAUqP,UAAU5V,EAAgBkD,EAAOQ,OAAOw7B,UAAUwB,yBAClEx9B,EAAOg8B,UAAUz+B,IACnByC,EAAOg8B,UAAUz+B,GAAG8F,UAAUqP,UAAU5V,EAAgBkD,EAAOQ,OAAOw7B,UAAUwB,yBAElF/nC,IACAgX,IACAyM,GAAc,EAEVwQ,EAAU,KACd1pB,EAAOzC,GAAG8F,UAAUC,OAAOxG,EAAgBkD,EAAOQ,OAAOw7B,UAAUwB,yBAC/Dx9B,EAAOg8B,UAAUz+B,IACnByC,EAAOg8B,UAAUz+B,GAAG8F,UAAUC,OAAOxG,EAAgBkD,EAAOQ,OAAOw7B,UAAUwB,yBAE/EzyB,GAAS,EAEXzW,OAAO0Y,OAAOhN,EAAOg8B,UAAW,CAC9BrS,SACAD,UACAjd,aACAyM,eACAzjB,OACAsV,WAEJ,CCzWA,SAAS0yB,GAAS19B,GAChB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACX6zB,SAAU,CACR9vB,SAAS,KAGb,MAAM+vB,EAAmB,2IACnBC,EAAe,CAACrgC,EAAI2D,KACxB,MAAM,IACJsM,GACExN,EACE61B,EAAYroB,GAAO,EAAI,EACvBqwB,EAAItgC,EAAG8a,aAAa,yBAA2B,IACrD,IAAIe,EAAI7b,EAAG8a,aAAa,0BACpBgB,EAAI9b,EAAG8a,aAAa,0BACxB,MAAM8iB,EAAQ59B,EAAG8a,aAAa,8BACxBgkB,EAAU9+B,EAAG8a,aAAa,gCAC1BylB,EAASvgC,EAAG8a,aAAa,+BAqB/B,GApBIe,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACArZ,EAAO4M,gBAChBwM,EAAIykB,EACJxkB,EAAI,MAEJA,EAAIwkB,EACJzkB,EAAI,KAGJA,EADEA,EAAEngB,QAAQ,MAAQ,EACb6T,SAASsM,EAAG,IAAMlY,EAAW20B,EAAhC,IAEGzc,EAAIlY,EAAW20B,EAAlB,KAGJxc,EADEA,EAAEpgB,QAAQ,MAAQ,EACb6T,SAASuM,EAAG,IAAMnY,EAArB,IAEGmY,EAAInY,EAAP,KAEiB,qBAAZm7B,GAAuC,OAAZA,EAAkB,CACtD,MAAM0B,EAAiB1B,GAAWA,EAAU,IAAM,EAAIl7B,KAAKuE,IAAIxE,IAC/D3D,EAAG/C,MAAM6hC,QAAU0B,CACrB,CACA,IAAI//B,EAAY,eAAeob,MAAMC,UACrC,GAAqB,qBAAV8hB,GAAmC,OAAVA,EAAgB,CAClD,MAAM6C,EAAe7C,GAASA,EAAQ,IAAM,EAAIh6B,KAAKuE,IAAIxE,IACzDlD,GAAa,UAAUggC,IACzB,CACA,GAAIF,GAA4B,qBAAXA,GAAqC,OAAXA,EAAiB,CAC9D,MAAMG,EAAgBH,EAAS58B,GAAY,EAC3ClD,GAAa,WAAWigC,OAC1B,CACA1gC,EAAG/C,MAAMwD,UAAYA,CAAS,EAE1Bkb,EAAe,KACnB,MAAM,GACJ3b,EAAE,OACFuQ,EAAM,SACN5M,EAAQ,SACR+M,EAAQ,UACRxD,GACEzK,EACEk+B,EAAWn8B,EAAgBxE,EAAIogC,GACjC39B,EAAOyK,WACTyzB,EAAS7lC,QAAQ0J,EAAgB/B,EAAO6K,OAAQ8yB,IAElDO,EAAS1kC,SAAQs9B,IACf8G,EAAa9G,EAAO51B,EAAS,IAE/B4M,EAAOtU,SAAQ,CAACqI,EAASyP,KACvB,IAAIyC,EAAgBlS,EAAQX,SACxBlB,EAAOQ,OAAOgQ,eAAiB,GAAqC,SAAhCxQ,EAAOQ,OAAOmP,gBACpDoE,GAAiB5S,KAAK8P,KAAKK,EAAa,GAAKpQ,GAAY+M,EAASlY,OAAS,IAE7Ege,EAAgB5S,KAAKE,IAAIF,KAAKC,IAAI2S,GAAgB,GAAI,GACtDlS,EAAQ5H,iBAAiB,GAAG0jC,oCAAmDnkC,SAAQs9B,IACrF8G,EAAa9G,EAAO/iB,EAAc,GAClC,GACF,EAEElB,EAAgB,SAAUtS,QACb,IAAbA,IACFA,EAAWP,EAAOQ,OAAOC,OAE3B,MAAM,GACJlD,EAAE,OACFsN,GACE7K,EACEk+B,EAAW,IAAI3gC,EAAGtD,iBAAiB0jC,IACrC39B,EAAOyK,WACTyzB,EAAS7lC,QAAQwS,EAAO5Q,iBAAiB0jC,IAE3CO,EAAS1kC,SAAQ2kC,IACf,IAAIC,EAAmBtxB,SAASqxB,EAAW9lB,aAAa,iCAAkC,KAAO9X,EAChF,IAAbA,IAAgB69B,EAAmB,GACvCD,EAAW3jC,MAAM2f,mBAAqB,GAAGikB,KAAoB,GAEjE,EACA1lC,EAAG,cAAc,KACVsH,EAAOQ,OAAOk9B,SAAS9vB,UAC5B5N,EAAOQ,OAAO4R,qBAAsB,EACpCpS,EAAOipB,eAAe7W,qBAAsB,EAAI,IAElD1Z,EAAG,QAAQ,KACJsH,EAAOQ,OAAOk9B,SAAS9vB,SAC5BsL,GAAc,IAEhBxgB,EAAG,gBAAgB,KACZsH,EAAOQ,OAAOk9B,SAAS9vB,SAC5BsL,GAAc,IAEhBxgB,EAAG,iBAAiB,CAAC2lC,EAAS99B,KACvBP,EAAOQ,OAAOk9B,SAAS9vB,SAC5BiF,EAActS,EAAS,GAE3B,CCtHA,SAAS+9B,GAAKv+B,GACZ,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,GACE6G,EACJ,MAAMlJ,EAAS+F,IACfiN,EAAa,CACX00B,KAAM,CACJ3wB,SAAS,EACT4wB,qBAAqB,EACrBC,SAAU,EACVlU,SAAU,EACVmU,gBAAgB,EAChB5G,QAAQ,EACR6G,eAAgB,wBAChBC,iBAAkB,yBAGtB5+B,EAAOu+B,KAAO,CACZ3wB,SAAS,GAEX,IAAIowB,EAAe,EACfa,GAAY,EACZC,GAAqB,EACrBC,EAAgB,CAClB3lB,EAAG,EACHC,EAAG,GAEL,MAAM2lB,GAAuB,EAC7B,IAAIC,EACAC,EACJ,MAAMC,EAAU,GACVC,EAAU,CACdC,QAAS,EACTC,QAAS,EACTz9B,aAAS3C,EACTqgC,gBAAYrgC,EACZsgC,iBAAatgC,EACbsX,aAAStX,EACTugC,iBAAavgC,EACbu/B,SAAU,GAENiB,EAAQ,CACZ/d,eAAWziB,EACX0iB,aAAS1iB,EACTojB,cAAUpjB,EACVqjB,cAAUrjB,EACVygC,UAAMzgC,EACN0gC,UAAM1gC,EACN2gC,UAAM3gC,EACN4gC,UAAM5gC,EACN2H,WAAO3H,EACP6H,YAAQ7H,EACRuhB,YAAQvhB,EACRujB,YAAQvjB,EACR6gC,aAAc,CAAC,EACfC,eAAgB,CAAC,GAEbjT,EAAW,CACf3T,OAAGla,EACHma,OAAGna,EACH+gC,mBAAe/gC,EACfghC,mBAAehhC,EACfihC,cAAUjhC,GAEZ,IAsJIkhC,EAtJAjF,EAAQ,EAcZ,SAASkF,IACP,GAAIlB,EAAQppC,OAAS,EAAG,OAAO,EAC/B,MAAMuqC,EAAKnB,EAAQ,GAAG9d,MAChBkf,EAAKpB,EAAQ,GAAG3c,MAChBge,EAAKrB,EAAQ,GAAG9d,MAChBof,EAAKtB,EAAQ,GAAG3c,MAChBke,EAAWv/B,KAAK4iB,MAAMyc,EAAKF,IAAO,GAAKG,EAAKF,IAAO,GACzD,OAAOG,CACT,CACA,SAASC,IACP,MAAMngC,EAASR,EAAOQ,OAAO+9B,KACvBE,EAAWW,EAAQK,YAAYpnB,aAAa,qBAAuB7X,EAAOi+B,SAChF,GAAIj+B,EAAOg+B,qBAAuBY,EAAQ5oB,SAAW4oB,EAAQ5oB,QAAQoqB,aAAc,CACjF,MAAMC,EAAgBzB,EAAQ5oB,QAAQoqB,aAAexB,EAAQ5oB,QAAQlR,YACrE,OAAOnE,KAAKE,IAAIw/B,EAAepC,EACjC,CACA,OAAOA,CACT,CACA,SAASqC,IACP,GAAI3B,EAAQppC,OAAS,EAAG,MAAO,CAC7BqjB,EAAG,KACHC,EAAG,MAEL,MAAM7V,EAAM47B,EAAQ5oB,QAAQ/S,wBAC5B,MAAO,EAAE07B,EAAQ,GAAG9d,OAAS8d,EAAQ,GAAG9d,MAAQ8d,EAAQ,GAAG9d,OAAS,EAAI7d,EAAI4V,EAAIviB,EAAOkN,SAAWi6B,GAAemB,EAAQ,GAAG3c,OAAS2c,EAAQ,GAAG3c,MAAQ2c,EAAQ,GAAG3c,OAAS,EAAIhf,EAAI6V,EAAIxiB,EAAOgN,SAAWm6B,EAC5M,CACA,SAAS+C,IACP,OAAO/gC,EAAOyK,UAAY,eAAiB,IAAIzK,EAAOQ,OAAOuN,YAC/D,CACA,SAASizB,EAAiBpoC,GACxB,MAAM6d,EAAgBsqB,IACtB,QAAInoC,EAAEhD,OAAOwM,QAAQqU,IACjBzW,EAAO8N,OAAO5V,QAAO2J,GAAWA,EAAQgB,SAASjK,EAAEhD,UAASG,OAAS,CAE3E,CACA,SAASkrC,EAAyBroC,GAChC,MAAMqJ,EAAW,IAAIjC,EAAOQ,OAAO+9B,KAAKI,iBACxC,QAAI/lC,EAAEhD,OAAOwM,QAAQH,IACjB,IAAIjC,EAAO6K,OAAO5Q,iBAAiBgI,IAAW/J,QAAOgyB,GAAeA,EAAYrnB,SAASjK,EAAEhD,UAASG,OAAS,CAEnH,CAGA,SAASmrC,EAAetoC,GAItB,GAHsB,UAAlBA,EAAE2oB,aACJ4d,EAAQnmC,OAAO,EAAGmmC,EAAQppC,SAEvBirC,EAAiBpoC,GAAI,OAC1B,MAAM4H,EAASR,EAAOQ,OAAO+9B,KAI7B,GAHAU,GAAqB,EACrBC,GAAmB,EACnBC,EAAQ9mC,KAAKO,KACTumC,EAAQppC,OAAS,GAArB,CAKA,GAFAkpC,GAAqB,EACrBG,EAAQ+B,WAAad,KAChBjB,EAAQv9B,QAAS,CACpBu9B,EAAQv9B,QAAUjJ,EAAEhD,OAAO8gB,QAAQ,IAAI1W,EAAOQ,OAAOuN,4BAChDqxB,EAAQv9B,UAASu9B,EAAQv9B,QAAU7B,EAAO8N,OAAO9N,EAAOiT,cAC7D,IAAIuD,EAAU4oB,EAAQv9B,QAAQ7H,cAAc,IAAIwG,EAAOm+B,kBAUvD,GATInoB,IACFA,EAAUA,EAAQvc,iBAAiB,kDAAkD,IAEvFmlC,EAAQ5oB,QAAUA,EAEhB4oB,EAAQK,YADNjpB,EACoB1R,EAAes6B,EAAQ5oB,QAAS,IAAIhW,EAAOm+B,kBAAkB,QAE7Dz/B,GAEnBkgC,EAAQK,YAEX,YADAL,EAAQ5oB,aAAUtX,GAGpBkgC,EAAQX,SAAWkC,GACrB,CACA,GAAIvB,EAAQ5oB,QAAS,CACnB,MAAO6oB,EAASC,GAAWwB,IAC3B1B,EAAQC,QAAUA,EAClBD,EAAQE,QAAUA,EAClBF,EAAQ5oB,QAAQhc,MAAM2f,mBAAqB,KAC7C,CACA0kB,GAAY,CA5BZ,CA6BF,CACA,SAASuC,EAAgBxoC,GACvB,IAAKooC,EAAiBpoC,GAAI,OAC1B,MAAM4H,EAASR,EAAOQ,OAAO+9B,KACvBA,EAAOv+B,EAAOu+B,KACd8C,EAAelC,EAAQmC,WAAUC,GAAYA,EAAStgB,YAAcroB,EAAEqoB,YACxEogB,GAAgB,IAAGlC,EAAQkC,GAAgBzoC,GAC3CumC,EAAQppC,OAAS,IAGrBmpC,GAAmB,EACnBE,EAAQoC,UAAYnB,IACfjB,EAAQ5oB,UAGb+nB,EAAKpD,MAAQiE,EAAQoC,UAAYpC,EAAQ+B,WAAanD,EAClDO,EAAKpD,MAAQiE,EAAQX,WACvBF,EAAKpD,MAAQiE,EAAQX,SAAW,GAAKF,EAAKpD,MAAQiE,EAAQX,SAAW,IAAM,IAEzEF,EAAKpD,MAAQ36B,EAAO+pB,WACtBgU,EAAKpD,MAAQ36B,EAAO+pB,SAAW,GAAK/pB,EAAO+pB,SAAWgU,EAAKpD,MAAQ,IAAM,IAE3EiE,EAAQ5oB,QAAQhc,MAAMwD,UAAY,4BAA4BugC,EAAKpD,UACrE,CACA,SAASsG,EAAa7oC,GACpB,IAAKooC,EAAiBpoC,GAAI,OAC1B,GAAsB,UAAlBA,EAAE2oB,aAAsC,eAAX3oB,EAAEooB,KAAuB,OAC1D,MAAMxgB,EAASR,EAAOQ,OAAO+9B,KACvBA,EAAOv+B,EAAOu+B,KACd8C,EAAelC,EAAQmC,WAAUC,GAAYA,EAAStgB,YAAcroB,EAAEqoB,YACxEogB,GAAgB,GAAGlC,EAAQnmC,OAAOqoC,EAAc,GAC/CpC,GAAuBC,IAG5BD,GAAqB,EACrBC,GAAmB,EACdE,EAAQ5oB,UACb+nB,EAAKpD,MAAQh6B,KAAKC,IAAID,KAAKE,IAAIk9B,EAAKpD,MAAOiE,EAAQX,UAAWj+B,EAAO+pB,UACrE6U,EAAQ5oB,QAAQhc,MAAM2f,mBAAqB,GAAGna,EAAOQ,OAAOC,UAC5D2+B,EAAQ5oB,QAAQhc,MAAMwD,UAAY,4BAA4BugC,EAAKpD,SACnE6C,EAAeO,EAAKpD,MACpB0D,GAAY,EACRN,EAAKpD,MAAQ,GAAKiE,EAAQv9B,QAC5Bu9B,EAAQv9B,QAAQwB,UAAUC,IAAI,GAAG9C,EAAOo+B,oBAC/BL,EAAKpD,OAAS,GAAKiE,EAAQv9B,SACpCu9B,EAAQv9B,QAAQwB,UAAUqP,OAAO,GAAGlS,EAAOo+B,oBAE1B,IAAfL,EAAKpD,QACPiE,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAClBF,EAAQv9B,aAAU3C,IAEtB,CAEA,SAASgkB,IACPljB,EAAOkf,gBAAgBgF,iCAAkC,CAC3D,CACA,SAASwd,IACPnlC,aAAa6jC,GACbpgC,EAAOkf,gBAAgBgF,iCAAkC,EACzDkc,EAAwB9jC,YAAW,KAC7B0D,EAAO2I,WACXua,GAAgB,GAEpB,CACA,SAASpC,EAAaloB,GACpB,MAAM6N,EAASzG,EAAOyG,OACtB,IAAK24B,EAAQ5oB,QAAS,OACtB,GAAIkpB,EAAM/d,UAAW,OACjBlb,EAAOE,SAAW/N,EAAEurB,YAAYvrB,EAAEioB,iBACtC6e,EAAM/d,WAAY,EAClB,MAAMpW,EAAQ4zB,EAAQppC,OAAS,EAAIopC,EAAQ,GAAKvmC,EAChD8mC,EAAMK,aAAa3mB,EAAI7N,EAAM8V,MAC7Bqe,EAAMK,aAAa1mB,EAAI9N,EAAMiX,KAC/B,CACA,SAASc,EAAY1qB,GACnB,MAAM+oC,EAAiC,UAAlB/oC,EAAE2oB,YACjBqgB,EAAaD,GAAgB3hC,EAAOQ,OAAO+9B,KAAKG,eACtD,IAAKsC,EAAiBpoC,KAAOqoC,EAAyBroC,GACpD,OAEF,MAAM2lC,EAAOv+B,EAAOu+B,KACpB,IAAKa,EAAQ5oB,QACX,OAEF,IAAKkpB,EAAM/d,YAAcyd,EAAQv9B,QAE/B,YADI+/B,GAAYC,EAAYjpC,IAG9B,GAAIgpC,EAEF,YADAC,EAAYjpC,GAGT8mC,EAAM9d,UACT8d,EAAM74B,MAAQu4B,EAAQ5oB,QAAQlR,aAAe85B,EAAQ5oB,QAAQ9J,YAC7DgzB,EAAM34B,OAASq4B,EAAQ5oB,QAAQtD,cAAgBksB,EAAQ5oB,QAAQ7J,aAC/D+yB,EAAMjf,OAAShjB,EAAa2hC,EAAQK,YAAa,MAAQ,EACzDC,EAAMjd,OAAShlB,EAAa2hC,EAAQK,YAAa,MAAQ,EACzDL,EAAQG,WAAaH,EAAQv9B,QAAQyD,YACrC85B,EAAQI,YAAcJ,EAAQv9B,QAAQqR,aACtCksB,EAAQK,YAAYjlC,MAAM2f,mBAAqB,OAGjD,MAAM2nB,EAAcpC,EAAM74B,MAAQ03B,EAAKpD,MACjC4G,EAAerC,EAAM34B,OAASw3B,EAAKpD,MACzCuE,EAAMC,KAAOx+B,KAAKE,IAAI+9B,EAAQG,WAAa,EAAIuC,EAAc,EAAG,GAChEpC,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOz+B,KAAKE,IAAI+9B,EAAQI,YAAc,EAAIuC,EAAe,EAAG,GAClErC,EAAMI,MAAQJ,EAAME,KACpBF,EAAMM,eAAe5mB,EAAI+lB,EAAQppC,OAAS,EAAIopC,EAAQ,GAAG9d,MAAQzoB,EAAEyoB,MACnEqe,EAAMM,eAAe3mB,EAAI8lB,EAAQppC,OAAS,EAAIopC,EAAQ,GAAG3c,MAAQ5pB,EAAE4pB,MACnE,MAAM+B,EAAcpjB,KAAKC,IAAID,KAAKuE,IAAIg6B,EAAMM,eAAe5mB,EAAIsmB,EAAMK,aAAa3mB,GAAIjY,KAAKuE,IAAIg6B,EAAMM,eAAe3mB,EAAIqmB,EAAMK,aAAa1mB,IAI3I,GAHIkL,EAAc,IAChBvkB,EAAOoiB,YAAa,IAEjBsd,EAAM9d,UAAYid,EAAW,CAChC,GAAI7+B,EAAO4M,iBAAmBzL,KAAKmP,MAAMovB,EAAMC,QAAUx+B,KAAKmP,MAAMovB,EAAMjf,SAAWif,EAAMM,eAAe5mB,EAAIsmB,EAAMK,aAAa3mB,GAAKjY,KAAKmP,MAAMovB,EAAMG,QAAU1+B,KAAKmP,MAAMovB,EAAMjf,SAAWif,EAAMM,eAAe5mB,EAAIsmB,EAAMK,aAAa3mB,GAGvO,OAFAsmB,EAAM/d,WAAY,OAClBuB,IAGF,IAAKljB,EAAO4M,iBAAmBzL,KAAKmP,MAAMovB,EAAME,QAAUz+B,KAAKmP,MAAMovB,EAAMjd,SAAWid,EAAMM,eAAe3mB,EAAIqmB,EAAMK,aAAa1mB,GAAKlY,KAAKmP,MAAMovB,EAAMI,QAAU3+B,KAAKmP,MAAMovB,EAAMjd,SAAWid,EAAMM,eAAe3mB,EAAIqmB,EAAMK,aAAa1mB,GAGxO,OAFAqmB,EAAM/d,WAAY,OAClBuB,GAGJ,CACItqB,EAAEurB,YACJvrB,EAAEioB,iBAEJjoB,EAAE0rB,kBACFod,IACAhC,EAAM9d,SAAU,EAChB,MAAMogB,GAAczD,EAAKpD,MAAQ6C,IAAiBoB,EAAQX,SAAWz+B,EAAOQ,OAAO+9B,KAAKhU,WAClF,QACJ8U,EAAO,QACPC,GACEF,EACJM,EAAMpd,SAAWod,EAAMM,eAAe5mB,EAAIsmB,EAAMK,aAAa3mB,EAAIsmB,EAAMjf,OAASuhB,GAActC,EAAM74B,MAAkB,EAAVw4B,GAC5GK,EAAMnd,SAAWmd,EAAMM,eAAe3mB,EAAIqmB,EAAMK,aAAa1mB,EAAIqmB,EAAMjd,OAASuf,GAActC,EAAM34B,OAAmB,EAAVu4B,GACzGI,EAAMpd,SAAWod,EAAMC,OACzBD,EAAMpd,SAAWod,EAAMC,KAAO,GAAKD,EAAMC,KAAOD,EAAMpd,SAAW,IAAM,IAErEod,EAAMpd,SAAWod,EAAMG,OACzBH,EAAMpd,SAAWod,EAAMG,KAAO,GAAKH,EAAMpd,SAAWod,EAAMG,KAAO,IAAM,IAErEH,EAAMnd,SAAWmd,EAAME,OACzBF,EAAMnd,SAAWmd,EAAME,KAAO,GAAKF,EAAME,KAAOF,EAAMnd,SAAW,IAAM,IAErEmd,EAAMnd,SAAWmd,EAAMI,OACzBJ,EAAMnd,SAAWmd,EAAMI,KAAO,GAAKJ,EAAMnd,SAAWmd,EAAMI,KAAO,IAAM,IAIpE/S,EAASkT,gBAAelT,EAASkT,cAAgBP,EAAMM,eAAe5mB,GACtE2T,EAASmT,gBAAenT,EAASmT,cAAgBR,EAAMM,eAAe3mB,GACtE0T,EAASoT,WAAUpT,EAASoT,SAAW5qC,KAAK+H,OACjDyvB,EAAS3T,GAAKsmB,EAAMM,eAAe5mB,EAAI2T,EAASkT,gBAAkB1qC,KAAK+H,MAAQyvB,EAASoT,UAAY,EACpGpT,EAAS1T,GAAKqmB,EAAMM,eAAe3mB,EAAI0T,EAASmT,gBAAkB3qC,KAAK+H,MAAQyvB,EAASoT,UAAY,EAChGh/B,KAAKuE,IAAIg6B,EAAMM,eAAe5mB,EAAI2T,EAASkT,eAAiB,IAAGlT,EAAS3T,EAAI,GAC5EjY,KAAKuE,IAAIg6B,EAAMM,eAAe3mB,EAAI0T,EAASmT,eAAiB,IAAGnT,EAAS1T,EAAI,GAChF0T,EAASkT,cAAgBP,EAAMM,eAAe5mB,EAC9C2T,EAASmT,cAAgBR,EAAMM,eAAe3mB,EAC9C0T,EAASoT,SAAW5qC,KAAK+H,MACzB8hC,EAAQK,YAAYjlC,MAAMwD,UAAY,eAAe0hC,EAAMpd,eAAeod,EAAMnd,eAClF,CACA,SAASoD,IACP,MAAM4Y,EAAOv+B,EAAOu+B,KAEpB,GADAY,EAAQppC,OAAS,GACZqpC,EAAQ5oB,QAAS,OACtB,IAAKkpB,EAAM/d,YAAc+d,EAAM9d,QAG7B,OAFA8d,EAAM/d,WAAY,OAClB+d,EAAM9d,SAAU,GAGlB8d,EAAM/d,WAAY,EAClB+d,EAAM9d,SAAU,EAChB,IAAIqgB,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoBpV,EAAS3T,EAAI6oB,EACjCG,EAAe1C,EAAMpd,SAAW6f,EAChCE,EAAoBtV,EAAS1T,EAAI6oB,EACjCI,EAAe5C,EAAMnd,SAAW8f,EAGnB,IAAftV,EAAS3T,IAAS6oB,EAAoB9gC,KAAKuE,KAAK08B,EAAe1C,EAAMpd,UAAYyK,EAAS3T,IAC3E,IAAf2T,EAAS1T,IAAS6oB,EAAoB/gC,KAAKuE,KAAK48B,EAAe5C,EAAMnd,UAAYwK,EAAS1T,IAC9F,MAAMkpB,EAAmBphC,KAAKC,IAAI6gC,EAAmBC,GACrDxC,EAAMpd,SAAW8f,EACjB1C,EAAMnd,SAAW+f,EAEjB,MAAMR,EAAcpC,EAAM74B,MAAQ03B,EAAKpD,MACjC4G,EAAerC,EAAM34B,OAASw3B,EAAKpD,MACzCuE,EAAMC,KAAOx+B,KAAKE,IAAI+9B,EAAQG,WAAa,EAAIuC,EAAc,EAAG,GAChEpC,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOz+B,KAAKE,IAAI+9B,EAAQI,YAAc,EAAIuC,EAAe,EAAG,GAClErC,EAAMI,MAAQJ,EAAME,KACpBF,EAAMpd,SAAWnhB,KAAKC,IAAID,KAAKE,IAAIq+B,EAAMpd,SAAUod,EAAMG,MAAOH,EAAMC,MACtED,EAAMnd,SAAWphB,KAAKC,IAAID,KAAKE,IAAIq+B,EAAMnd,SAAUmd,EAAMI,MAAOJ,EAAME,MACtER,EAAQK,YAAYjlC,MAAM2f,mBAAqB,GAAGooB,MAClDnD,EAAQK,YAAYjlC,MAAMwD,UAAY,eAAe0hC,EAAMpd,eAAeod,EAAMnd,eAClF,CACA,SAASigB,IACP,MAAMjE,EAAOv+B,EAAOu+B,KAChBa,EAAQv9B,SAAW7B,EAAOiT,cAAgBjT,EAAO8N,OAAO7U,QAAQmmC,EAAQv9B,WACtEu9B,EAAQ5oB,UACV4oB,EAAQ5oB,QAAQhc,MAAMwD,UAAY,+BAEhCohC,EAAQK,cACVL,EAAQK,YAAYjlC,MAAMwD,UAAY,sBAExCohC,EAAQv9B,QAAQwB,UAAUqP,OAAO,GAAG1S,EAAOQ,OAAO+9B,KAAKK,oBACvDL,EAAKpD,MAAQ,EACb6C,EAAe,EACfoB,EAAQv9B,aAAU3C,EAClBkgC,EAAQ5oB,aAAUtX,EAClBkgC,EAAQK,iBAAcvgC,EACtBkgC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAEtB,CACA,SAASuC,EAAYjpC,GAEnB,GAAIolC,GAAgB,IAAMoB,EAAQK,YAAa,OAC/C,IAAKuB,EAAiBpoC,KAAOqoC,EAAyBroC,GAAI,OAC1D,MAAMoX,EAAmBnZ,EAAOqF,iBAAiBkjC,EAAQK,aAAazhC,UAChEL,EAAS,IAAI9G,EAAO4rC,UAAUzyB,GACpC,IAAK8uB,EAUH,OATAA,GAAqB,EACrBC,EAAc3lB,EAAIxgB,EAAE4jC,QACpBuC,EAAc1lB,EAAIzgB,EAAE6jC,QACpBiD,EAAMjf,OAAS9iB,EAAO/E,EACtB8mC,EAAMjd,OAAS9kB,EAAOtJ,EACtBqrC,EAAM74B,MAAQu4B,EAAQ5oB,QAAQlR,aAAe85B,EAAQ5oB,QAAQ9J,YAC7DgzB,EAAM34B,OAASq4B,EAAQ5oB,QAAQtD,cAAgBksB,EAAQ5oB,QAAQ7J,aAC/DyyB,EAAQG,WAAaH,EAAQv9B,QAAQyD,iBACrC85B,EAAQI,YAAcJ,EAAQv9B,QAAQqR,cAGxC,MAAM4hB,GAAUl8B,EAAE4jC,QAAUuC,EAAc3lB,GAAK4lB,EACzCnK,GAAUj8B,EAAE6jC,QAAUsC,EAAc1lB,GAAK2lB,EACzC8C,EAAcpC,EAAM74B,MAAQm3B,EAC5B+D,EAAerC,EAAM34B,OAASi3B,EAC9BuB,EAAaH,EAAQG,WACrBC,EAAcJ,EAAQI,YACtBG,EAAOx+B,KAAKE,IAAIk+B,EAAa,EAAIuC,EAAc,EAAG,GAClDjC,GAAQF,EACRC,EAAOz+B,KAAKE,IAAIm+B,EAAc,EAAIuC,EAAe,EAAG,GACpDjC,GAAQF,EACR8C,EAAOvhC,KAAKC,IAAID,KAAKE,IAAIq+B,EAAMjf,OAASqU,EAAQ+K,GAAOF,GACvDgD,EAAOxhC,KAAKC,IAAID,KAAKE,IAAIq+B,EAAMjd,OAASoS,EAAQiL,GAAOF,GAC7DR,EAAQK,YAAYjlC,MAAM2f,mBAAqB,MAC/CilB,EAAQK,YAAYjlC,MAAMwD,UAAY,eAAe0kC,QAAWC,UAChE5D,EAAc3lB,EAAIxgB,EAAE4jC,QACpBuC,EAAc1lB,EAAIzgB,EAAE6jC,QACpBiD,EAAMjf,OAASiiB,EACfhD,EAAMjd,OAASkgB,CACjB,CACA,SAASC,EAAOhqC,GACd,MAAM2lC,EAAOv+B,EAAOu+B,KACd/9B,EAASR,EAAOQ,OAAO+9B,KAC7B,IAAKa,EAAQv9B,QAAS,CAChBjJ,GAAKA,EAAEhD,SACTwpC,EAAQv9B,QAAUjJ,EAAEhD,OAAO8gB,QAAQ,IAAI1W,EAAOQ,OAAOuN,6BAElDqxB,EAAQv9B,UACP7B,EAAOQ,OAAOmN,SAAW3N,EAAOQ,OAAOmN,QAAQC,SAAW5N,EAAO2N,QACnEyxB,EAAQv9B,QAAUE,EAAgB/B,EAAOqN,SAAU,IAAIrN,EAAOQ,OAAO2V,oBAAoB,GAEzFipB,EAAQv9B,QAAU7B,EAAO8N,OAAO9N,EAAOiT,cAG3C,IAAIuD,EAAU4oB,EAAQv9B,QAAQ7H,cAAc,IAAIwG,EAAOm+B,kBACnDnoB,IACFA,EAAUA,EAAQvc,iBAAiB,kDAAkD,IAEvFmlC,EAAQ5oB,QAAUA,EAEhB4oB,EAAQK,YADNjpB,EACoB1R,EAAes6B,EAAQ5oB,QAAS,IAAIhW,EAAOm+B,kBAAkB,QAE7Dz/B,CAE1B,CACA,IAAKkgC,EAAQ5oB,UAAY4oB,EAAQK,YAAa,OAM9C,IAAIoD,EACAC,EACAC,EACAC,EACAnf,EACAC,EACAmf,EACAC,EACAC,EACAC,EACAtB,EACAC,EACAsB,EACAC,EACAC,EACAC,EACAjE,EACAC,EAtBAx/B,EAAOQ,OAAO2O,UAChBnP,EAAOU,UAAUlG,MAAMmH,SAAW,SAClC3B,EAAOU,UAAUlG,MAAMwtB,YAAc,QAEvCoX,EAAQv9B,QAAQwB,UAAUC,IAAI,GAAG9C,EAAOo+B,oBAmBJ,qBAAzBc,EAAMK,aAAa3mB,GAAqBxgB,GACjDiqC,EAASjqC,EAAEyoB,MACXyhB,EAASlqC,EAAE4pB,QAEXqgB,EAASnD,EAAMK,aAAa3mB,EAC5B0pB,EAASpD,EAAMK,aAAa1mB,GAE9B,MAAMoqB,EAA8B,kBAAN7qC,EAAiBA,EAAI,KAC9B,IAAjBolC,GAAsByF,IACxBZ,OAAS3jC,EACT4jC,OAAS5jC,EACTwgC,EAAMK,aAAa3mB,OAAIla,EACvBwgC,EAAMK,aAAa1mB,OAAIna,GAEzB,MAAMu/B,EAAWkC,IACjBpC,EAAKpD,MAAQsI,GAAkBhF,EAC/BT,EAAeyF,GAAkBhF,GAC7B7lC,GAAwB,IAAjBolC,GAAsByF,GA8B/BR,EAAa,EACbC,EAAa,IA9Bb3D,EAAaH,EAAQv9B,QAAQyD,YAC7Bk6B,EAAcJ,EAAQv9B,QAAQqR,aAC9B6vB,EAAUx/B,EAAc67B,EAAQv9B,SAASoC,KAAOpN,EAAOkN,QACvDi/B,EAAUz/B,EAAc67B,EAAQv9B,SAASmC,IAAMnN,EAAOgN,QACtDggB,EAAQkf,EAAUxD,EAAa,EAAIsD,EACnC/e,EAAQkf,EAAUxD,EAAc,EAAIsD,EACpCK,EAAa/D,EAAQ5oB,QAAQlR,aAAe85B,EAAQ5oB,QAAQ9J,YAC5D02B,EAAchE,EAAQ5oB,QAAQtD,cAAgBksB,EAAQ5oB,QAAQ7J,aAC9Dm1B,EAAcqB,EAAa5E,EAAKpD,MAChC4G,EAAeqB,EAAc7E,EAAKpD,MAClCkI,EAAgBliC,KAAKE,IAAIk+B,EAAa,EAAIuC,EAAc,EAAG,GAC3DwB,EAAgBniC,KAAKE,IAAIm+B,EAAc,EAAIuC,EAAe,EAAG,GAC7DwB,GAAiBF,EACjBG,GAAiBF,EACjBL,EAAapf,EAAQ0a,EAAKpD,MAC1B+H,EAAapf,EAAQya,EAAKpD,MACtB8H,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,GAEXL,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IAMbC,GAAiC,IAAflF,EAAKpD,QACzBiE,EAAQC,QAAU,EAClBD,EAAQE,QAAU,GAEpBF,EAAQK,YAAYjlC,MAAM2f,mBAAqB,QAC/CilB,EAAQK,YAAYjlC,MAAMwD,UAAY,eAAeilC,QAAiBC,SACtE9D,EAAQ5oB,QAAQhc,MAAM2f,mBAAqB,QAC3CilB,EAAQ5oB,QAAQhc,MAAMwD,UAAY,4BAA4BugC,EAAKpD,QACrE,CACA,SAASuI,IACP,MAAMnF,EAAOv+B,EAAOu+B,KACd/9B,EAASR,EAAOQ,OAAO+9B,KAC7B,IAAKa,EAAQv9B,QAAS,CAChB7B,EAAOQ,OAAOmN,SAAW3N,EAAOQ,OAAOmN,QAAQC,SAAW5N,EAAO2N,QACnEyxB,EAAQv9B,QAAUE,EAAgB/B,EAAOqN,SAAU,IAAIrN,EAAOQ,OAAO2V,oBAAoB,GAEzFipB,EAAQv9B,QAAU7B,EAAO8N,OAAO9N,EAAOiT,aAEzC,IAAIuD,EAAU4oB,EAAQv9B,QAAQ7H,cAAc,IAAIwG,EAAOm+B,kBACnDnoB,IACFA,EAAUA,EAAQvc,iBAAiB,kDAAkD,IAEvFmlC,EAAQ5oB,QAAUA,EAEhB4oB,EAAQK,YADNjpB,EACoB1R,EAAes6B,EAAQ5oB,QAAS,IAAIhW,EAAOm+B,kBAAkB,QAE7Dz/B,CAE1B,CACKkgC,EAAQ5oB,SAAY4oB,EAAQK,cAC7Bz/B,EAAOQ,OAAO2O,UAChBnP,EAAOU,UAAUlG,MAAMmH,SAAW,GAClC3B,EAAOU,UAAUlG,MAAMwtB,YAAc,IAEvCuW,EAAKpD,MAAQ,EACb6C,EAAe,EACf0B,EAAMK,aAAa3mB,OAAIla,EACvBwgC,EAAMK,aAAa1mB,OAAIna,EACvBkgC,EAAQK,YAAYjlC,MAAM2f,mBAAqB,QAC/CilB,EAAQK,YAAYjlC,MAAMwD,UAAY,qBACtCohC,EAAQ5oB,QAAQhc,MAAM2f,mBAAqB,QAC3CilB,EAAQ5oB,QAAQhc,MAAMwD,UAAY,8BAClCohC,EAAQv9B,QAAQwB,UAAUqP,OAAO,GAAGlS,EAAOo+B,oBAC3CQ,EAAQv9B,aAAU3C,EAClBkgC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EACdt/B,EAAOQ,OAAO+9B,KAAKG,iBACrBK,EAAgB,CACd3lB,EAAG,EACHC,EAAG,GAEDylB,IACFA,GAAqB,EACrBY,EAAMjf,OAAS,EACfif,EAAMjd,OAAS,IAGrB,CAGA,SAASkhB,EAAW/qC,GAClB,MAAM2lC,EAAOv+B,EAAOu+B,KAChBA,EAAKpD,OAAwB,IAAfoD,EAAKpD,MAErBuI,IAGAd,EAAOhqC,EAEX,CACA,SAASgrC,IACP,MAAM3G,IAAkBj9B,EAAOQ,OAAOorB,kBAAmB,CACvDxD,SAAS,EACTH,SAAS,GAEL4b,GAA4B7jC,EAAOQ,OAAOorB,kBAAmB,CACjExD,SAAS,EACTH,SAAS,GAEX,MAAO,CACLgV,kBACA4G,4BAEJ,CAGA,SAASla,IACP,MAAM4U,EAAOv+B,EAAOu+B,KACpB,GAAIA,EAAK3wB,QAAS,OAClB2wB,EAAK3wB,SAAU,EACf,MAAM,gBACJqvB,EAAe,0BACf4G,GACED,IAGJ5jC,EAAOU,UAAU/G,iBAAiB,cAAeunC,EAAgBjE,GACjEj9B,EAAOU,UAAU/G,iBAAiB,cAAeynC,EAAiByC,GAClE,CAAC,YAAa,gBAAiB,cAAcrqC,SAAQszB,IACnD9sB,EAAOU,UAAU/G,iBAAiBmzB,EAAW2U,EAAcxE,EAAgB,IAI7Ej9B,EAAOU,UAAU/G,iBAAiB,cAAe2pB,EAAaugB,EAChE,CACA,SAASna,IACP,MAAM6U,EAAOv+B,EAAOu+B,KACpB,IAAKA,EAAK3wB,QAAS,OACnB2wB,EAAK3wB,SAAU,EACf,MAAM,gBACJqvB,EAAe,0BACf4G,GACED,IAGJ5jC,EAAOU,UAAU9G,oBAAoB,cAAesnC,EAAgBjE,GACpEj9B,EAAOU,UAAU9G,oBAAoB,cAAewnC,EAAiByC,GACrE,CAAC,YAAa,gBAAiB,cAAcrqC,SAAQszB,IACnD9sB,EAAOU,UAAU9G,oBAAoBkzB,EAAW2U,EAAcxE,EAAgB,IAIhFj9B,EAAOU,UAAU9G,oBAAoB,cAAe0pB,EAAaugB,EACnE,CAhkBAvvC,OAAO8B,eAAe4J,EAAOu+B,KAAM,QAAS,CAC1C,GAAA1lC,GACE,OAAOsiC,CACT,EACA,GAAAriC,CAAIxF,GACF,GAAI6nC,IAAU7nC,EAAO,CACnB,MAAMkjB,EAAU4oB,EAAQ5oB,QAClB3U,EAAUu9B,EAAQv9B,QACxB3I,EAAK,aAAc5F,EAAOkjB,EAAS3U,EACrC,CACAs5B,EAAQ7nC,CACV,IAsjBFoF,EAAG,QAAQ,KACLsH,EAAOQ,OAAO+9B,KAAK3wB,SACrB+b,GACF,IAEFjxB,EAAG,WAAW,KACZgxB,GAAS,IAEXhxB,EAAG,cAAc,CAAC++B,EAAI7+B,KACfoH,EAAOu+B,KAAK3wB,SACjBkT,EAAaloB,EAAE,IAEjBF,EAAG,YAAY,CAAC++B,EAAI7+B,KACboH,EAAOu+B,KAAK3wB,SACjB+X,GAAY,IAEdjtB,EAAG,aAAa,CAAC++B,EAAI7+B,MACdoH,EAAO6Z,WAAa7Z,EAAOQ,OAAO+9B,KAAK3wB,SAAW5N,EAAOu+B,KAAK3wB,SAAW5N,EAAOQ,OAAO+9B,KAAKzG,QAC/F6L,EAAW/qC,EACb,IAEFF,EAAG,iBAAiB,KACdsH,EAAOu+B,KAAK3wB,SAAW5N,EAAOQ,OAAO+9B,KAAK3wB,SAC5C40B,GACF,IAEF9pC,EAAG,eAAe,KACZsH,EAAOu+B,KAAK3wB,SAAW5N,EAAOQ,OAAO+9B,KAAK3wB,SAAW5N,EAAOQ,OAAO2O,SACrEqzB,GACF,IAEFluC,OAAO0Y,OAAOhN,EAAOu+B,KAAM,CACzB5U,SACAD,UACAoa,GAAIlB,EACJmB,IAAKL,EACL5L,OAAQ6L,GAEZ,CC3qBA,SAASK,GAAWjkC,GAClB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EAYJ,SAASkkC,EAAa7qB,EAAGC,GACvB,MAAM6qB,EAAe,WACnB,IAAIC,EACAC,EACAC,EACJ,MAAO,CAACC,EAAO/nB,KACb6nB,GAAY,EACZD,EAAWG,EAAMvuC,OACjB,MAAOouC,EAAWC,EAAW,EAC3BC,EAAQF,EAAWC,GAAY,EAC3BE,EAAMD,IAAU9nB,EAClB6nB,EAAWC,EAEXF,EAAWE,EAGf,OAAOF,CAAQ,CAEnB,CAjBqB,GAwBrB,IAAII,EACAC,EAYJ,OAnBAvoC,KAAKmd,EAAIA,EACTnd,KAAKod,EAAIA,EACTpd,KAAK6gB,UAAY1D,EAAErjB,OAAS,EAM5BkG,KAAKwoC,YAAc,SAAqBjE,GACtC,OAAKA,GAGLgE,EAAKN,EAAajoC,KAAKmd,EAAGonB,GAC1B+D,EAAKC,EAAK,GAIFhE,EAAKvkC,KAAKmd,EAAEmrB,KAAQtoC,KAAKod,EAAEmrB,GAAMvoC,KAAKod,EAAEkrB,KAAQtoC,KAAKmd,EAAEorB,GAAMvoC,KAAKmd,EAAEmrB,IAAOtoC,KAAKod,EAAEkrB,IAR1E,CASlB,EACOtoC,IACT,CACA,SAASyoC,EAAuBxnC,GAC9B8C,EAAOof,WAAWulB,OAAS3kC,EAAOQ,OAAOuQ,KAAO,IAAIkzB,EAAajkC,EAAOkO,WAAYhR,EAAEgR,YAAc,IAAI+1B,EAAajkC,EAAOiO,SAAU/Q,EAAE+Q,SAC1I,CACA,SAASiL,EAAa0rB,EAAIzrB,GACxB,MAAM0rB,EAAa7kC,EAAOof,WAAWC,QACrC,IAAI3K,EACAowB,EACJ,MAAMxY,EAAStsB,EAAO5I,YACtB,SAAS2tC,EAAuB7nC,GAC9B,GAAIA,EAAEyL,UAAW,OAMjB,MAAMvI,EAAYJ,EAAOuN,cAAgBvN,EAAOI,UAAYJ,EAAOI,UAC/B,UAAhCJ,EAAOQ,OAAO4e,WAAW4lB,KAC3BN,EAAuBxnC,GAGvB4nC,GAAuB9kC,EAAOof,WAAWulB,OAAOF,aAAarkC,IAE1D0kC,GAAuD,cAAhC9kC,EAAOQ,OAAO4e,WAAW4lB,KACnDtwB,GAAcxX,EAAE0X,eAAiB1X,EAAE8W,iBAAmBhU,EAAO4U,eAAiB5U,EAAOgU,iBACjF9L,OAAO6E,MAAM2H,IAAgBxM,OAAO+8B,SAASvwB,KAC/CA,EAAa,GAEfowB,GAAuB1kC,EAAYJ,EAAOgU,gBAAkBU,EAAaxX,EAAE8W,gBAEzEhU,EAAOQ,OAAO4e,WAAW8lB,UAC3BJ,EAAsB5nC,EAAE0X,eAAiBkwB,GAE3C5nC,EAAEuX,eAAeqwB,GACjB5nC,EAAEgc,aAAa4rB,EAAqB9kC,GACpC9C,EAAEya,oBACFza,EAAE0Y,qBACJ,CACA,GAAIje,MAAMC,QAAQitC,GAChB,IAAK,IAAI/uC,EAAI,EAAGA,EAAI+uC,EAAW9uC,OAAQD,GAAK,EACtC+uC,EAAW/uC,KAAOqjB,GAAgB0rB,EAAW/uC,aAAcw2B,GAC7DyY,EAAuBF,EAAW/uC,SAG7B+uC,aAAsBvY,GAAUnT,IAAiB0rB,GAC1DE,EAAuBF,EAE3B,CACA,SAAShyB,EAActS,EAAU4Y,GAC/B,MAAMmT,EAAStsB,EAAO5I,YAChBytC,EAAa7kC,EAAOof,WAAWC,QACrC,IAAIvpB,EACJ,SAASqvC,EAAwBjoC,GAC3BA,EAAEyL,YACNzL,EAAE2V,cAActS,EAAUP,GACT,IAAbO,IACFrD,EAAEsd,kBACEtd,EAAEsD,OAAOkV,YACXtY,GAAS,KACPF,EAAEyV,kBAAkB,IAGxB1N,EAAqB/H,EAAEwD,WAAW,KAC3BmkC,GACL3nC,EAAEud,eAAe,KAGvB,CACA,GAAI9iB,MAAMC,QAAQitC,GAChB,IAAK/uC,EAAI,EAAGA,EAAI+uC,EAAW9uC,OAAQD,GAAK,EAClC+uC,EAAW/uC,KAAOqjB,GAAgB0rB,EAAW/uC,aAAcw2B,GAC7D6Y,EAAwBN,EAAW/uC,SAG9B+uC,aAAsBvY,GAAUnT,IAAiB0rB,GAC1DM,EAAwBN,EAE5B,CACA,SAASO,IACFplC,EAAOof,WAAWC,SACnBrf,EAAOof,WAAWulB,SACpB3kC,EAAOof,WAAWulB,YAASzlC,SACpBc,EAAOof,WAAWulB,OAE7B,CAtIA96B,EAAa,CACXuV,WAAY,CACVC,aAASngB,EACTgmC,SAAS,EACTF,GAAI,WAIRhlC,EAAOof,WAAa,CAClBC,aAASngB,GA8HXxG,EAAG,cAAc,KACf,GAAsB,qBAAX7B,SAEiC,kBAArCmJ,EAAOQ,OAAO4e,WAAWC,SAAwBrf,EAAOQ,OAAO4e,WAAWC,mBAAmBvgB,aAFpG,CAGE,MAAMumC,EAA8D,kBAArCrlC,EAAOQ,OAAO4e,WAAWC,QAAuB,IAAIrrB,SAASiG,iBAAiB+F,EAAOQ,OAAO4e,WAAWC,UAAY,CAACrf,EAAOQ,OAAO4e,WAAWC,SAC5KgmB,EAAgB7rC,SAAQ8rC,IAEtB,GADKtlC,EAAOof,WAAWC,UAASrf,EAAOof,WAAWC,QAAU,IACxDimB,GAAkBA,EAAetlC,OACnCA,EAAOof,WAAWC,QAAQhnB,KAAKitC,EAAetlC,aACzC,GAAIslC,EAAgB,CACzB,MAAMxY,EAAY,GAAG9sB,EAAOQ,OAAOirB,mBAC7B8Z,EAAqB3sC,IACzBoH,EAAOof,WAAWC,QAAQhnB,KAAKO,EAAEosB,OAAO,IACxChlB,EAAO8Y,SACPwsB,EAAe1rC,oBAAoBkzB,EAAWyY,EAAmB,EAEnED,EAAe3rC,iBAAiBmzB,EAAWyY,EAC7C,IAGJ,MACAvlC,EAAOof,WAAWC,QAAUrf,EAAOQ,OAAO4e,WAAWC,OAAO,IAE9D3mB,EAAG,UAAU,KACX0sC,GAAc,IAEhB1sC,EAAG,UAAU,KACX0sC,GAAc,IAEhB1sC,EAAG,kBAAkB,KACnB0sC,GAAc,IAEhB1sC,EAAG,gBAAgB,CAAC++B,EAAIr3B,EAAW+Y,KAC5BnZ,EAAOof,WAAWC,UAAWrf,EAAOof,WAAWC,QAAQ1W,WAC5D3I,EAAOof,WAAWlG,aAAa9Y,EAAW+Y,EAAa,IAEzDzgB,EAAG,iBAAiB,CAAC++B,EAAIl3B,EAAU4Y,KAC5BnZ,EAAOof,WAAWC,UAAWrf,EAAOof,WAAWC,QAAQ1W,WAC5D3I,EAAOof,WAAWvM,cAActS,EAAU4Y,EAAa,IAEzD7kB,OAAO0Y,OAAOhN,EAAOof,WAAY,CAC/BlG,eACArG,iBAEJ,CCxLA,SAAS2yB,GAAKzlC,GACZ,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACX47B,KAAM,CACJ73B,SAAS,EACT83B,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,cAAe,KACfC,2BAA4B,KAC5BC,UAAW,QACXnxC,GAAI,KACJoxC,eAAe,KAGnBtmC,EAAOylC,KAAO,CACZc,SAAS,GAEX,IACIC,EACAC,EAFAC,EAAa,KAGbC,GAA6B,IAAIpxC,MAAO0L,UAC5C,SAAS2lC,EAAOC,GACd,MAAMC,EAAeJ,EACO,IAAxBI,EAAa/wC,SACjB+wC,EAAa9W,UAAY,GACzB8W,EAAa9W,UAAY6W,EAC3B,CACA,SAASE,EAAgB3hC,QACV,IAATA,IACFA,EAAO,IAET,MAAM4hC,EAAa,IAAM7lC,KAAK8lC,MAAM,GAAK9lC,KAAK+lC,UAAUtzC,SAAS,IACjE,MAAO,IAAIuzC,OAAO/hC,GAAMjH,QAAQ,KAAM6oC,EACxC,CACA,SAASI,EAAgB7pC,GACvBA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,WAAY,IAAI,GAEvC,CACA,SAAS4sC,EAAmB9pC,GAC1BA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,WAAY,KAAK,GAExC,CACA,SAAS6sC,EAAU/pC,EAAIgqC,GACrBhqC,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,OAAQ8sC,EAAK,GAEpC,CACA,SAASC,EAAqBjqC,EAAIkqC,GAChClqC,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,uBAAwBgtC,EAAY,GAE3D,CACA,SAASC,EAAcnqC,EAAIoqC,GACzBpqC,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,gBAAiBktC,EAAS,GAEjD,CACA,SAASC,EAAWrqC,EAAI4P,GACtB5P,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,aAAc0S,EAAM,GAE3C,CACA,SAAS06B,EAAQtqC,EAAIrI,GACnBqI,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,KAAMvF,EAAG,GAEhC,CACA,SAAS4yC,EAAUvqC,EAAIwqC,GACrBxqC,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,YAAastC,EAAK,GAEzC,CACA,SAASC,EAAUzqC,GACjBA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,iBAAiB,EAAK,GAE7C,CACA,SAASwtC,EAAS1qC,GAChBA,EAAKgI,EAAkBhI,GACvBA,EAAG/D,SAAQs9B,IACTA,EAAMr8B,aAAa,iBAAiB,EAAM,GAE9C,CACA,SAASytC,EAAkBtvC,GACzB,GAAkB,KAAdA,EAAEi5B,SAAgC,KAAdj5B,EAAEi5B,QAAgB,OAC1C,MAAMrxB,EAASR,EAAOQ,OAAOilC,KACvBjkB,EAAW5oB,EAAEhD,OACnB,IAAIoK,EAAO23B,aAAc33B,EAAO23B,WAAWp6B,IAAOikB,IAAaxhB,EAAO23B,WAAWp6B,KAAMyC,EAAO23B,WAAWp6B,GAAGsF,SAASjK,EAAEhD,SAChHgD,EAAEhD,OAAOwM,QAAQ21B,GAAkB/3B,EAAOQ,OAAOm3B,WAAWmB,cADnE,CAGA,GAAI94B,EAAO6mB,YAAc7mB,EAAO6mB,WAAWE,QAAU/mB,EAAO6mB,WAAWC,OAAQ,CAC7E,MAAM3iB,EAAUoB,EAAkBvF,EAAO6mB,WAAWE,QAC9CxiB,EAAUgB,EAAkBvF,EAAO6mB,WAAWC,QAChDviB,EAAQzB,SAAS0e,KACbxhB,EAAO8U,QAAU9U,EAAOQ,OAAOuQ,MACnC/Q,EAAO+b,YAEL/b,EAAO8U,MACT8xB,EAAOpmC,EAAOslC,kBAEdc,EAAOpmC,EAAOolC,mBAGdzhC,EAAQrB,SAAS0e,KACbxhB,EAAO6U,cAAgB7U,EAAOQ,OAAOuQ,MACzC/Q,EAAOqc,YAELrc,EAAO6U,YACT+xB,EAAOpmC,EAAOqlC,mBAEde,EAAOpmC,EAAOmlC,kBAGpB,CACI3lC,EAAO23B,YAAcnW,EAASpf,QAAQ21B,GAAkB/3B,EAAOQ,OAAOm3B,WAAWmB,eACnFtX,EAAS2mB,OA1BX,CA4BF,CACA,SAASC,IACP,GAAIpoC,EAAOQ,OAAOuQ,MAAQ/Q,EAAOQ,OAAO+W,SAAWvX,EAAO6mB,WAAY,OACtE,MAAM,OACJC,EAAM,OACNC,GACE/mB,EAAO6mB,WACPE,IACE/mB,EAAO6U,aACTmzB,EAAUjhB,GACVsgB,EAAmBtgB,KAEnBkhB,EAASlhB,GACTqgB,EAAgBrgB,KAGhBD,IACE9mB,EAAO8U,OACTkzB,EAAUlhB,GACVugB,EAAmBvgB,KAEnBmhB,EAASnhB,GACTsgB,EAAgBtgB,IAGtB,CACA,SAASuhB,IACP,OAAOroC,EAAO23B,YAAc33B,EAAO23B,WAAW8B,SAAWz5B,EAAO23B,WAAW8B,QAAQ1jC,MACrF,CACA,SAASuyC,IACP,OAAOD,KAAmBroC,EAAOQ,OAAOm3B,WAAWC,SACrD,CACA,SAAS2Q,IACP,MAAM/nC,EAASR,EAAOQ,OAAOilC,KACxB4C,KACLroC,EAAO23B,WAAW8B,QAAQjgC,SAAQqgC,IAC5B75B,EAAOQ,OAAOm3B,WAAWC,YAC3BwP,EAAgBvN,GACX75B,EAAOQ,OAAOm3B,WAAWS,eAC5BkP,EAAUzN,EAAU,UACpB+N,EAAW/N,EAAUr5B,EAAOulC,wBAAwB5nC,QAAQ,gBAAiBwG,EAAak1B,GAAY,MAGtGA,EAASz3B,QAAQ21B,GAAkB/3B,EAAOQ,OAAOm3B,WAAWoB,oBAC9Dc,EAASp/B,aAAa,eAAgB,QAEtCo/B,EAAS/iB,gBAAgB,eAC3B,GAEJ,CACA,MAAM0xB,EAAY,CAACjrC,EAAIkrC,EAAW5B,KAChCO,EAAgB7pC,GACG,WAAfA,EAAGy5B,UACLsQ,EAAU/pC,EAAI,UACdA,EAAG5D,iBAAiB,UAAWuuC,IAEjCN,EAAWrqC,EAAIspC,GACfa,EAAcnqC,EAAIkrC,EAAU,EAExBC,EAAoB9vC,IACpB6tC,GAAsBA,IAAuB7tC,EAAEhD,SAAW6wC,EAAmB5jC,SAASjK,EAAEhD,UAC1F4wC,GAAsB,GAExBxmC,EAAOylC,KAAKc,SAAU,CAAI,EAEtBoC,EAAkB,KACtBnC,GAAsB,EACtB/pC,uBAAsB,KACpBA,uBAAsB,KACfuD,EAAO2I,YACV3I,EAAOylC,KAAKc,SAAU,EACxB,GACA,GACF,EAEEqC,EAAqBhwC,IACzB+tC,GAA6B,IAAIpxC,MAAO0L,SAAS,EAE7C4nC,EAAcjwC,IAClB,GAAIoH,EAAOylC,KAAKc,UAAYvmC,EAAOQ,OAAOilC,KAAKa,cAAe,OAC9D,IAAI,IAAI/wC,MAAO0L,UAAY0lC,EAA6B,IAAK,OAC7D,MAAM9kC,EAAUjJ,EAAEhD,OAAO8gB,QAAQ,IAAI1W,EAAOQ,OAAOuN,4BACnD,IAAKlM,IAAY7B,EAAO8N,OAAOhL,SAASjB,GAAU,OAClD4kC,EAAqB5kC,EACrB,MAAMinC,EAAW9oC,EAAO8N,OAAO7U,QAAQ4I,KAAa7B,EAAOiT,YACrDoB,EAAYrU,EAAOQ,OAAO4R,qBAAuBpS,EAAOgT,eAAiBhT,EAAOgT,cAAclQ,SAASjB,GACzGinC,GAAYz0B,GACZzb,EAAEmwC,oBAAsBnwC,EAAEmwC,mBAAmBC,mBAC7ChpC,EAAO4M,eACT5M,EAAOzC,GAAGuG,WAAa,EAEvB9D,EAAOzC,GAAGqG,UAAY,EAExBnH,uBAAsB,KAChB+pC,IACAxmC,EAAOQ,OAAOuQ,KAChB/Q,EAAOub,YAAYzO,SAASjL,EAAQwW,aAAa,4BAA6B,GAE9ErY,EAAO2a,QAAQ3a,EAAO8N,OAAO7U,QAAQ4I,GAAU,GAEjD2kC,GAAsB,EAAK,IAC3B,EAEEh3B,EAAa,KACjB,MAAMhP,EAASR,EAAOQ,OAAOilC,KACzBjlC,EAAO4lC,4BACToB,EAAqBxnC,EAAO8N,OAAQtN,EAAO4lC,4BAEzC5lC,EAAO6lC,WACTiB,EAAUtnC,EAAO8N,OAAQtN,EAAO6lC,WAElC,MAAMr4B,EAAehO,EAAO8N,OAAO/X,OAC/ByK,EAAOwlC,mBACThmC,EAAO8N,OAAOtU,SAAQ,CAACqI,EAASoK,KAC9B,MAAMqF,EAAatR,EAAOQ,OAAOuQ,KAAOjE,SAASjL,EAAQwW,aAAa,2BAA4B,IAAMpM,EAClGg9B,EAAmBzoC,EAAOwlC,kBAAkB7nC,QAAQ,gBAAiBmT,EAAa,GAAGnT,QAAQ,uBAAwB6P,GAC3H45B,EAAW/lC,EAASonC,EAAiB,GAEzC,EAEIxzC,EAAO,KACX,MAAM+K,EAASR,EAAOQ,OAAOilC,KAC7BzlC,EAAOzC,GAAGsgB,OAAO6oB,GAGjB,MAAMxc,EAAclqB,EAAOzC,GACvBiD,EAAO0lC,iCACTsB,EAAqBtd,EAAa1pB,EAAO0lC,iCAEvC1lC,EAAOylC,kBACT2B,EAAW1d,EAAa1pB,EAAOylC,kBAE7BzlC,EAAO2lC,eACTmB,EAAUpd,EAAa1pB,EAAO2lC,eAIhC,MAAMzlC,EAAYV,EAAOU,UACnB+nC,EAAYjoC,EAAOtL,IAAMwL,EAAU2X,aAAa,OAAS,kBAAkB0uB,EAAgB,MAC3FgB,EAAO/nC,EAAOQ,OAAO2mB,UAAYnnB,EAAOQ,OAAO2mB,SAASvZ,QAAU,MAAQ,SAChFi6B,EAAQnnC,EAAW+nC,GACnBX,EAAUpnC,EAAWqnC,GAGrBv4B,IAGA,IAAI,OACFsX,EAAM,OACNC,GACE/mB,EAAO6mB,WAAa7mB,EAAO6mB,WAAa,CAAC,EAW7C,GAVAC,EAASvhB,EAAkBuhB,GAC3BC,EAASxhB,EAAkBwhB,GACvBD,GACFA,EAAOttB,SAAQ+D,GAAMirC,EAAUjrC,EAAIkrC,EAAWjoC,EAAOolC,oBAEnD7e,GACFA,EAAOvtB,SAAQ+D,GAAMirC,EAAUjrC,EAAIkrC,EAAWjoC,EAAOmlC,oBAInD2C,IAA0B,CAC5B,MAAMY,EAAe3jC,EAAkBvF,EAAO23B,WAAWp6B,IACzD2rC,EAAa1vC,SAAQ+D,IACnBA,EAAG5D,iBAAiB,UAAWuuC,EAAkB,GAErD,CAGA,MAAMl0C,EAAWsH,IACjBtH,EAAS2F,iBAAiB,mBAAoBivC,GAC9C5oC,EAAOzC,GAAG5D,iBAAiB,QAASkvC,GAAa,GACjD7oC,EAAOzC,GAAG5D,iBAAiB,QAASkvC,GAAa,GACjD7oC,EAAOzC,GAAG5D,iBAAiB,cAAe+uC,GAAmB,GAC7D1oC,EAAOzC,GAAG5D,iBAAiB,YAAagvC,GAAiB,EAAK,EAEhE,SAAS59B,IACH27B,GAAYA,EAAWh0B,SAC3B,IAAI,OACFoU,EAAM,OACNC,GACE/mB,EAAO6mB,WAAa7mB,EAAO6mB,WAAa,CAAC,EAW7C,GAVAC,EAASvhB,EAAkBuhB,GAC3BC,EAASxhB,EAAkBwhB,GACvBD,GACFA,EAAOttB,SAAQ+D,GAAMA,EAAG3D,oBAAoB,UAAWsuC,KAErDnhB,GACFA,EAAOvtB,SAAQ+D,GAAMA,EAAG3D,oBAAoB,UAAWsuC,KAIrDI,IAA0B,CAC5B,MAAMY,EAAe3jC,EAAkBvF,EAAO23B,WAAWp6B,IACzD2rC,EAAa1vC,SAAQ+D,IACnBA,EAAG3D,oBAAoB,UAAWsuC,EAAkB,GAExD,CACA,MAAMl0C,EAAWsH,IACjBtH,EAAS4F,oBAAoB,mBAAoBgvC,GAE7C5oC,EAAOzC,IAA2B,kBAAdyC,EAAOzC,KAC7ByC,EAAOzC,GAAG3D,oBAAoB,QAASivC,GAAa,GACpD7oC,EAAOzC,GAAG3D,oBAAoB,cAAe8uC,GAAmB,GAChE1oC,EAAOzC,GAAG3D,oBAAoB,YAAa+uC,GAAiB,GAEhE,CACAjwC,EAAG,cAAc,KACfguC,EAAarsC,EAAc,OAAQ2F,EAAOQ,OAAOilC,KAAKC,mBACtDgB,EAAWjsC,aAAa,YAAa,aACrCisC,EAAWjsC,aAAa,cAAe,OAAO,IAEhD/B,EAAG,aAAa,KACTsH,EAAOQ,OAAOilC,KAAK73B,SACxBnY,GAAM,IAERiD,EAAG,kEAAkE,KAC9DsH,EAAOQ,OAAOilC,KAAK73B,SACxB4B,GAAY,IAEd9W,EAAG,yCAAyC,KACrCsH,EAAOQ,OAAOilC,KAAK73B,SACxBw6B,GAAkB,IAEpB1vC,EAAG,oBAAoB,KAChBsH,EAAOQ,OAAOilC,KAAK73B,SACxB26B,GAAkB,IAEpB7vC,EAAG,WAAW,KACPsH,EAAOQ,OAAOilC,KAAK73B,SACxB7C,GAAS,GAEb,CCrXA,SAASo+B,GAAQppC,GACf,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACXlO,QAAS,CACPiS,SAAS,EACTw7B,KAAM,GACNxtC,cAAc,EACdvF,IAAK,SACLgzC,WAAW,KAGf,IAAIzgC,GAAc,EACd0gC,EAAQ,CAAC,EACb,MAAMC,EAAUvmC,GACPA,EAAKpP,WAAWuK,QAAQ,OAAQ,KAAKA,QAAQ,WAAY,IAAIA,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAEvHqrC,EAAgBC,IACpB,MAAM5yC,EAAS+F,IACf,IAAI/B,EAEFA,EADE4uC,EACS,IAAIC,IAAID,GAER5yC,EAAOgE,SAEpB,MAAM8uC,EAAY9uC,EAASM,SAAShC,MAAM,GAAG8D,MAAM,KAAK/E,QAAO0xC,GAAiB,KAATA,IACjE3P,EAAQ0P,EAAU5zC,OAClBM,EAAMszC,EAAU1P,EAAQ,GACxB3mC,EAAQq2C,EAAU1P,EAAQ,GAChC,MAAO,CACL5jC,MACA/C,QACD,EAEGu2C,EAAa,CAACxzC,EAAK4V,KACvB,MAAMpV,EAAS+F,IACf,IAAKgM,IAAgB5I,EAAOQ,OAAO7E,QAAQiS,QAAS,OACpD,IAAI/S,EAEFA,EADEmF,EAAOQ,OAAOkrB,IACL,IAAIge,IAAI1pC,EAAOQ,OAAOkrB,KAEtB70B,EAAOgE,SAEpB,MAAMgV,EAAQ7P,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAOqN,SAASrT,cAAc,6BAA6BiS,OAAajM,EAAO8N,OAAO7B,GACtJ,IAAI3Y,EAAQi2C,EAAQ15B,EAAMwI,aAAa,iBACvC,GAAIrY,EAAOQ,OAAO7E,QAAQytC,KAAKrzC,OAAS,EAAG,CACzC,IAAIqzC,EAAOppC,EAAOQ,OAAO7E,QAAQytC,KACH,MAA1BA,EAAKA,EAAKrzC,OAAS,KAAYqzC,EAAOA,EAAKjwC,MAAM,EAAGiwC,EAAKrzC,OAAS,IACtEzC,EAAQ,GAAG81C,KAAQ/yC,EAAM,GAAGA,KAAS,KAAK/C,GAC5C,MAAYuH,EAASM,SAAS2H,SAASzM,KACrC/C,EAAQ,GAAG+C,EAAM,GAAGA,KAAS,KAAK/C,KAEhC0M,EAAOQ,OAAO7E,QAAQ0tC,YACxB/1C,GAASuH,EAASQ,QAEpB,MAAMyuC,EAAejzC,EAAO8E,QAAQouC,MAChCD,GAAgBA,EAAax2C,QAAUA,IAGvC0M,EAAOQ,OAAO7E,QAAQC,aACxB/E,EAAO8E,QAAQC,aAAa,CAC1BtI,SACC,KAAMA,GAETuD,EAAO8E,QAAQE,UAAU,CACvBvI,SACC,KAAMA,GACX,EAEI02C,EAAgB,CAACvpC,EAAOnN,EAAOomB,KACnC,GAAIpmB,EACF,IAAK,IAAIwC,EAAI,EAAGC,EAASiK,EAAO8N,OAAO/X,OAAQD,EAAIC,EAAQD,GAAK,EAAG,CACjE,MAAM+Z,EAAQ7P,EAAO8N,OAAOhY,GACtBm0C,EAAeV,EAAQ15B,EAAMwI,aAAa,iBAChD,GAAI4xB,IAAiB32C,EAAO,CAC1B,MAAM2Y,EAAQjM,EAAOsd,cAAczN,GACnC7P,EAAO2a,QAAQ1O,EAAOxL,EAAOiZ,EAC/B,CACF,MAEA1Z,EAAO2a,QAAQ,EAAGla,EAAOiZ,EAC3B,EAEIwwB,EAAqB,KACzBZ,EAAQE,EAAcxpC,EAAOQ,OAAOkrB,KACpCse,EAAchqC,EAAOQ,OAAOC,MAAO6oC,EAAMh2C,OAAO,EAAM,EAElDmC,EAAO,KACX,MAAMoB,EAAS+F,IACf,GAAKoD,EAAOQ,OAAO7E,QAAnB,CACA,IAAK9E,EAAO8E,UAAY9E,EAAO8E,QAAQE,UAGrC,OAFAmE,EAAOQ,OAAO7E,QAAQiS,SAAU,OAChC5N,EAAOQ,OAAO2pC,eAAev8B,SAAU,GAGzChF,GAAc,EACd0gC,EAAQE,EAAcxpC,EAAOQ,OAAOkrB,KAC/B4d,EAAMjzC,KAAQizC,EAAMh2C,OAMzB02C,EAAc,EAAGV,EAAMh2C,MAAO0M,EAAOQ,OAAO8X,oBACvCtY,EAAOQ,OAAO7E,QAAQC,cACzB/E,EAAO8C,iBAAiB,WAAYuwC,IAP/BlqC,EAAOQ,OAAO7E,QAAQC,cACzB/E,EAAO8C,iBAAiB,WAAYuwC,EAVN,CAiBlC,EAEIn/B,EAAU,KACd,MAAMlU,EAAS+F,IACVoD,EAAOQ,OAAO7E,QAAQC,cACzB/E,EAAO+C,oBAAoB,WAAYswC,EACzC,EAEFxxC,EAAG,QAAQ,KACLsH,EAAOQ,OAAO7E,QAAQiS,SACxBnY,GACF,IAEFiD,EAAG,WAAW,KACRsH,EAAOQ,OAAO7E,QAAQiS,SACxB7C,GACF,IAEFrS,EAAG,4CAA4C,KACzCkQ,GACFihC,EAAW7pC,EAAOQ,OAAO7E,QAAQtF,IAAK2J,EAAOiT,YAC/C,IAEFva,EAAG,eAAe,KACZkQ,GAAe5I,EAAOQ,OAAO2O,SAC/B06B,EAAW7pC,EAAOQ,OAAO7E,QAAQtF,IAAK2J,EAAOiT,YAC/C,GAEJ,CCxIA,SAASm3B,GAAerqC,GACtB,IAAI,OACFC,EAAM,aACN6J,EAAY,KACZ3Q,EAAI,GACJR,GACEqH,EACA6I,GAAc,EAClB,MAAM5U,EAAWsH,IACXzE,EAAS+F,IACfiN,EAAa,CACXsgC,eAAgB,CACdv8B,SAAS,EACThS,cAAc,EACdyuC,YAAY,EACZ,aAAA/sB,CAAcma,EAAI38B,GAChB,GAAIkF,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAS,CACnD,MAAM08B,EAAgBtqC,EAAO8N,OAAOmI,MAAKpU,GAAWA,EAAQwW,aAAa,eAAiBvd,IAC1F,IAAKwvC,EAAe,OAAO,EAC3B,MAAMr+B,EAAQa,SAASw9B,EAAcjyB,aAAa,2BAA4B,IAC9E,OAAOpM,CACT,CACA,OAAOjM,EAAOsd,cAAcvb,EAAgB/B,EAAOqN,SAAU,IAAIrN,EAAOQ,OAAOuN,yBAAyBjT,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMyvC,EAAe,KACnBrxC,EAAK,cACL,MAAMsxC,EAAUx2C,EAAS6G,SAASC,KAAKqD,QAAQ,IAAK,IAC9CssC,EAAgBzqC,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAOqN,SAASrT,cAAc,6BAA6BgG,EAAOiT,iBAAmBjT,EAAO8N,OAAO9N,EAAOiT,aAC5Ky3B,EAAkBD,EAAgBA,EAAcpyB,aAAa,aAAe,GAClF,GAAImyB,IAAYE,EAAiB,CAC/B,MAAMjvB,EAAWzb,EAAOQ,OAAO2pC,eAAe7sB,cAActd,EAAQwqC,GACpE,GAAwB,qBAAb/uB,GAA4BvT,OAAO6E,MAAM0O,GAAW,OAC/Dzb,EAAO2a,QAAQc,EACjB,GAEIkvB,EAAU,KACd,IAAK/hC,IAAgB5I,EAAOQ,OAAO2pC,eAAev8B,QAAS,OAC3D,MAAM68B,EAAgBzqC,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAOqN,SAASrT,cAAc,6BAA6BgG,EAAOiT,iBAAmBjT,EAAO8N,OAAO9N,EAAOiT,aAC5Ky3B,EAAkBD,EAAgBA,EAAcpyB,aAAa,cAAgBoyB,EAAcpyB,aAAa,gBAAkB,GAC5HrY,EAAOQ,OAAO2pC,eAAevuC,cAAgB/E,EAAO8E,SAAW9E,EAAO8E,QAAQC,cAChF/E,EAAO8E,QAAQC,aAAa,KAAM,KAAM,IAAI8uC,KAAqB,IACjExxC,EAAK,aAELlF,EAAS6G,SAASC,KAAO4vC,GAAmB,GAC5CxxC,EAAK,WACP,EAEIzD,EAAO,KACX,IAAKuK,EAAOQ,OAAO2pC,eAAev8B,SAAW5N,EAAOQ,OAAO7E,SAAWqE,EAAOQ,OAAO7E,QAAQiS,QAAS,OACrGhF,GAAc,EACd,MAAM9N,EAAO9G,EAAS6G,SAASC,KAAKqD,QAAQ,IAAK,IACjD,GAAIrD,EAAM,CACR,MAAM2F,EAAQ,EACRwL,EAAQjM,EAAOQ,OAAO2pC,eAAe7sB,cAActd,EAAQlF,GACjEkF,EAAO2a,QAAQ1O,GAAS,EAAGxL,EAAOT,EAAOQ,OAAO8X,oBAAoB,EACtE,CACItY,EAAOQ,OAAO2pC,eAAeE,YAC/BxzC,EAAO8C,iBAAiB,aAAc4wC,EACxC,EAEIx/B,EAAU,KACV/K,EAAOQ,OAAO2pC,eAAeE,YAC/BxzC,EAAO+C,oBAAoB,aAAc2wC,EAC3C,EAEF7xC,EAAG,QAAQ,KACLsH,EAAOQ,OAAO2pC,eAAev8B,SAC/BnY,GACF,IAEFiD,EAAG,WAAW,KACRsH,EAAOQ,OAAO2pC,eAAev8B,SAC/B7C,GACF,IAEFrS,EAAG,4CAA4C,KACzCkQ,GACF+hC,GACF,IAEFjyC,EAAG,eAAe,KACZkQ,GAAe5I,EAAOQ,OAAO2O,SAC/Bw7B,GACF,GAEJ,CCtFA,SAASC,GAAS7qC,GAChB,IAuBIszB,EACAwX,GAxBA,OACF7qC,EAAM,aACN6J,EAAY,GACZnR,EAAE,KACFQ,EAAI,OACJsH,GACET,EACJC,EAAOmnB,SAAW,CAChBC,SAAS,EACTC,QAAQ,EACRyjB,SAAU,GAEZjhC,EAAa,CACXsd,SAAU,CACRvZ,SAAS,EACTvQ,MAAO,IACP0tC,mBAAmB,EACnBzU,sBAAsB,EACtB0U,iBAAiB,EACjBC,kBAAkB,EAClBC,mBAAmB,KAKvB,IAEIC,EAEAC,EACAzpB,EACA0pB,EACAC,EACAC,EACAC,EACAC,EAVAC,EAAqBlrC,GAAUA,EAAO2mB,SAAW3mB,EAAO2mB,SAAS9pB,MAAQ,IACzEsuC,EAAuBnrC,GAAUA,EAAO2mB,SAAW3mB,EAAO2mB,SAAS9pB,MAAQ,IAE3EuuC,GAAoB,IAAIr2C,MAAO0L,UAQnC,SAASuhC,EAAgB5pC,GAClBoH,IAAUA,EAAO2I,WAAc3I,EAAOU,WACvC9H,EAAEhD,SAAWoK,EAAOU,YACxBV,EAAOU,UAAU9G,oBAAoB,gBAAiB4oC,GAClDiJ,GAAwB7yC,EAAEosB,QAAUpsB,EAAEosB,OAAOC,mBAGjDsC,IACF,CACA,MAAMskB,EAAe,KACnB,GAAI7rC,EAAO2I,YAAc3I,EAAOmnB,SAASC,QAAS,OAC9CpnB,EAAOmnB,SAASE,OAClB+jB,GAAY,EACHA,IACTO,EAAuBR,EACvBC,GAAY,GAEd,MAAMN,EAAW9qC,EAAOmnB,SAASE,OAAS8jB,EAAmBS,EAAoBD,GAAuB,IAAIp2C,MAAO0L,UACnHjB,EAAOmnB,SAAS2jB,SAAWA,EAC3B5xC,EAAK,mBAAoB4xC,EAAUA,EAAWY,GAC9Cb,EAAMpuC,uBAAsB,KAC1BovC,GAAc,GACd,EAEEC,EAAgB,KACpB,IAAIrB,EAMJ,GAJEA,EADEzqC,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAC1B5N,EAAO8N,OAAOmI,MAAKpU,GAAWA,EAAQwB,UAAUR,SAAS,yBAEzD7C,EAAO8N,OAAO9N,EAAOiT,cAElCw3B,EAAe,OACpB,MAAMsB,EAAoBj/B,SAAS29B,EAAcpyB,aAAa,wBAAyB,IACvF,OAAO0zB,CAAiB,EAEpBC,EAAMC,IACV,GAAIjsC,EAAO2I,YAAc3I,EAAOmnB,SAASC,QAAS,OAClDzqB,qBAAqBkuC,GACrBgB,IACA,IAAIxuC,EAA8B,qBAAf4uC,EAA6BjsC,EAAOQ,OAAO2mB,SAAS9pB,MAAQ4uC,EAC/EP,EAAqB1rC,EAAOQ,OAAO2mB,SAAS9pB,MAC5CsuC,EAAuB3rC,EAAOQ,OAAO2mB,SAAS9pB,MAC9C,MAAM0uC,EAAoBD,KACrB5jC,OAAO6E,MAAMg/B,IAAsBA,EAAoB,GAA2B,qBAAfE,IACtE5uC,EAAQ0uC,EACRL,EAAqBK,EACrBJ,EAAuBI,GAEzBZ,EAAmB9tC,EACnB,MAAMoD,EAAQT,EAAOQ,OAAOC,MACtBolB,EAAU,KACT7lB,IAAUA,EAAO2I,YAClB3I,EAAOQ,OAAO2mB,SAAS8jB,kBACpBjrC,EAAO6U,aAAe7U,EAAOQ,OAAOuQ,MAAQ/Q,EAAOQ,OAAO+W,QAC7DvX,EAAOqc,UAAU5b,GAAO,GAAM,GAC9BvH,EAAK,aACK8G,EAAOQ,OAAO2mB,SAAS6jB,kBACjChrC,EAAO2a,QAAQ3a,EAAO8N,OAAO/X,OAAS,EAAG0K,GAAO,GAAM,GACtDvH,EAAK,cAGF8G,EAAO8U,OAAS9U,EAAOQ,OAAOuQ,MAAQ/Q,EAAOQ,OAAO+W,QACvDvX,EAAO+b,UAAUtb,GAAO,GAAM,GAC9BvH,EAAK,aACK8G,EAAOQ,OAAO2mB,SAAS6jB,kBACjChrC,EAAO2a,QAAQ,EAAGla,GAAO,GAAM,GAC/BvH,EAAK,aAGL8G,EAAOQ,OAAO2O,UAChBy8B,GAAoB,IAAIr2C,MAAO0L,UAC/BxE,uBAAsB,KACpBuvC,GAAK,KAET,EAcF,OAZI3uC,EAAQ,GACVd,aAAa82B,GACbA,EAAU/2B,YAAW,KACnBupB,GAAS,GACRxoB,IAEHZ,uBAAsB,KACpBopB,GAAS,IAKNxoB,CAAK,EAER6uC,EAAQ,KACZN,GAAoB,IAAIr2C,MAAO0L,UAC/BjB,EAAOmnB,SAASC,SAAU,EAC1B4kB,IACA9yC,EAAK,gBAAgB,EAEjBq9B,EAAO,KACXv2B,EAAOmnB,SAASC,SAAU,EAC1B7qB,aAAa82B,GACb12B,qBAAqBkuC,GACrB3xC,EAAK,eAAe,EAEhBizC,EAAQ,CAACvyB,EAAUwyB,KACvB,GAAIpsC,EAAO2I,YAAc3I,EAAOmnB,SAASC,QAAS,OAClD7qB,aAAa82B,GACRzZ,IACH4xB,GAAsB,GAExB,MAAM3lB,EAAU,KACd3sB,EAAK,iBACD8G,EAAOQ,OAAO2mB,SAAS4jB,kBACzB/qC,EAAOU,UAAU/G,iBAAiB,gBAAiB6oC,GAEnDjb,GACF,EAGF,GADAvnB,EAAOmnB,SAASE,QAAS,EACrB+kB,EAMF,OALIb,IACFJ,EAAmBnrC,EAAOQ,OAAO2mB,SAAS9pB,OAE5CkuC,GAAe,OACf1lB,IAGF,MAAMxoB,EAAQ8tC,GAAoBnrC,EAAOQ,OAAO2mB,SAAS9pB,MACzD8tC,EAAmB9tC,IAAS,IAAI9H,MAAO0L,UAAY2qC,GAC/C5rC,EAAO8U,OAASq2B,EAAmB,IAAMnrC,EAAOQ,OAAOuQ,OACvDo6B,EAAmB,IAAGA,EAAmB,GAC7CtlB,IAAS,EAEL0B,EAAS,KACTvnB,EAAO8U,OAASq2B,EAAmB,IAAMnrC,EAAOQ,OAAOuQ,MAAQ/Q,EAAO2I,YAAc3I,EAAOmnB,SAASC,UACxGwkB,GAAoB,IAAIr2C,MAAO0L,UAC3BuqC,GACFA,GAAsB,EACtBQ,EAAIb,IAEJa,IAEFhsC,EAAOmnB,SAASE,QAAS,EACzBnuB,EAAK,kBAAiB,EAElB0vC,EAAqB,KACzB,GAAI5oC,EAAO2I,YAAc3I,EAAOmnB,SAASC,QAAS,OAClD,MAAMpzB,EAAWsH,IACgB,WAA7BtH,EAASq4C,kBACXb,GAAsB,EACtBW,GAAM,IAEyB,YAA7Bn4C,EAASq4C,iBACX9kB,GACF,EAEI+kB,EAAiB1zC,IACC,UAAlBA,EAAE2oB,cACNiqB,GAAsB,EACtBC,GAAuB,EACnBzrC,EAAO6Z,WAAa7Z,EAAOmnB,SAASE,QACxC8kB,GAAM,GAAK,EAEPI,EAAiB3zC,IACC,UAAlBA,EAAE2oB,cACNkqB,GAAuB,EACnBzrC,EAAOmnB,SAASE,QAClBE,IACF,EAEIilB,EAAoB,KACpBxsC,EAAOQ,OAAO2mB,SAAS+jB,oBACzBlrC,EAAOzC,GAAG5D,iBAAiB,eAAgB2yC,GAC3CtsC,EAAOzC,GAAG5D,iBAAiB,eAAgB4yC,GAC7C,EAEIE,EAAoB,KACpBzsC,EAAOzC,IAA2B,kBAAdyC,EAAOzC,KAC7ByC,EAAOzC,GAAG3D,oBAAoB,eAAgB0yC,GAC9CtsC,EAAOzC,GAAG3D,oBAAoB,eAAgB2yC,GAChD,EAEIG,EAAuB,KAC3B,MAAM14C,EAAWsH,IACjBtH,EAAS2F,iBAAiB,mBAAoBivC,EAAmB,EAE7D+D,EAAuB,KAC3B,MAAM34C,EAAWsH,IACjBtH,EAAS4F,oBAAoB,mBAAoBgvC,EAAmB,EAEtElwC,EAAG,QAAQ,KACLsH,EAAOQ,OAAO2mB,SAASvZ,UACzB4+B,IACAE,IACAR,IACF,IAEFxzC,EAAG,WAAW,KACZ+zC,IACAE,IACI3sC,EAAOmnB,SAASC,SAClBmP,GACF,IAEF79B,EAAG,0BAA0B,MACvB2yC,GAAiBG,IACnBjkB,GACF,IAEF7uB,EAAG,8BAA8B,KAC1BsH,EAAOQ,OAAO2mB,SAASmP,qBAG1BC,IAFA4V,GAAM,GAAM,EAGd,IAEFzzC,EAAG,yBAAyB,CAAC++B,EAAIh3B,EAAOmZ,MAClC5Z,EAAO2I,WAAc3I,EAAOmnB,SAASC,UACrCxN,IAAa5Z,EAAOQ,OAAO2mB,SAASmP,qBACtC6V,GAAM,GAAM,GAEZ5V,IACF,IAEF79B,EAAG,mBAAmB,MAChBsH,EAAO2I,WAAc3I,EAAOmnB,SAASC,UACrCpnB,EAAOQ,OAAO2mB,SAASmP,qBACzBC,KAGF5U,GAAY,EACZ0pB,GAAgB,EAChBG,GAAsB,EACtBF,EAAoBhvC,YAAW,KAC7BkvC,GAAsB,EACtBH,GAAgB,EAChBc,GAAM,EAAK,GACV,MAAI,IAETzzC,EAAG,YAAY,KACb,IAAIsH,EAAO2I,WAAc3I,EAAOmnB,SAASC,SAAYzF,EAArD,CAGA,GAFAplB,aAAa+uC,GACb/uC,aAAa82B,GACTrzB,EAAOQ,OAAO2mB,SAASmP,qBAGzB,OAFA+U,GAAgB,OAChB1pB,GAAY,GAGV0pB,GAAiBrrC,EAAOQ,OAAO2O,SAASoY,IAC5C8jB,GAAgB,EAChB1pB,GAAY,CAV0D,CAUrD,IAEnBjpB,EAAG,eAAe,MACZsH,EAAO2I,WAAc3I,EAAOmnB,SAASC,UACzCmkB,GAAe,EAAI,IAErBj3C,OAAO0Y,OAAOhN,EAAOmnB,SAAU,CAC7B+kB,QACA3V,OACA4V,QACA5kB,UAEJ,CC1SA,SAASqlB,GAAM7sC,GACb,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACXgjC,OAAQ,CACN7sC,OAAQ,KACR8sC,sBAAsB,EACtBC,iBAAkB,EAClBC,sBAAuB,4BACvBC,qBAAsB,mBAG1B,IAAIrkC,GAAc,EACdskC,GAAgB,EAIpB,SAASC,IACP,MAAMC,EAAeptC,EAAO6sC,OAAO7sC,OACnC,IAAKotC,GAAgBA,EAAazkC,UAAW,OAC7C,MAAMiQ,EAAew0B,EAAax0B,aAC5BD,EAAey0B,EAAaz0B,aAClC,GAAIA,GAAgBA,EAAatV,UAAUR,SAAS7C,EAAOQ,OAAOqsC,OAAOG,uBAAwB,OACjG,GAA4B,qBAAjBp0B,GAAiD,OAAjBA,EAAuB,OAClE,IAAIwE,EAEFA,EADEgwB,EAAa5sC,OAAOuQ,KACPjE,SAASsgC,EAAaz0B,aAAaN,aAAa,2BAA4B,IAE5EO,EAEb5Y,EAAOQ,OAAOuQ,KAChB/Q,EAAOub,YAAY6B,GAEnBpd,EAAO2a,QAAQyC,EAEnB,CACA,SAAS3nB,IACP,MACEo3C,OAAQQ,GACNrtC,EAAOQ,OACX,GAAIoI,EAAa,OAAO,EACxBA,GAAc,EACd,MAAM0kC,EAActtC,EAAO5I,YAC3B,GAAIi2C,EAAartC,kBAAkBstC,EACjCttC,EAAO6sC,OAAO7sC,OAASqtC,EAAartC,OACpC1L,OAAO0Y,OAAOhN,EAAO6sC,OAAO7sC,OAAOipB,eAAgB,CACjD7W,qBAAqB,EACrByG,qBAAqB,IAEvBvkB,OAAO0Y,OAAOhN,EAAO6sC,OAAO7sC,OAAOQ,OAAQ,CACzC4R,qBAAqB,EACrByG,qBAAqB,IAEvB7Y,EAAO6sC,OAAO7sC,OAAO8Y,cAChB,GAAI,EAASu0B,EAAartC,QAAS,CACxC,MAAMutC,EAAqBj5C,OAAO0Y,OAAO,CAAC,EAAGqgC,EAAartC,QAC1D1L,OAAO0Y,OAAOugC,EAAoB,CAChCn7B,qBAAqB,EACrByG,qBAAqB,IAEvB7Y,EAAO6sC,OAAO7sC,OAAS,IAAIstC,EAAYC,GACvCL,GAAgB,CAClB,CAGA,OAFAltC,EAAO6sC,OAAO7sC,OAAOzC,GAAG8F,UAAUC,IAAItD,EAAOQ,OAAOqsC,OAAOI,sBAC3DjtC,EAAO6sC,OAAO7sC,OAAOtH,GAAG,MAAOy0C,IACxB,CACT,CACA,SAASr0B,EAAO8B,GACd,MAAMwyB,EAAeptC,EAAO6sC,OAAO7sC,OACnC,IAAKotC,GAAgBA,EAAazkC,UAAW,OAC7C,MAAMgH,EAAsD,SAAtCy9B,EAAa5sC,OAAOmP,cAA2By9B,EAAal2B,uBAAyBk2B,EAAa5sC,OAAOmP,cAG/H,IAAI69B,EAAmB,EACvB,MAAMC,EAAmBztC,EAAOQ,OAAOqsC,OAAOG,sBAS9C,GARIhtC,EAAOQ,OAAOmP,cAAgB,IAAM3P,EAAOQ,OAAO0O,iBACpDs+B,EAAmBxtC,EAAOQ,OAAOmP,eAE9B3P,EAAOQ,OAAOqsC,OAAOC,uBACxBU,EAAmB,GAErBA,EAAmBrsC,KAAKmP,MAAMk9B,GAC9BJ,EAAat/B,OAAOtU,SAAQqI,GAAWA,EAAQwB,UAAUqP,OAAO+6B,KAC5DL,EAAa5sC,OAAOuQ,MAAQq8B,EAAa5sC,OAAOmN,SAAWy/B,EAAa5sC,OAAOmN,QAAQC,QACzF,IAAK,IAAI9X,EAAI,EAAGA,EAAI03C,EAAkB13C,GAAK,EACzCiM,EAAgBqrC,EAAa//B,SAAU,6BAA6BrN,EAAOwX,UAAY1hB,OAAO0D,SAAQqI,IACpGA,EAAQwB,UAAUC,IAAImqC,EAAiB,SAI3C,IAAK,IAAI33C,EAAI,EAAGA,EAAI03C,EAAkB13C,GAAK,EACrCs3C,EAAat/B,OAAO9N,EAAOwX,UAAY1hB,IACzCs3C,EAAat/B,OAAO9N,EAAOwX,UAAY1hB,GAAGuN,UAAUC,IAAImqC,GAI9D,MAAMV,EAAmB/sC,EAAOQ,OAAOqsC,OAAOE,iBACxCW,EAAYX,IAAqBK,EAAa5sC,OAAOuQ,KAC3D,GAAI/Q,EAAOwX,YAAc41B,EAAa51B,WAAak2B,EAAW,CAC5D,MAAMC,EAAqBP,EAAan6B,YACxC,IAAI26B,EACAtzB,EACJ,GAAI8yB,EAAa5sC,OAAOuQ,KAAM,CAC5B,MAAM88B,EAAiBT,EAAat/B,OAAOmI,MAAKpU,GAAWA,EAAQwW,aAAa,6BAA+B,GAAGrY,EAAOwX,cACzHo2B,EAAiBR,EAAat/B,OAAO7U,QAAQ40C,GAC7CvzB,EAAYta,EAAOiT,YAAcjT,EAAO6X,cAAgB,OAAS,MACnE,MACE+1B,EAAiB5tC,EAAOwX,UACxB8C,EAAYszB,EAAiB5tC,EAAO6X,cAAgB,OAAS,OAE3D61B,IACFE,GAAgC,SAAdtzB,EAAuByyB,GAAoB,EAAIA,GAE/DK,EAAav5B,sBAAwBu5B,EAAav5B,qBAAqB5a,QAAQ20C,GAAkB,IAC/FR,EAAa5sC,OAAO0O,eAEpB0+B,EADEA,EAAiBD,EACFC,EAAiBzsC,KAAKmP,MAAMX,EAAgB,GAAK,EAEjDi+B,EAAiBzsC,KAAKmP,MAAMX,EAAgB,GAAK,EAE3Di+B,EAAiBD,GAAsBP,EAAa5sC,OAAOgQ,eACtE48B,EAAazyB,QAAQizB,EAAgBhzB,EAAU,OAAI1b,GAEvD,CACF,CA9GAc,EAAO6sC,OAAS,CACd7sC,OAAQ,MA8GVtH,EAAG,cAAc,KACf,MAAM,OACJm0C,GACE7sC,EAAOQ,OACX,GAAKqsC,GAAWA,EAAO7sC,OACvB,GAA6B,kBAAlB6sC,EAAO7sC,QAAuB6sC,EAAO7sC,kBAAkBlB,YAAa,CAC7E,MAAM9K,EAAWsH,IACXwyC,EAA0B,KAC9B,MAAMC,EAAyC,kBAAlBlB,EAAO7sC,OAAsBhM,EAASgG,cAAc6yC,EAAO7sC,QAAU6sC,EAAO7sC,OACzG,GAAI+tC,GAAiBA,EAAc/tC,OACjC6sC,EAAO7sC,OAAS+tC,EAAc/tC,OAC9BvK,IACAqjB,GAAO,QACF,GAAIi1B,EAAe,CACxB,MAAMjhB,EAAY,GAAG9sB,EAAOQ,OAAOirB,mBAC7BuiB,EAAiBp1C,IACrBi0C,EAAO7sC,OAASpH,EAAEosB,OAAO,GACzB+oB,EAAcn0C,oBAAoBkzB,EAAWkhB,GAC7Cv4C,IACAqjB,GAAO,GACP+zB,EAAO7sC,OAAO8Y,SACd9Y,EAAO8Y,QAAQ,EAEjBi1B,EAAcp0C,iBAAiBmzB,EAAWkhB,EAC5C,CACA,OAAOD,CAAa,EAEhBE,EAAyB,KAC7B,GAAIjuC,EAAO2I,UAAW,OACtB,MAAMolC,EAAgBD,IACjBC,GACHtxC,sBAAsBwxC,EACxB,EAEFxxC,sBAAsBwxC,EACxB,MACEx4C,IACAqjB,GAAO,EACT,IAEFpgB,EAAG,4CAA4C,KAC7CogB,GAAQ,IAEVpgB,EAAG,iBAAiB,CAAC++B,EAAIl3B,KACvB,MAAM6sC,EAAeptC,EAAO6sC,OAAO7sC,OAC9BotC,IAAgBA,EAAazkC,WAClCykC,EAAav6B,cAActS,EAAS,IAEtC7H,EAAG,iBAAiB,KAClB,MAAM00C,EAAeptC,EAAO6sC,OAAO7sC,OAC9BotC,IAAgBA,EAAazkC,WAC9BukC,GACFE,EAAariC,SACf,IAEFzW,OAAO0Y,OAAOhN,EAAO6sC,OAAQ,CAC3Bp3C,OACAqjB,UAEJ,CC5LA,SAAS4D,GAAS3c,GAChB,IAAI,OACFC,EAAM,aACN6J,EAAY,KACZ3Q,EAAI,KACJsS,GACEzL,EAaJ,SAAS+gB,IACP,GAAI9gB,EAAOQ,OAAO2O,QAAS,OAC3B,MAAM/O,EAAYJ,EAAOvC,eACzBuC,EAAOkZ,aAAa9Y,GACpBJ,EAAO6S,cAAc,GACrB7S,EAAOkf,gBAAgBgO,WAAWn3B,OAAS,EAC3CiK,EAAO0c,SAASiJ,WAAW,CACzBO,WAAYlmB,EAAOwN,IAAMxN,EAAOI,WAAaJ,EAAOI,WAExD,CACA,SAASkjB,IACP,GAAItjB,EAAOQ,OAAO2O,QAAS,OAC3B,MACE+P,gBAAiB/S,EAAI,QACrBmV,GACEthB,EAE2B,IAA3BmM,EAAK+gB,WAAWn3B,QAClBoW,EAAK+gB,WAAW70B,KAAK,CACnB49B,SAAU3U,EAAQthB,EAAO4M,eAAiB,SAAW,UACrDvM,KAAM8L,EAAK0W,iBAGf1W,EAAK+gB,WAAW70B,KAAK,CACnB49B,SAAU3U,EAAQthB,EAAO4M,eAAiB,WAAa,YACvDvM,KAAM/C,KAEV,CACA,SAASqoB,EAAWzc,GAClB,IAAI,WACFgd,GACEhd,EACJ,GAAIlJ,EAAOQ,OAAO2O,QAAS,OAC3B,MAAM,OACJ3O,EAAM,UACNE,EACA6M,aAAcC,EAAG,SACjBS,EACAiR,gBAAiB/S,GACfnM,EAEE8lB,EAAexoB,IACfyoB,EAAWD,EAAe3Z,EAAK0W,eACrC,GAAIqD,GAAclmB,EAAOgU,eACvBhU,EAAO2a,QAAQ3a,EAAOiT,kBAGxB,GAAIiT,GAAclmB,EAAO4U,eACnB5U,EAAO8N,OAAO/X,OAASkY,EAASlY,OAClCiK,EAAO2a,QAAQ1M,EAASlY,OAAS,GAEjCiK,EAAO2a,QAAQ3a,EAAO8N,OAAO/X,OAAS,OAJ1C,CAQA,GAAIyK,EAAOkc,SAASwxB,SAAU,CAC5B,GAAI/hC,EAAK+gB,WAAWn3B,OAAS,EAAG,CAC9B,MAAMo4C,EAAgBhiC,EAAK+gB,WAAWkhB,MAChCC,EAAgBliC,EAAK+gB,WAAWkhB,MAChC1N,EAAWyN,EAAclY,SAAWoY,EAAcpY,SAClD51B,EAAO8tC,EAAc9tC,KAAOguC,EAAchuC,KAChDL,EAAO+sB,SAAW2T,EAAWrgC,EAC7BL,EAAO+sB,UAAY,EACf5rB,KAAKuE,IAAI1F,EAAO+sB,UAAYvsB,EAAOkc,SAAS4xB,kBAC9CtuC,EAAO+sB,SAAW,IAIhB1sB,EAAO,KAAO/C,IAAQ6wC,EAAc9tC,KAAO,OAC7CL,EAAO+sB,SAAW,EAEtB,MACE/sB,EAAO+sB,SAAW,EAEpB/sB,EAAO+sB,UAAYvsB,EAAOkc,SAAS6xB,sBACnCpiC,EAAK+gB,WAAWn3B,OAAS,EACzB,IAAIwsC,EAAmB,IAAO/hC,EAAOkc,SAAS8xB,cAC9C,MAAMC,EAAmBzuC,EAAO+sB,SAAWwV,EAC3C,IAAImM,EAAc1uC,EAAOI,UAAYquC,EACjCjhC,IAAKkhC,GAAeA,GACxB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5B1tC,KAAKuE,IAAI1F,EAAO+sB,UAAiBvsB,EAAOkc,SAASoyB,oBACtE,IAAIC,EACJ,GAAIL,EAAc1uC,EAAO4U,eACnBpU,EAAOkc,SAASsyB,gBACdN,EAAc1uC,EAAO4U,gBAAkBi6B,IACzCH,EAAc1uC,EAAO4U,eAAiBi6B,GAExCF,EAAsB3uC,EAAO4U,eAC7Bg6B,GAAW,EACXziC,EAAKgZ,qBAAsB,GAE3BupB,EAAc1uC,EAAO4U,eAEnBpU,EAAOuQ,MAAQvQ,EAAO0O,iBAAgB6/B,GAAe,QACpD,GAAIL,EAAc1uC,EAAOgU,eAC1BxT,EAAOkc,SAASsyB,gBACdN,EAAc1uC,EAAOgU,eAAiB66B,IACxCH,EAAc1uC,EAAOgU,eAAiB66B,GAExCF,EAAsB3uC,EAAOgU,eAC7B46B,GAAW,EACXziC,EAAKgZ,qBAAsB,GAE3BupB,EAAc1uC,EAAOgU,eAEnBxT,EAAOuQ,MAAQvQ,EAAO0O,iBAAgB6/B,GAAe,QACpD,GAAIvuC,EAAOkc,SAASwZ,OAAQ,CACjC,IAAIlgB,EACJ,IAAK,IAAIi5B,EAAI,EAAGA,EAAIhhC,EAASlY,OAAQk5C,GAAK,EACxC,GAAIhhC,EAASghC,IAAMP,EAAa,CAC9B14B,EAAYi5B,EACZ,KACF,CAGAP,EADEvtC,KAAKuE,IAAIuI,EAAS+H,GAAa04B,GAAevtC,KAAKuE,IAAIuI,EAAS+H,EAAY,GAAK04B,IAA0C,SAA1B1uC,EAAO8iB,eAC5F7U,EAAS+H,GAET/H,EAAS+H,EAAY,GAErC04B,GAAeA,CACjB,CAOA,GANIK,GACFvjC,EAAK,iBAAiB,KACpBxL,EAAO6b,SAAS,IAII,IAApB7b,EAAO+sB,UAMT,GAJEwV,EADE/0B,EACiBrM,KAAKuE,MAAMgpC,EAAc1uC,EAAOI,WAAaJ,EAAO+sB,UAEpD5rB,KAAKuE,KAAKgpC,EAAc1uC,EAAOI,WAAaJ,EAAO+sB,UAEpEvsB,EAAOkc,SAASwZ,OAAQ,CAQ1B,MAAMgZ,EAAe/tC,KAAKuE,KAAK8H,GAAOkhC,EAAcA,GAAe1uC,EAAOI,WACpE+uC,EAAmBnvC,EAAOmO,gBAAgBnO,EAAOiT,aAErDsvB,EADE2M,EAAeC,EACE3uC,EAAOC,MACjByuC,EAAe,EAAIC,EACM,IAAf3uC,EAAOC,MAEQ,IAAfD,EAAOC,KAE9B,OACK,GAAID,EAAOkc,SAASwZ,OAEzB,YADAl2B,EAAOgd,iBAGLxc,EAAOkc,SAASsyB,gBAAkBJ,GACpC5uC,EAAOyU,eAAek6B,GACtB3uC,EAAO6S,cAAc0vB,GACrBviC,EAAOkZ,aAAaw1B,GACpB1uC,EAAOwa,iBAAgB,EAAMxa,EAAO8iB,gBACpC9iB,EAAO6Z,WAAY,EACnB5U,EAAqBvE,GAAW,KACzBV,IAAUA,EAAO2I,WAAcwD,EAAKgZ,sBACzCjsB,EAAK,kBACL8G,EAAO6S,cAAcrS,EAAOC,OAC5BnE,YAAW,KACT0D,EAAOkZ,aAAay1B,GACpB1pC,EAAqBvE,GAAW,KACzBV,IAAUA,EAAO2I,WACtB3I,EAAOya,eAAe,GACtB,GACD,GAAE,KAEEza,EAAO+sB,UAChB7zB,EAAK,8BACL8G,EAAOyU,eAAei6B,GACtB1uC,EAAO6S,cAAc0vB,GACrBviC,EAAOkZ,aAAaw1B,GACpB1uC,EAAOwa,iBAAgB,EAAMxa,EAAO8iB,gBAC/B9iB,EAAO6Z,YACV7Z,EAAO6Z,WAAY,EACnB5U,EAAqBvE,GAAW,KACzBV,IAAUA,EAAO2I,WACtB3I,EAAOya,eAAe,MAI1Bza,EAAOyU,eAAei6B,GAExB1uC,EAAO2X,oBACP3X,EAAO4V,qBACT,KAAO,IAAIpV,EAAOkc,SAASwZ,OAEzB,YADAl2B,EAAOgd,iBAEExc,EAAOkc,UAChBxjB,EAAK,6BACP,GACKsH,EAAOkc,SAASwxB,UAAYnoB,GAAYvlB,EAAOgmB,gBAClDttB,EAAK,0BACL8G,EAAOyU,iBACPzU,EAAO2X,oBACP3X,EAAO4V,sBArJT,CAuJF,CAzNA/L,EAAa,CACX6S,SAAU,CACR9O,SAAS,EACTsgC,UAAU,EACVM,cAAe,EACfQ,gBAAgB,EAChBF,oBAAqB,EACrBP,sBAAuB,EACvBrY,QAAQ,EACRoY,gBAAiB,OAiNrBh6C,OAAO0Y,OAAOhN,EAAQ,CACpB0c,SAAU,CACRoE,eACAwC,cACAqC,eAGN,CC1OA,SAASypB,GAAKrvC,GACZ,IAWIsvC,EACAC,EACAC,EACArmB,GAdA,OACFlpB,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACXwF,KAAM,CACJC,KAAM,EACN6O,KAAM,YAOV,MAAMqxB,EAAkB,KACtB,IAAI9gC,EAAe1O,EAAOQ,OAAOkO,aAMjC,MAL4B,kBAAjBA,GAA6BA,EAAazV,QAAQ,MAAQ,EACnEyV,EAAehQ,WAAWgQ,EAAavQ,QAAQ,IAAK,KAAO,IAAM6B,EAAOoF,KACvC,kBAAjBsJ,IAChBA,EAAehQ,WAAWgQ,IAErBA,CAAY,EAEfc,EAAa1B,IACjB,MAAM,cACJ6B,GACE3P,EAAOQ,QACL,KACJ8O,EAAI,KACJ6O,GACEne,EAAOQ,OAAO6O,KACZrB,EAAehO,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAO2N,QAAQG,OAAO/X,OAAS+X,EAAO/X,OAC7Gw5C,EAAiBpuC,KAAKmP,MAAMtC,EAAesB,GAEzC+/B,EADEluC,KAAKmP,MAAMtC,EAAesB,KAAUtB,EAAesB,EAC5BtB,EAEA7M,KAAK8P,KAAKjD,EAAesB,GAAQA,EAEtC,SAAlBK,GAAqC,QAATwO,IAC9BkxB,EAAyBluC,KAAKC,IAAIiuC,EAAwB1/B,EAAgBL,IAE5EggC,EAAeD,EAAyB//B,CAAI,EAExCG,EAAc,KACdzP,EAAO8N,QACT9N,EAAO8N,OAAOtU,SAAQqW,IAChBA,EAAM4/B,qBACR5/B,EAAMrV,MAAMuM,OAAS,GACrB8I,EAAMrV,MAAMwF,EAAOoN,kBAAkB,eAAiB,GACxD,GAEJ,EAEI0C,EAAc,CAACha,EAAG+Z,EAAO/B,KAC7B,MAAM,eACJ0C,GACExQ,EAAOQ,OACLkO,EAAe8gC,KACf,KACJlgC,EAAI,KACJ6O,GACEne,EAAOQ,OAAO6O,KACZrB,EAAehO,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAO2N,QAAQG,OAAO/X,OAAS+X,EAAO/X,OAE7G,IAAI25C,EACAx5B,EACAy5B,EACJ,GAAa,QAATxxB,GAAkB3N,EAAiB,EAAG,CACxC,MAAMo/B,EAAazuC,KAAKmP,MAAMxa,GAAK0a,EAAiBlB,IAC9CugC,EAAoB/5C,EAAIwZ,EAAOkB,EAAiBo/B,EAChDE,EAAgC,IAAfF,EAAmBp/B,EAAiBrP,KAAKE,IAAIF,KAAK8P,MAAMjD,EAAe4hC,EAAatgC,EAAOkB,GAAkBlB,GAAOkB,GAC3Im/B,EAAMxuC,KAAKmP,MAAMu/B,EAAoBC,GACrC55B,EAAS25B,EAAoBF,EAAMG,EAAiBF,EAAap/B,EACjEk/B,EAAqBx5B,EAASy5B,EAAMN,EAAyB//B,EAC7DO,EAAMrV,MAAMu1C,MAAQL,CACtB,KAAoB,WAATvxB,GACTjI,EAAS/U,KAAKmP,MAAMxa,EAAIwZ,GACxBqgC,EAAM75C,EAAIogB,EAAS5G,GACf4G,EAASq5B,GAAkBr5B,IAAWq5B,GAAkBI,IAAQrgC,EAAO,KACzEqgC,GAAO,EACHA,GAAOrgC,IACTqgC,EAAM,EACNz5B,GAAU,MAIdy5B,EAAMxuC,KAAKmP,MAAMxa,EAAIw5C,GACrBp5B,EAASpgB,EAAI65C,EAAML,GAErBz/B,EAAM8/B,IAAMA,EACZ9/B,EAAMqG,OAASA,EACfrG,EAAMrV,MAAMuM,OAAS,iBAAiBuI,EAAO,GAAKZ,UAAqBY,KACvEO,EAAMrV,MAAMwF,EAAOoN,kBAAkB,eAAyB,IAARuiC,EAAYjhC,GAAgB,GAAGA,MAAmB,GACxGmB,EAAM4/B,oBAAqB,CAAI,EAE3B7+B,EAAoB,CAACrB,EAAWtB,KACpC,MAAM,eACJiB,EAAc,aACdgB,GACElQ,EAAOQ,OACLkO,EAAe8gC,KACf,KACJlgC,GACEtP,EAAOQ,OAAO6O,KAMlB,GALArP,EAAO6O,aAAeU,EAAYb,GAAgB2gC,EAClDrvC,EAAO6O,YAAc1N,KAAK8P,KAAKjR,EAAO6O,YAAcS,GAAQZ,EACvD1O,EAAOQ,OAAO2O,UACjBnP,EAAOU,UAAUlG,MAAMwF,EAAOoN,kBAAkB,UAAY,GAAGpN,EAAO6O,YAAcH,OAElFQ,EAAgB,CAClB,MAAM2B,EAAgB,GACtB,IAAK,IAAI/a,EAAI,EAAGA,EAAImY,EAASlY,OAAQD,GAAK,EAAG,CAC3C,IAAIgb,EAAiB7C,EAASnY,GAC1Boa,IAAcY,EAAiB3P,KAAKmP,MAAMQ,IAC1C7C,EAASnY,GAAKkK,EAAO6O,YAAcZ,EAAS,IAAI4C,EAAcxY,KAAKyY,EACzE,CACA7C,EAASjV,OAAO,EAAGiV,EAASlY,QAC5BkY,EAAS5V,QAAQwY,EACnB,GAEIm/B,EAAS,KACb9mB,EAAclpB,EAAOQ,OAAO6O,MAAQrP,EAAOQ,OAAO6O,KAAKC,KAAO,CAAC,EAE3D2gC,EAAW,KACf,MAAM,OACJzvC,EAAM,GACNjD,GACEyC,EACEmpB,EAAa3oB,EAAO6O,MAAQ7O,EAAO6O,KAAKC,KAAO,EACjD4Z,IAAgBC,GAClB5rB,EAAG8F,UAAUqP,OAAO,GAAGlS,EAAO+R,6BAA8B,GAAG/R,EAAO+R,qCACtEg9B,EAAiB,EACjBvvC,EAAOupB,yBACGL,GAAeC,IACzB5rB,EAAG8F,UAAUC,IAAI,GAAG9C,EAAO+R,8BACF,WAArB/R,EAAO6O,KAAK8O,MACd5gB,EAAG8F,UAAUC,IAAI,GAAG9C,EAAO+R,qCAE7BvS,EAAOupB,wBAETL,EAAcC,CAAU,EAE1BzwB,EAAG,OAAQs3C,GACXt3C,EAAG,SAAUu3C,GACbjwC,EAAOqP,KAAO,CACZG,aACAC,cACAK,cACAc,oBAEJ,CCxJA,SAASmgB,GAAYjjB,GACnB,MAAM9N,EAAS/D,MACT,OACJuE,EAAM,SACN6M,GACErN,EACAQ,EAAOuQ,MACT/Q,EAAOuf,cAET,MAAM2wB,EAAgBruC,IACpB,GAAuB,kBAAZA,EAAsB,CAC/B,MAAMkuB,EAAU/7B,SAASqG,cAAc,OACvC01B,EAAQC,UAAYnuB,EACpBwL,EAASwQ,OAAOkS,EAAQz1B,SAAS,IACjCy1B,EAAQC,UAAY,EACtB,MACE3iB,EAASwQ,OAAOhc,EAClB,EAEF,GAAsB,kBAAXiM,GAAuB,WAAYA,EAC5C,IAAK,IAAIhY,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAClCgY,EAAOhY,IAAIo6C,EAAcpiC,EAAOhY,SAGtCo6C,EAAcpiC,GAEhB9N,EAAOge,eACHxd,EAAOuQ,MACT/Q,EAAOud,aAEJ/c,EAAOgI,WAAYxI,EAAOyK,WAC7BzK,EAAO8Y,QAEX,CAEA,SAASkY,GAAaljB,GACpB,MAAM9N,EAAS/D,MACT,OACJuE,EAAM,YACNyS,EAAW,SACX5F,GACErN,EACAQ,EAAOuQ,MACT/Q,EAAOuf,cAET,IAAI3H,EAAiB3E,EAAc,EACnC,MAAMk9B,EAAiBtuC,IACrB,GAAuB,kBAAZA,EAAsB,CAC/B,MAAMkuB,EAAU/7B,SAASqG,cAAc,OACvC01B,EAAQC,UAAYnuB,EACpBwL,EAASyR,QAAQiR,EAAQz1B,SAAS,IAClCy1B,EAAQC,UAAY,EACtB,MACE3iB,EAASyR,QAAQjd,EACnB,EAEF,GAAsB,kBAAXiM,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAIhY,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAClCgY,EAAOhY,IAAIq6C,EAAeriC,EAAOhY,IAEvC8hB,EAAiB3E,EAAcnF,EAAO/X,MACxC,MACEo6C,EAAeriC,GAEjB9N,EAAOge,eACHxd,EAAOuQ,MACT/Q,EAAOud,aAEJ/c,EAAOgI,WAAYxI,EAAOyK,WAC7BzK,EAAO8Y,SAET9Y,EAAO2a,QAAQ/C,EAAgB,GAAG,EACpC,CAEA,SAASw4B,GAASnkC,EAAO6B,GACvB,MAAM9N,EAAS/D,MACT,OACJuE,EAAM,YACNyS,EAAW,SACX5F,GACErN,EACJ,IAAIqwC,EAAoBp9B,EACpBzS,EAAOuQ,OACTs/B,GAAqBrwC,EAAOqd,aAC5Brd,EAAOuf,cACPvf,EAAOge,gBAET,MAAMsyB,EAAatwC,EAAO8N,OAAO/X,OACjC,GAAIkW,GAAS,EAEX,YADAjM,EAAOgxB,aAAaljB,GAGtB,GAAI7B,GAASqkC,EAEX,YADAtwC,EAAO+wB,YAAYjjB,GAGrB,IAAI8J,EAAiBy4B,EAAoBpkC,EAAQokC,EAAoB,EAAIA,EACzE,MAAME,EAAe,GACrB,IAAK,IAAIz6C,EAAIw6C,EAAa,EAAGx6C,GAAKmW,EAAOnW,GAAK,EAAG,CAC/C,MAAM06C,EAAexwC,EAAO8N,OAAOhY,GACnC06C,EAAa99B,SACb69B,EAAahkC,QAAQikC,EACvB,CACA,GAAsB,kBAAX1iC,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAIhY,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAClCgY,EAAOhY,IAAIuX,EAASwQ,OAAO/P,EAAOhY,IAExC8hB,EAAiBy4B,EAAoBpkC,EAAQokC,EAAoBviC,EAAO/X,OAASs6C,CACnF,MACEhjC,EAASwQ,OAAO/P,GAElB,IAAK,IAAIhY,EAAI,EAAGA,EAAIy6C,EAAax6C,OAAQD,GAAK,EAC5CuX,EAASwQ,OAAO0yB,EAAaz6C,IAE/BkK,EAAOge,eACHxd,EAAOuQ,MACT/Q,EAAOud,aAEJ/c,EAAOgI,WAAYxI,EAAOyK,WAC7BzK,EAAO8Y,SAELtY,EAAOuQ,KACT/Q,EAAO2a,QAAQ/C,EAAiB5X,EAAOqd,aAAc,GAAG,GAExDrd,EAAO2a,QAAQ/C,EAAgB,GAAG,EAEtC,CAEA,SAAS0Z,GAAYC,GACnB,MAAMvxB,EAAS/D,MACT,OACJuE,EAAM,YACNyS,GACEjT,EACJ,IAAIqwC,EAAoBp9B,EACpBzS,EAAOuQ,OACTs/B,GAAqBrwC,EAAOqd,aAC5Brd,EAAOuf,eAET,IACIkxB,EADA74B,EAAiBy4B,EAErB,GAA6B,kBAAlB9e,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAIz7B,EAAI,EAAGA,EAAIy7B,EAAcx7B,OAAQD,GAAK,EAC7C26C,EAAgBlf,EAAcz7B,GAC1BkK,EAAO8N,OAAO2iC,IAAgBzwC,EAAO8N,OAAO2iC,GAAe/9B,SAC3D+9B,EAAgB74B,IAAgBA,GAAkB,GAExDA,EAAiBzW,KAAKC,IAAIwW,EAAgB,EAC5C,MACE64B,EAAgBlf,EACZvxB,EAAO8N,OAAO2iC,IAAgBzwC,EAAO8N,OAAO2iC,GAAe/9B,SAC3D+9B,EAAgB74B,IAAgBA,GAAkB,GACtDA,EAAiBzW,KAAKC,IAAIwW,EAAgB,GAE5C5X,EAAOge,eACHxd,EAAOuQ,MACT/Q,EAAOud,aAEJ/c,EAAOgI,WAAYxI,EAAOyK,WAC7BzK,EAAO8Y,SAELtY,EAAOuQ,KACT/Q,EAAO2a,QAAQ/C,EAAiB5X,EAAOqd,aAAc,GAAG,GAExDrd,EAAO2a,QAAQ/C,EAAgB,GAAG,EAEtC,CAEA,SAAS4Z,KACP,MAAMxxB,EAAS/D,KACTs1B,EAAgB,GACtB,IAAK,IAAIz7B,EAAI,EAAGA,EAAIkK,EAAO8N,OAAO/X,OAAQD,GAAK,EAC7Cy7B,EAAcl5B,KAAKvC,GAErBkK,EAAOsxB,YAAYC,EACrB,CAEA,SAASmf,GAAa3wC,GACpB,IAAI,OACFC,GACED,EACJzL,OAAO0Y,OAAOhN,EAAQ,CACpB+wB,YAAaA,GAAYr5B,KAAKsI,GAC9BgxB,aAAcA,GAAat5B,KAAKsI,GAChCowC,SAAUA,GAAS14C,KAAKsI,GACxBsxB,YAAaA,GAAY55B,KAAKsI,GAC9BwxB,gBAAiBA,GAAgB95B,KAAKsI,IAE1C,CC5LA,SAAS2wC,GAAWnwC,GAClB,MAAM,OACJkQ,EAAM,OACN1Q,EAAM,GACNtH,EAAE,aACFwgB,EAAY,cACZrG,EAAa,gBACb+9B,EAAe,YACfC,EAAW,gBACXC,EAAe,gBACfC,GACEvwC,EA+BJ,IAAIwwC,EA9BJt4C,EAAG,cAAc,KACf,GAAIsH,EAAOQ,OAAOkQ,SAAWA,EAAQ,OACrC1Q,EAAO+qB,WAAW1yB,KAAK,GAAG2H,EAAOQ,OAAO+R,yBAAyB7B,KAC7DmgC,GAAeA,KACjB7wC,EAAO+qB,WAAW1yB,KAAK,GAAG2H,EAAOQ,OAAO+R,4BAE1C,MAAM0+B,EAAwBL,EAAkBA,IAAoB,CAAC,EACrEt8C,OAAO0Y,OAAOhN,EAAOQ,OAAQywC,GAC7B38C,OAAO0Y,OAAOhN,EAAOipB,eAAgBgoB,EAAsB,IAE7Dv4C,EAAG,gBAAgB,KACbsH,EAAOQ,OAAOkQ,SAAWA,GAC7BwI,GAAc,IAEhBxgB,EAAG,iBAAiB,CAAC++B,EAAIl3B,KACnBP,EAAOQ,OAAOkQ,SAAWA,GAC7BmC,EAActS,EAAS,IAEzB7H,EAAG,iBAAiB,KAClB,GAAIsH,EAAOQ,OAAOkQ,SAAWA,GACzBogC,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBG,aAAc,OAEzDlxC,EAAO8N,OAAOtU,SAAQqI,IACpBA,EAAQ5H,iBAAiB,gHAAgHT,SAAQ23C,GAAYA,EAASz+B,UAAS,IAGjLo+B,GACF,KAGFp4C,EAAG,iBAAiB,KACdsH,EAAOQ,OAAOkQ,SAAWA,IACxB1Q,EAAO8N,OAAO/X,SACjBi7C,GAAyB,GAE3Bv0C,uBAAsB,KAChBu0C,GAA0BhxC,EAAO8N,QAAU9N,EAAO8N,OAAO/X,SAC3DmjB,IACA83B,GAAyB,EAC3B,IACA,GAEN,CCrDA,SAASI,GAAaC,EAAcxvC,GAClC,MAAMyvC,EAAc1vC,EAAoBC,GAKxC,OAJIyvC,IAAgBzvC,IAClByvC,EAAY92C,MAAM+2C,mBAAqB,SACvCD,EAAY92C,MAAM,+BAAiC,UAE9C82C,CACT,CCPA,SAASE,GAA2BzxC,GAClC,IAAI,OACFC,EAAM,SACNO,EAAQ,kBACRkxC,EAAiB,UACjBC,GACE3xC,EACJ,MAAM,YACJkT,GACEjT,EACE2xC,EAAWp0C,IACf,IAAKA,EAAGyH,cAAe,CAErB,MAAM6K,EAAQ7P,EAAO8N,OAAOmI,MAAKpU,GAAWA,EAAQC,YAAcD,EAAQC,aAAevE,EAAGixB,aAC5F,OAAO3e,CACT,CACA,OAAOtS,EAAGyH,aAAa,EAEzB,GAAIhF,EAAOQ,OAAOwY,kBAAiC,IAAbzY,EAAgB,CACpD,IACIqxC,EADAC,GAAiB,EAGnBD,EADEF,EACoBD,EAEAA,EAAkBv5C,QAAOo5C,IAC7C,MAAM/zC,EAAK+zC,EAAYjuC,UAAUR,SAAS,0BAA4B8uC,EAASL,GAAeA,EAC9F,OAAOtxC,EAAOsd,cAAc/f,KAAQ0V,CAAW,IAGnD2+B,EAAoBp4C,SAAQ+D,IAC1B0H,EAAqB1H,GAAI,KACvB,GAAIs0C,EAAgB,OACpB,IAAK7xC,GAAUA,EAAO2I,UAAW,OACjCkpC,GAAiB,EACjB7xC,EAAO6Z,WAAY,EACnB,MAAMiL,EAAM,IAAIjuB,OAAOmF,YAAY,gBAAiB,CAClD+oB,SAAS,EACTZ,YAAY,IAEdnkB,EAAOU,UAAUwkB,cAAcJ,EAAI,GACnC,GAEN,CACF,CCxCA,SAASgtB,GAAW/xC,GAClB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACXkoC,WAAY,CACVC,WAAW,KAGf,MAAM94B,EAAe,KACnB,MAAM,OACJpL,GACE9N,EACEQ,EAASR,EAAOQ,OAAOuxC,WAC7B,IAAK,IAAIj8C,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAAG,CACzC,MAAM+L,EAAU7B,EAAO8N,OAAOhY,GACxBg6B,EAASjuB,EAAQyR,kBACvB,IAAI2+B,GAAMniB,EACL9vB,EAAOQ,OAAOwY,mBAAkBi5B,GAAMjyC,EAAOI,WAClD,IAAI8xC,EAAK,EACJlyC,EAAO4M,iBACVslC,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAenyC,EAAOQ,OAAOuxC,WAAWC,UAAY7wC,KAAKC,IAAI,EAAID,KAAKuE,IAAI7D,EAAQX,UAAW,GAAK,EAAIC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAW,GAAI,GAC/IsgB,EAAW4vB,GAAa5wC,EAAQqB,GACtC2f,EAAShnB,MAAM6hC,QAAU8V,EACzB3wB,EAAShnB,MAAMwD,UAAY,eAAei0C,QAASC,WACrD,GAEIr/B,EAAgBtS,IACpB,MAAMkxC,EAAoBzxC,EAAO8N,OAAO1U,KAAIyI,GAAWD,EAAoBC,KAC3E4vC,EAAkBj4C,SAAQ+D,IACxBA,EAAG/C,MAAM2f,mBAAqB,GAAG5Z,KAAY,IAE/CixC,GAA2B,CACzBxxC,SACAO,WACAkxC,oBACAC,WAAW,GACX,EAEJf,GAAW,CACTjgC,OAAQ,OACR1Q,SACAtH,KACAwgB,eACArG,gBACA+9B,gBAAiB,KAAM,CACrBjhC,cAAe,EACfa,eAAgB,EAChB4B,qBAAqB,EACrB1D,aAAc,EACdsK,kBAAmBhZ,EAAOQ,OAAO2O,WAGvC,CC5DA,SAASijC,GAAWryC,GAClB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACXwoC,WAAY,CACVnB,cAAc,EACdoB,QAAQ,EACRC,aAAc,GACdC,YAAa,OAGjB,MAAMC,EAAqB,CAAC5wC,EAASX,EAAU0L,KAC7C,IAAI8lC,EAAe9lC,EAAe/K,EAAQ7H,cAAc,6BAA+B6H,EAAQ7H,cAAc,4BACzG24C,EAAc/lC,EAAe/K,EAAQ7H,cAAc,8BAAgC6H,EAAQ7H,cAAc,+BACxG04C,IACHA,EAAer4C,EAAc,OAAO,iDAAgDuS,EAAe,OAAS,QAAQ3P,MAAM,MAC1H4E,EAAQgc,OAAO60B,IAEZC,IACHA,EAAct4C,EAAc,OAAO,iDAAgDuS,EAAe,QAAU,WAAW3P,MAAM,MAC7H4E,EAAQgc,OAAO80B,IAEbD,IAAcA,EAAal4C,MAAM6hC,QAAUl7B,KAAKC,KAAKF,EAAU,IAC/DyxC,IAAaA,EAAYn4C,MAAM6hC,QAAUl7B,KAAKC,IAAIF,EAAU,GAAE,EAE9D4vC,EAAkB,KAEtB,MAAMlkC,EAAe5M,EAAO4M,eAC5B5M,EAAO8N,OAAOtU,SAAQqI,IACpB,MAAMX,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1DuxC,EAAmB5wC,EAASX,EAAU0L,EAAa,GACnD,EAEEsM,EAAe,KACnB,MAAM,GACJ3b,EAAE,UACFmD,EAAS,OACToN,EACAjH,MAAOgsB,EACP9rB,OAAQ+rB,EACRvlB,aAAcC,EACdpI,KAAMkI,EAAU,QAChB3H,GACE3F,EACE4yC,EAAIptC,EAAaxF,GACjBQ,EAASR,EAAOQ,OAAO6xC,WACvBzlC,EAAe5M,EAAO4M,eACtBc,EAAY1N,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAC1D,IACIilC,EADAC,EAAgB,EAEhBtyC,EAAO8xC,SACL1lC,GACFimC,EAAe7yC,EAAOU,UAAU1G,cAAc,uBACzC64C,IACHA,EAAex4C,EAAc,MAAO,sBACpC2F,EAAOU,UAAUmd,OAAOg1B,IAE1BA,EAAar4C,MAAMuM,OAAS,GAAG8rB,QAE/BggB,EAAet1C,EAAGvD,cAAc,uBAC3B64C,IACHA,EAAex4C,EAAc,MAAO,sBACpCkD,EAAGsgB,OAAOg1B,MAIhB,IAAK,IAAI/8C,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAAG,CACzC,MAAM+L,EAAUiM,EAAOhY,GACvB,IAAIwb,EAAaxb,EACb4X,IACF4D,EAAaxE,SAASjL,EAAQwW,aAAa,2BAA4B,KAEzE,IAAI06B,EAA0B,GAAbzhC,EACb21B,EAAQ9lC,KAAKmP,MAAMyiC,EAAa,KAChCvlC,IACFulC,GAAcA,EACd9L,EAAQ9lC,KAAKmP,OAAOyiC,EAAa,MAEnC,MAAM7xC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1D,IAAI+wC,EAAK,EACLC,EAAK,EACLc,EAAK,EACL1hC,EAAa,IAAM,GACrB2gC,EAAc,GAARhL,EAAY35B,EAClB0lC,EAAK,IACK1hC,EAAa,GAAK,IAAM,GAClC2gC,EAAK,EACLe,EAAc,GAAR/L,EAAY35B,IACRgE,EAAa,GAAK,IAAM,GAClC2gC,EAAK3kC,EAAqB,EAAR25B,EAAY35B,EAC9B0lC,EAAK1lC,IACKgE,EAAa,GAAK,IAAM,IAClC2gC,GAAM3kC,EACN0lC,EAAK,EAAI1lC,EAA0B,EAAbA,EAAiB25B,GAErCz5B,IACFykC,GAAMA,GAEHrlC,IACHslC,EAAKD,EACLA,EAAK,GAEP,MAAMj0C,EAAY,WAAW40C,EAAEhmC,EAAe,GAAKmmC,kBAA2BH,EAAEhmC,EAAemmC,EAAa,sBAAsBd,QAASC,QAASc,OAChJ9xC,GAAY,GAAKA,GAAY,IAC/B4xC,EAA6B,GAAbxhC,EAA6B,GAAXpQ,EAC9BsM,IAAKslC,EAA8B,IAAbxhC,EAA6B,GAAXpQ,IAE9CW,EAAQrH,MAAMwD,UAAYA,EACtBwC,EAAO0wC,cACTuB,EAAmB5wC,EAASX,EAAU0L,EAE1C,CAGA,GAFAlM,EAAUlG,MAAMy4C,gBAAkB,YAAY3lC,EAAa,MAC3D5M,EAAUlG,MAAM,4BAA8B,YAAY8S,EAAa,MACnE9M,EAAO8xC,OACT,GAAI1lC,EACFimC,EAAar4C,MAAMwD,UAAY,oBAAoB60B,EAAc,EAAIryB,EAAO+xC,oBAAoB1f,EAAc,8CAA8CryB,EAAOgyC,mBAC9J,CACL,MAAMU,EAAc/xC,KAAKuE,IAAIotC,GAA4D,GAA3C3xC,KAAKmP,MAAMnP,KAAKuE,IAAIotC,GAAiB,IAC7Ep+B,EAAa,KAAOvT,KAAKgyC,IAAkB,EAAdD,EAAkB/xC,KAAKK,GAAK,KAAO,EAAIL,KAAKI,IAAkB,EAAd2xC,EAAkB/xC,KAAKK,GAAK,KAAO,GAChH4xC,EAAS5yC,EAAOgyC,YAChBa,EAAS7yC,EAAOgyC,YAAc99B,EAC9Bob,EAAStvB,EAAO+xC,aACtBM,EAAar4C,MAAMwD,UAAY,WAAWo1C,SAAcC,uBAA4BvgB,EAAe,EAAIhD,SAAcgD,EAAe,EAAIugB,yBAC1I,CAEF,MAAMC,GAAW3tC,EAAQiC,UAAYjC,EAAQwC,YAAcxC,EAAQgC,oBAAsB2F,EAAa,EAAI,EAC1G5M,EAAUlG,MAAMwD,UAAY,qBAAqBs1C,gBAAsBV,EAAE5yC,EAAO4M,eAAiB,EAAIkmC,kBAA8BF,EAAE5yC,EAAO4M,gBAAkBkmC,EAAgB,SAC9KpyC,EAAUlG,MAAMqF,YAAY,4BAA6B,GAAGyzC,MAAY,EAEpEzgC,EAAgBtS,IACpB,MAAM,GACJhD,EAAE,OACFuQ,GACE9N,EAOJ,GANA8N,EAAOtU,SAAQqI,IACbA,EAAQrH,MAAM2f,mBAAqB,GAAG5Z,MACtCsB,EAAQ5H,iBAAiB,gHAAgHT,SAAQs9B,IAC/IA,EAAMt8B,MAAM2f,mBAAqB,GAAG5Z,KAAY,GAChD,IAEAP,EAAOQ,OAAO6xC,WAAWC,SAAWtyC,EAAO4M,eAAgB,CAC7D,MAAMukC,EAAW5zC,EAAGvD,cAAc,uBAC9Bm3C,IAAUA,EAAS32C,MAAM2f,mBAAqB,GAAG5Z,MACvD,GAEFowC,GAAW,CACTjgC,OAAQ,OACR1Q,SACAtH,KACAwgB,eACArG,gBACAi+B,kBACAC,gBAAiB,IAAM/wC,EAAOQ,OAAO6xC,WACrCxB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBjhC,cAAe,EACfa,eAAgB,EAChB4B,qBAAqB,EACrBoT,gBAAiB,EACjB9W,aAAc,EACdQ,gBAAgB,EAChB8J,kBAAkB,KAGxB,CCzKA,SAASu6B,GAAalZ,EAAQx4B,EAAS3B,GACrC,MAAMszC,EAAc,sBAAsBtzC,EAAO,IAAIA,IAAS,KAAKm6B,EAAS,wBAAwBA,IAAW,KACzGoZ,EAAkB7xC,EAAoBC,GAC5C,IAAIsvC,EAAWsC,EAAgBz5C,cAAc,IAAIw5C,EAAYv2C,MAAM,KAAKmB,KAAK,QAK7E,OAJK+yC,IACHA,EAAW92C,EAAc,MAAOm5C,EAAYv2C,MAAM,MAClDw2C,EAAgB51B,OAAOszB,IAElBA,CACT,CCLA,SAASuC,GAAW3zC,GAClB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACX8pC,WAAY,CACVzC,cAAc,EACd0C,eAAe,KAGnB,MAAMnB,EAAqB,CAAC5wC,EAASX,KACnC,IAAIwxC,EAAe1yC,EAAO4M,eAAiB/K,EAAQ7H,cAAc,6BAA+B6H,EAAQ7H,cAAc,4BAClH24C,EAAc3yC,EAAO4M,eAAiB/K,EAAQ7H,cAAc,8BAAgC6H,EAAQ7H,cAAc,+BACjH04C,IACHA,EAAea,GAAa,OAAQ1xC,EAAS7B,EAAO4M,eAAiB,OAAS,QAE3E+lC,IACHA,EAAcY,GAAa,OAAQ1xC,EAAS7B,EAAO4M,eAAiB,QAAU,WAE5E8lC,IAAcA,EAAal4C,MAAM6hC,QAAUl7B,KAAKC,KAAKF,EAAU,IAC/DyxC,IAAaA,EAAYn4C,MAAM6hC,QAAUl7B,KAAKC,IAAIF,EAAU,GAAE,EAE9D4vC,EAAkB,KAEtB9wC,EAAOQ,OAAOmzC,WACd3zC,EAAO8N,OAAOtU,SAAQqI,IACpB,IAAIX,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAOmzC,WAAWC,gBAC3B1yC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtDuxC,EAAmB5wC,EAASX,EAAS,GACrC,EAEEgY,EAAe,KACnB,MAAM,OACJpL,EACAP,aAAcC,GACZxN,EACEQ,EAASR,EAAOQ,OAAOmzC,WACvBE,EAAYruC,EAAaxF,GAC/B,IAAK,IAAIlK,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAAG,CACzC,MAAM+L,EAAUiM,EAAOhY,GACvB,IAAIoL,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAOmzC,WAAWC,gBAC3B1yC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtD,MAAM4uB,EAASjuB,EAAQyR,kBACjBwqB,GAAU,IAAM58B,EACtB,IAAI4yC,EAAUhW,EACViW,EAAU,EACV9B,EAAKjyC,EAAOQ,OAAO2O,SAAW2gB,EAAS9vB,EAAOI,WAAa0vB,EAC3DoiB,EAAK,EACJlyC,EAAO4M,eAKDY,IACTsmC,GAAWA,IALX5B,EAAKD,EACLA,EAAK,EACL8B,GAAWD,EACXA,EAAU,GAIZjyC,EAAQrH,MAAMw5C,QAAU7yC,KAAKuE,IAAIvE,KAAK8lC,MAAM/lC,IAAa4M,EAAO/X,OAC5DyK,EAAO0wC,cACTuB,EAAmB5wC,EAASX,GAE9B,MAAMlD,EAAY,eAAei0C,QAASC,qBAAsB2B,EAAUE,kBAAwBF,EAAUC,SACtGtyB,EAAW4vB,GAAa5wC,EAAQqB,GACtC2f,EAAShnB,MAAMwD,UAAYA,CAC7B,GAEI6U,EAAgBtS,IACpB,MAAMkxC,EAAoBzxC,EAAO8N,OAAO1U,KAAIyI,GAAWD,EAAoBC,KAC3E4vC,EAAkBj4C,SAAQ+D,IACxBA,EAAG/C,MAAM2f,mBAAqB,GAAG5Z,MACjChD,EAAGtD,iBAAiB,gHAAgHT,SAAQ23C,IAC1IA,EAAS32C,MAAM2f,mBAAqB,GAAG5Z,KAAY,GACnD,IAEJixC,GAA2B,CACzBxxC,SACAO,WACAkxC,qBACA,EAEJd,GAAW,CACTjgC,OAAQ,OACR1Q,SACAtH,KACAwgB,eACArG,gBACAi+B,kBACAC,gBAAiB,IAAM/wC,EAAOQ,OAAOmzC,WACrC9C,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBjhC,cAAe,EACfa,eAAgB,EAChB4B,qBAAqB,EACrB1D,aAAc,EACdsK,kBAAmBhZ,EAAOQ,OAAO2O,WAGvC,CCvGA,SAAS8kC,GAAgBl0C,GACvB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACXqqC,gBAAiB,CACfpW,OAAQ,GACRqW,QAAS,EACTC,MAAO,IACPjZ,MAAO,EACPkZ,SAAU,EACVnD,cAAc,KAGlB,MAAMh4B,EAAe,KACnB,MACErS,MAAOgsB,EACP9rB,OAAQ+rB,EAAY,OACpBhlB,EAAM,gBACNK,GACEnO,EACEQ,EAASR,EAAOQ,OAAO0zC,gBACvBtnC,EAAe5M,EAAO4M,eACtB5O,EAAYgC,EAAOI,UACnBk0C,EAAS1nC,EAA4BimB,EAAc,EAA1B70B,EAA2C80B,EAAe,EAA3B90B,EACxD8/B,EAASlxB,EAAepM,EAAOs9B,QAAUt9B,EAAOs9B,OAChD19B,EAAYI,EAAO4zC,MACnBxB,EAAIptC,EAAaxF,GAEvB,IAAK,IAAIlK,EAAI,EAAGC,EAAS+X,EAAO/X,OAAQD,EAAIC,EAAQD,GAAK,EAAG,CAC1D,MAAM+L,EAAUiM,EAAOhY,GACjByZ,EAAYpB,EAAgBrY,GAC5Bge,EAAcjS,EAAQyR,kBACtBihC,GAAgBD,EAASxgC,EAAcvE,EAAY,GAAKA,EACxDilC,EAA8C,oBAApBh0C,EAAO6zC,SAA0B7zC,EAAO6zC,SAASE,GAAgBA,EAAe/zC,EAAO6zC,SACvH,IAAIP,EAAUlnC,EAAekxB,EAAS0W,EAAmB,EACrDT,EAAUnnC,EAAe,EAAIkxB,EAAS0W,EAEtCC,GAAcr0C,EAAYe,KAAKuE,IAAI8uC,GACnCL,EAAU3zC,EAAO2zC,QAEE,kBAAZA,IAAkD,IAA1BA,EAAQl7C,QAAQ,OACjDk7C,EAAUz1C,WAAW8B,EAAO2zC,SAAW,IAAM5kC,GAE/C,IAAI2zB,EAAat2B,EAAe,EAAIunC,EAAUK,EAC1CvR,EAAar2B,EAAeunC,EAAUK,EAAmB,EACzDrZ,EAAQ,GAAK,EAAI36B,EAAO26B,OAASh6B,KAAKuE,IAAI8uC,GAG1CrzC,KAAKuE,IAAIu9B,GAAc,OAAOA,EAAa,GAC3C9hC,KAAKuE,IAAIw9B,GAAc,OAAOA,EAAa,GAC3C/hC,KAAKuE,IAAI+uC,GAAc,OAAOA,EAAa,GAC3CtzC,KAAKuE,IAAIouC,GAAW,OAAOA,EAAU,GACrC3yC,KAAKuE,IAAIquC,GAAW,OAAOA,EAAU,GACrC5yC,KAAKuE,IAAIy1B,GAAS,OAAOA,EAAQ,GACrC,MAAMuZ,EAAiB,eAAezR,OAAgBC,OAAgBuR,iBAA0B7B,EAAEmB,kBAAwBnB,EAAEkB,gBAAsB3Y,KAC5I3Z,EAAW4vB,GAAa5wC,EAAQqB,GAGtC,GAFA2f,EAAShnB,MAAMwD,UAAY02C,EAC3B7yC,EAAQrH,MAAMw5C,OAAmD,EAAzC7yC,KAAKuE,IAAIvE,KAAK8lC,MAAMuN,IACxCh0C,EAAO0wC,aAAc,CAEvB,IAAIyD,EAAiB/nC,EAAe/K,EAAQ7H,cAAc,6BAA+B6H,EAAQ7H,cAAc,4BAC3G46C,EAAgBhoC,EAAe/K,EAAQ7H,cAAc,8BAAgC6H,EAAQ7H,cAAc,+BAC1G26C,IACHA,EAAiBpB,GAAa,YAAa1xC,EAAS+K,EAAe,OAAS,QAEzEgoC,IACHA,EAAgBrB,GAAa,YAAa1xC,EAAS+K,EAAe,QAAU,WAE1E+nC,IAAgBA,EAAen6C,MAAM6hC,QAAUmY,EAAmB,EAAIA,EAAmB,GACzFI,IAAeA,EAAcp6C,MAAM6hC,SAAWmY,EAAmB,GAAKA,EAAmB,EAC/F,CACF,GAEI3hC,EAAgBtS,IACpB,MAAMkxC,EAAoBzxC,EAAO8N,OAAO1U,KAAIyI,GAAWD,EAAoBC,KAC3E4vC,EAAkBj4C,SAAQ+D,IACxBA,EAAG/C,MAAM2f,mBAAqB,GAAG5Z,MACjChD,EAAGtD,iBAAiB,gHAAgHT,SAAQ23C,IAC1IA,EAAS32C,MAAM2f,mBAAqB,GAAG5Z,KAAY,GACnD,GACF,EAEJowC,GAAW,CACTjgC,OAAQ,YACR1Q,SACAtH,KACAwgB,eACArG,gBACAg+B,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBx+B,qBAAqB,KAG3B,CC/FA,SAASyiC,GAAe90C,GACtB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACXirC,eAAgB,CACdC,cAAe,EACfC,mBAAmB,EACnBC,mBAAoB,EACpBpE,aAAa,EACbxsC,KAAM,CACJjE,UAAW,CAAC,EAAG,EAAG,GAClB09B,OAAQ,CAAC,EAAG,EAAG,GACfzB,QAAS,EACTlB,MAAO,GAET1jC,KAAM,CACJ2I,UAAW,CAAC,EAAG,EAAG,GAClB09B,OAAQ,CAAC,EAAG,EAAG,GACfzB,QAAS,EACTlB,MAAO,MAIb,MAAM+Z,EAAoB5hD,GACH,kBAAVA,EAA2BA,EAC/B,GAAGA,MAEN4lB,EAAe,KACnB,MAAM,OACJpL,EAAM,UACNpN,EAAS,gBACTyN,GACEnO,EACEQ,EAASR,EAAOQ,OAAOs0C,gBAE3BG,mBAAoBvgC,GAClBlU,EACE20C,EAAmBn1C,EAAOQ,OAAO0O,eACjC2kC,EAAYruC,EAAaxF,GAC/B,GAAIm1C,EAAkB,CACpB,MAAMC,EAASjnC,EAAgB,GAAK,EAAInO,EAAOQ,OAAO6N,oBAAsB,EAC5E3N,EAAUlG,MAAMwD,UAAY,yBAAyBo3C,OACvD,CACA,IAAK,IAAIt/C,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAAG,CACzC,MAAM+L,EAAUiM,EAAOhY,GACjBie,EAAgBlS,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAWV,EAAOu0C,eAAgBv0C,EAAOu0C,eACpF,IAAIvgC,EAAmBtT,EAClBi0C,IACH3gC,EAAmBrT,KAAKE,IAAIF,KAAKC,IAAIS,EAAQ2S,kBAAmBhU,EAAOu0C,eAAgBv0C,EAAOu0C,gBAEhG,MAAMjlB,EAASjuB,EAAQyR,kBACjB3a,EAAI,CAACqH,EAAOQ,OAAO2O,SAAW2gB,EAAS9vB,EAAOI,WAAa0vB,EAAQ,EAAG,GACtE8iB,EAAI,CAAC,EAAG,EAAG,GACjB,IAAIyC,GAAS,EACRr1C,EAAO4M,iBACVjU,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK,GAET,IAAIwT,EAAO,CACT/L,UAAW,CAAC,EAAG,EAAG,GAClB09B,OAAQ,CAAC,EAAG,EAAG,GACf3C,MAAO,EACPkB,QAAS,GAEPn7B,EAAW,GACbiL,EAAO3L,EAAO/I,KACd49C,GAAS,GACAn0C,EAAW,IACpBiL,EAAO3L,EAAO6D,KACdgxC,GAAS,GAGX18C,EAAEa,SAAQ,CAAClG,EAAO2Y,KAChBtT,EAAEsT,GAAS,QAAQ3Y,UAAc4hD,EAAkB/oC,EAAK/L,UAAU6L,SAAa9K,KAAKuE,IAAIxE,EAAWwT,MAAe,IAGpHk+B,EAAEp5C,SAAQ,CAAClG,EAAO2Y,KAChB,IAAIsQ,EAAMpQ,EAAK2xB,OAAO7xB,GAAS9K,KAAKuE,IAAIxE,EAAWwT,GACnDk+B,EAAE3mC,GAASsQ,CAAG,IAEhB1a,EAAQrH,MAAMw5C,QAAU7yC,KAAKuE,IAAIvE,KAAK8lC,MAAMlzB,IAAkBjG,EAAO/X,OACrE,MAAMu/C,EAAkB38C,EAAEyF,KAAK,MACzBm3C,EAAe,WAAW1B,EAAUjB,EAAE,mBAAmBiB,EAAUjB,EAAE,mBAAmBiB,EAAUjB,EAAE,UACpG4C,EAAchhC,EAAmB,EAAI,SAAS,GAAK,EAAIrI,EAAKgvB,OAAS3mB,EAAmBE,KAAgB,SAAS,GAAK,EAAIvI,EAAKgvB,OAAS3mB,EAAmBE,KAC3J+gC,EAAgBjhC,EAAmB,EAAI,GAAK,EAAIrI,EAAKkwB,SAAW7nB,EAAmBE,EAAa,GAAK,EAAIvI,EAAKkwB,SAAW7nB,EAAmBE,EAC5I1W,EAAY,eAAes3C,MAAoBC,KAAgBC,IAGrE,GAAIH,GAAUlpC,EAAKmmC,SAAW+C,EAAQ,CACpC,IAAIlE,EAAWtvC,EAAQ7H,cAAc,wBAIrC,IAHKm3C,GAAYhlC,EAAKmmC,SACpBnB,EAAWoC,GAAa,WAAY1xC,IAElCsvC,EAAU,CACZ,MAAMuE,EAAgBl1C,EAAOw0C,kBAAoB9zC,GAAY,EAAIV,EAAOu0C,eAAiB7zC,EACzFiwC,EAAS32C,MAAM6hC,QAAUl7B,KAAKE,IAAIF,KAAKC,IAAID,KAAKuE,IAAIgwC,GAAgB,GAAI,EAC1E,CACF,CACA,MAAMl0B,EAAW4vB,GAAa5wC,EAAQqB,GACtC2f,EAAShnB,MAAMwD,UAAYA,EAC3BwjB,EAAShnB,MAAM6hC,QAAUoZ,EACrBtpC,EAAKjR,SACPsmB,EAAShnB,MAAMy4C,gBAAkB9mC,EAAKjR,OAE1C,GAEI2X,EAAgBtS,IACpB,MAAMkxC,EAAoBzxC,EAAO8N,OAAO1U,KAAIyI,GAAWD,EAAoBC,KAC3E4vC,EAAkBj4C,SAAQ+D,IACxBA,EAAG/C,MAAM2f,mBAAqB,GAAG5Z,MACjChD,EAAGtD,iBAAiB,wBAAwBT,SAAQ23C,IAClDA,EAAS32C,MAAM2f,mBAAqB,GAAG5Z,KAAY,GACnD,IAEJixC,GAA2B,CACzBxxC,SACAO,WACAkxC,oBACAC,WAAW,GACX,EAEJf,GAAW,CACTjgC,OAAQ,WACR1Q,SACAtH,KACAwgB,eACArG,gBACAg+B,YAAa,IAAM7wC,EAAOQ,OAAOs0C,eAAejE,YAChDD,gBAAiB,KAAM,CACrBx+B,qBAAqB,EACrB4G,kBAAmBhZ,EAAOQ,OAAO2O,WAGvC,CCzIA,SAASwmC,GAAY51C,GACnB,IAAI,OACFC,EAAM,aACN6J,EAAY,GACZnR,GACEqH,EACJ8J,EAAa,CACX+rC,YAAa,CACX1E,cAAc,EACdpT,QAAQ,EACR+X,eAAgB,EAChBC,eAAgB,KAGpB,MAAM58B,EAAe,KACnB,MAAM,OACJpL,EAAM,YACNmF,EACA1F,aAAcC,GACZxN,EACEQ,EAASR,EAAOQ,OAAOo1C,aACvB,eACJz2B,EAAc,UACdwC,GACE3hB,EAAOkf,gBACLjG,EAAmBzL,GAAOxN,EAAOI,UAAYJ,EAAOI,UAC1D,IAAK,IAAItK,EAAI,EAAGA,EAAIgY,EAAO/X,OAAQD,GAAK,EAAG,CACzC,MAAM+L,EAAUiM,EAAOhY,GACjBie,EAAgBlS,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAI2S,GAAgB,GAAI,GACvD,IAAI+b,EAASjuB,EAAQyR,kBACjBtT,EAAOQ,OAAO0O,iBAAmBlP,EAAOQ,OAAO2O,UACjDnP,EAAOU,UAAUlG,MAAMwD,UAAY,cAAcgC,EAAOgU,qBAEtDhU,EAAOQ,OAAO0O,gBAAkBlP,EAAOQ,OAAO2O,UAChD2gB,GAAUhiB,EAAO,GAAGwF,mBAEtB,IAAIyiC,EAAK/1C,EAAOQ,OAAO2O,SAAW2gB,EAAS9vB,EAAOI,WAAa0vB,EAC3DkmB,EAAK,EACT,MAAMC,GAAM,IAAM90C,KAAKuE,IAAIxE,GAC3B,IAAIi6B,EAAQ,EACR2C,GAAUt9B,EAAOq1C,eAAiB30C,EAClCg1C,EAAQ11C,EAAOs1C,eAAsC,IAArB30C,KAAKuE,IAAIxE,GAC7C,MAAMoQ,EAAatR,EAAO2N,SAAW3N,EAAOQ,OAAOmN,QAAQC,QAAU5N,EAAO2N,QAAQ0J,KAAOvhB,EAAIA,EACzFqgD,GAAiB7kC,IAAe2B,GAAe3B,IAAe2B,EAAc,IAAM/R,EAAW,GAAKA,EAAW,IAAMygB,GAAa3hB,EAAOQ,OAAO2O,UAAY8J,EAAmBkG,EAC7Ki3B,GAAiB9kC,IAAe2B,GAAe3B,IAAe2B,EAAc,IAAM/R,EAAW,GAAKA,GAAY,IAAMygB,GAAa3hB,EAAOQ,OAAO2O,UAAY8J,EAAmBkG,EACpL,GAAIg3B,GAAiBC,EAAe,CAClC,MAAMC,GAAe,EAAIl1C,KAAKuE,KAAKvE,KAAKuE,IAAIxE,GAAY,IAAO,MAAS,GACxE48B,IAAW,GAAK58B,EAAWm1C,EAC3Blb,IAAU,GAAMkb,EAChBH,GAAS,GAAKG,EACdL,GAAS,GAAKK,EAAcl1C,KAAKuE,IAAIxE,GAAhC,GACP,CAUA,GAPE60C,EAFE70C,EAAW,EAER,QAAQ60C,OAAQvoC,EAAM,IAAM,QAAQ0oC,EAAQ/0C,KAAKuE,IAAIxE,QACjDA,EAAW,EAEf,QAAQ60C,OAAQvoC,EAAM,IAAM,SAAS0oC,EAAQ/0C,KAAKuE,IAAIxE,QAEtD,GAAG60C,OAEL/1C,EAAO4M,eAAgB,CAC1B,MAAM0pC,EAAQN,EACdA,EAAKD,EACLA,EAAKO,CACP,CACA,MAAMd,EAAct0C,EAAW,EAAI,IAAG,GAAK,EAAIi6B,GAASj6B,GAAa,IAAG,GAAK,EAAIi6B,GAASj6B,GAGpFlD,EAAY,yBACF+3C,MAAOC,MAAOC,yBAClBz1C,EAAOs9B,OAAStwB,GAAOswB,EAASA,EAAS,wBAC3C0X,aAIV,GAAIh1C,EAAO0wC,aAAc,CAEvB,IAAIC,EAAWtvC,EAAQ7H,cAAc,wBAChCm3C,IACHA,EAAWoC,GAAa,QAAS1xC,IAE/BsvC,IAAUA,EAAS32C,MAAM6hC,QAAUl7B,KAAKE,IAAIF,KAAKC,KAAKD,KAAKuE,IAAIxE,GAAY,IAAO,GAAK,GAAI,GACjG,CACAW,EAAQrH,MAAMw5C,QAAU7yC,KAAKuE,IAAIvE,KAAK8lC,MAAMlzB,IAAkBjG,EAAO/X,OACrE,MAAMyrB,EAAW4vB,GAAa5wC,EAAQqB,GACtC2f,EAAShnB,MAAMwD,UAAYA,CAC7B,GAEI6U,EAAgBtS,IACpB,MAAMkxC,EAAoBzxC,EAAO8N,OAAO1U,KAAIyI,GAAWD,EAAoBC,KAC3E4vC,EAAkBj4C,SAAQ+D,IACxBA,EAAG/C,MAAM2f,mBAAqB,GAAG5Z,MACjChD,EAAGtD,iBAAiB,wBAAwBT,SAAQ23C,IAClDA,EAAS32C,MAAM2f,mBAAqB,GAAG5Z,KAAY,GACnD,IAEJixC,GAA2B,CACzBxxC,SACAO,WACAkxC,qBACA,EAEJd,GAAW,CACTjgC,OAAQ,QACR1Q,SACAtH,KACAwgB,eACArG,gBACAg+B,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBvrB,gBAAgB,EAChBjT,qBAAqB,EACrB8L,qBAAsB,EACtBhP,gBAAgB,EAChB8J,kBAAmBhZ,EAAOQ,OAAO2O,WAGvC,C7B4sHA7a,OAAO0D,KAAKo0B,IAAY5yB,SAAQ+8C,IAC9BjiD,OAAO0D,KAAKo0B,GAAWmqB,IAAiB/8C,SAAQg9C,IAC9ClqB,GAAO92B,UAAUghD,GAAepqB,GAAWmqB,GAAgBC,EAAY,GACvE,IAEJlqB,GAAO8C,IAAI,CAAC7mB,EAAQqB,I8BxyHpB,MAAM6iB,GAAU,CAAC6C,GAASoC,GAAU0B,GAAYsD,GAAYsB,GAAY0D,GAAW+B,GAAUa,GAAM0F,GAAYwB,GAAM2D,GAASiB,GAAgBQ,GAAUgC,GAAOlwB,GAAU0yB,GAAMsB,GAAcoB,GAAYM,GAAYsB,GAAYO,GAAiBY,GAAgBc,IAClQrpB,GAAO8C,IAAI3C,ICtCX,MAAMgqB,GAAa,CAAC,eAAgB,eAAgB,mBAAoB,UAAW,OAAQ,aAAc,iBAAkB,wBAAyB,oBAAqB,eAAgB,SAAU,UAAW,uBAAwB,iBAAkB,SAAU,oBAAqB,WAAY,SAAU,UAAW,iCAAkC,YAAa,MAAO,sBAAuB,sBAAuB,YAAa,cAAe,iBAAkB,mBAAoB,UAAW,cAAe,kBAAmB,gBAAiB,iBAAkB,0BAA2B,QAAS,kBAAmB,sBAAuB,sBAAuB,kBAAmB,wBAAyB,sBAAuB,qBAAsB,sBAAuB,4BAA6B,iBAAkB,eAAgB,aAAc,aAAc,gBAAiB,eAAgB,cAAe,kBAAmB,eAAgB,gBAAiB,iBAAkB,aAAc,2BAA4B,2BAA4B,gCAAiC,sBAAuB,oBAAqB,cAAe,mBAAoB,uBAAwB,cAAe,gBAAiB,2BAA4B,uBAAwB,QAAS,uBAAwB,qBAAsB,sBAAuB,UAAW,kBAAmB,kBAAmB,gBAAiB,aAAc,iBAAkB,oBAAqB,mBAAoB,yBAA0B,aAAc,mBAAoB,oBAAqB,yBAA0B,iBAAkB,iBAAkB,kBAAmB,eAAgB,qBAAsB,sBAAuB,qBAAsB,WAAY,iBAAkB,uBAEluD,OAAQ,YAAa,cAAe,kBAAmB,aAAc,aAAc,aAAc,iBAAkB,cAAe,iBAAkB,UAAW,WAAY,aAAc,cAAe,cAAe,WAAY,aAAc,UAAW,UAAW,OAAQ,WAE/Q,SAAS,GAASn/C,GAChB,MAAoB,kBAANA,GAAwB,OAANA,GAAcA,EAAEF,aAAkE,WAAnD9C,OAAOkB,UAAU5B,SAAS4D,KAAKF,GAAG6B,MAAM,GAAI,KAAoB7B,EAAEmI,UACnI,CACA,SAAS,GAAO7J,EAAQ0D,GACtB,MAAMC,EAAW,CAAC,YAAa,cAAe,aAC9CjF,OAAO0D,KAAKsB,GAAKpB,QAAO7B,GAAOkD,EAASN,QAAQ5C,GAAO,IAAGmD,SAAQnD,IACrC,qBAAhBT,EAAOS,GAAsBT,EAAOS,GAAOiD,EAAIjD,GAAc,GAASiD,EAAIjD,KAAS,GAAST,EAAOS,KAAS/B,OAAO0D,KAAKsB,EAAIjD,IAAMN,OAAS,EAChJuD,EAAIjD,GAAKoJ,WAAY7J,EAAOS,GAAOiD,EAAIjD,GAAU,GAAOT,EAAOS,GAAMiD,EAAIjD,IAE7ET,EAAOS,GAAOiD,EAAIjD,EACpB,GAEJ,CACA,SAASqgD,GAAgBl2C,GAIvB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOqmB,YAAkD,qBAA7BrmB,EAAOqmB,WAAWC,QAA8D,qBAA7BtmB,EAAOqmB,WAAWE,MAC1G,CACA,SAAS4vB,GAAgBn2C,GAIvB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOm3B,YAA8C,qBAAzBn3B,EAAOm3B,WAAWp6B,EACvD,CACA,SAASq5C,GAAep2C,GAItB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOw7B,WAA4C,qBAAxBx7B,EAAOw7B,UAAUz+B,EACrD,CAYA,SAASs5C,GAAWC,GAIlB,YAHiB,IAAbA,IACFA,EAAW,IAENA,EAAS34C,QAAQ,WAAW44C,GAAKA,EAAEtoB,cAActwB,QAAQ,IAAK,KACvE,CAUA,SAAS64C,GAAaj3C,GACpB,IAAI,OACFC,EAAM,OACN8N,EAAM,aACN+e,EAAY,cACZoqB,EAAa,OACbnwB,EAAM,OACNC,EAAM,YACNmwB,EAAW,aACXhO,GACEnpC,EACJ,MAAMo3C,EAAeF,EAAc/+C,QAAO7B,GAAe,aAARA,GAA8B,cAARA,GAA+B,iBAARA,KAE5FmK,OAAQ42C,EAAa,WACrBzf,EAAU,WACV9Q,EAAU,UACVmV,EAAS,QACTruB,EAAO,OACPk/B,GACE7sC,EACJ,IAAIq3C,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAX,EAAcn0C,SAAS,WAAa+pB,EAAaggB,QAAUhgB,EAAaggB,OAAO7sC,SAAW6sB,EAAaggB,OAAO7sC,OAAO2I,WAAayuC,EAAcvK,UAAYuK,EAAcvK,OAAO7sC,QAAUo3C,EAAcvK,OAAO7sC,OAAO2I,aACzN0uC,GAAiB,GAEfJ,EAAcn0C,SAAS,eAAiB+pB,EAAazN,YAAcyN,EAAazN,WAAWC,SAAW+3B,EAAch4B,aAAeg4B,EAAch4B,WAAWC,UAC9Ji4B,GAAqB,GAEnBL,EAAcn0C,SAAS,eAAiB+pB,EAAa8K,aAAe9K,EAAa8K,WAAWp6B,IAAM2rC,KAAkBkO,EAAczf,aAA2C,IAA7Byf,EAAczf,aAAyBA,IAAeA,EAAWp6B,KACnNg6C,GAAqB,GAEnBN,EAAcn0C,SAAS,cAAgB+pB,EAAamP,YAAcnP,EAAamP,UAAUz+B,IAAM25C,KAAiBE,EAAcpb,YAAyC,IAA5Bob,EAAcpb,YAAwBA,IAAcA,EAAUz+B,KAC3Mi6C,GAAoB,GAElBP,EAAcn0C,SAAS,eAAiB+pB,EAAahG,aAAegG,EAAahG,WAAWE,QAAUA,KAAY8F,EAAahG,WAAWC,QAAUA,KAAYswB,EAAcvwB,aAA2C,IAA7BuwB,EAAcvwB,aAAyBA,IAAeA,EAAWE,SAAWF,EAAWC,SACrR2wB,GAAqB,GAEvB,MAAMI,EAAgBlrB,IACf3sB,EAAO2sB,KACZ3sB,EAAO2sB,GAAK5hB,UACA,eAAR4hB,GACE3sB,EAAOyK,YACTzK,EAAO2sB,GAAK5F,OAAOrU,SACnB1S,EAAO2sB,GAAK7F,OAAOpU,UAErB0kC,EAAczqB,GAAK5F,YAAS7nB,EAC5Bk4C,EAAczqB,GAAK7F,YAAS5nB,EAC5Bc,EAAO2sB,GAAK5F,YAAS7nB,EACrBc,EAAO2sB,GAAK7F,YAAS5nB,IAEjBc,EAAOyK,WACTzK,EAAO2sB,GAAKpvB,GAAGmV,SAEjB0kC,EAAczqB,GAAKpvB,QAAK2B,EACxBc,EAAO2sB,GAAKpvB,QAAK2B,GACnB,EAyCF,GAvCI+3C,EAAcn0C,SAAS,SAAW9C,EAAOyK,YACvC2sC,EAAcrmC,OAAS8b,EAAa9b,KACtC2mC,GAAkB,GACRN,EAAcrmC,MAAQ8b,EAAa9b,KAC7C4mC,GAAiB,EAEjBC,GAAiB,GAGrBT,EAAa39C,SAAQnD,IACnB,GAAI,GAAS+gD,EAAc/gD,KAAS,GAASw2B,EAAax2B,IACxD/B,OAAO0Y,OAAOoqC,EAAc/gD,GAAMw2B,EAAax2B,IAClC,eAARA,GAAgC,eAARA,GAAgC,cAARA,KAAwB,YAAaw2B,EAAax2B,KAASw2B,EAAax2B,GAAKuX,SAChIiqC,EAAcxhD,OAEX,CACL,MAAMyhD,EAAWjrB,EAAax2B,IACZ,IAAbyhD,IAAkC,IAAbA,GAAgC,eAARzhD,GAAgC,eAARA,GAAgC,cAARA,EAKhG+gD,EAAc/gD,GAAOw2B,EAAax2B,IAJjB,IAAbyhD,GACFD,EAAcxhD,EAKpB,KAEE8gD,EAAar0C,SAAS,gBAAkBw0C,GAAsBt3C,EAAOof,YAAcpf,EAAOof,WAAWC,SAAW+3B,EAAch4B,YAAcg4B,EAAch4B,WAAWC,UACvKrf,EAAOof,WAAWC,QAAU+3B,EAAch4B,WAAWC,SAEnD43B,EAAcn0C,SAAS,aAAegL,GAAUH,GAAWypC,EAAczpC,QAAQC,SACnFD,EAAQG,OAASA,EACjBH,EAAQmL,QAAO,IACNm+B,EAAcn0C,SAAS,YAAc6K,GAAWypC,EAAczpC,QAAQC,UAC3EE,IAAQH,EAAQG,OAASA,GAC7BH,EAAQmL,QAAO,IAEbm+B,EAAcn0C,SAAS,aAAegL,GAAUspC,EAAcrmC,OAChE6mC,GAAiB,GAEfP,EAAgB,CAClB,MAAMzuC,EAAcikC,EAAOp3C,OACvBmT,GAAaikC,EAAO/zB,QAAO,EACjC,CACIw+B,IACFt3C,EAAOof,WAAWC,QAAU+3B,EAAch4B,WAAWC,SAEnDk4B,KACEv3C,EAAOyK,WAAey+B,GAAwC,kBAAjBA,IAC/CA,EAAel1C,SAASqG,cAAc,OACtC6uC,EAAa7lC,UAAUC,IAAI,qBAC3B4lC,EAAaU,KAAKtmC,IAAI,cACtBtD,EAAOzC,GAAGw6C,YAAY7O,IAEpBA,IAAckO,EAAczf,WAAWp6B,GAAK2rC,GAChDvR,EAAWliC,OACXkiC,EAAW4D,SACX5D,EAAW7e,UAET0+B,KACEx3C,EAAOyK,WAAeysC,GAAsC,kBAAhBA,IAC9CA,EAAcljD,SAASqG,cAAc,OACrC68C,EAAY7zC,UAAUC,IAAI,oBAC1B4zC,EAAYtN,KAAKtmC,IAAI,aACrBtD,EAAOzC,GAAGw6C,YAAYb,IAEpBA,IAAaE,EAAcpb,UAAUz+B,GAAK25C,GAC9Clb,EAAUvmC,OACVumC,EAAUvvB,aACVuvB,EAAU9iB,gBAERu+B,IACEz3C,EAAOyK,YACJqc,GAA4B,kBAAXA,IACpBA,EAAS9yB,SAASqG,cAAc,OAChCysB,EAAOzjB,UAAUC,IAAI,sBACrBwjB,EAAOkJ,UAAYhwB,EAAO6K,OAAOzT,YAAY4gD,cAC7ClxB,EAAO8iB,KAAKtmC,IAAI,eAChBtD,EAAOzC,GAAGw6C,YAAYjxB,IAEnBC,GAA4B,kBAAXA,IACpBA,EAAS/yB,SAASqG,cAAc,OAChC0sB,EAAO1jB,UAAUC,IAAI,sBACrByjB,EAAOiJ,UAAYhwB,EAAO6K,OAAOzT,YAAY6gD,cAC7ClxB,EAAO6iB,KAAKtmC,IAAI,eAChBtD,EAAOzC,GAAGw6C,YAAYhxB,KAGtBD,IAAQswB,EAAcvwB,WAAWC,OAASA,GAC1CC,IAAQqwB,EAAcvwB,WAAWE,OAASA,GAC9CF,EAAWpxB,OACXoxB,EAAW/N,UAETm+B,EAAcn0C,SAAS,oBACzB9C,EAAOgb,eAAiB6R,EAAa7R,gBAEnCi8B,EAAcn0C,SAAS,oBACzB9C,EAAOib,eAAiB4R,EAAa5R,gBAEnCg8B,EAAcn0C,SAAS,cACzB9C,EAAO+pB,gBAAgB8C,EAAavS,WAAW,IAE7Co9B,GAAmBE,IACrB53C,EAAOuf,eAELo4B,GAAkBC,IACpB53C,EAAOud,aAETvd,EAAO8Y,QACT,CCtOA,MAAMo/B,GAAc37B,IAClB,GAAI7d,WAAW6d,KAASrU,OAAOqU,GAAM,OAAOrU,OAAOqU,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,kBAARA,GAAoBA,EAAIzZ,SAAS,MAAQyZ,EAAIzZ,SAAS,MAAQyZ,EAAIzZ,SAAS,KAAM,CAC1F,IAAI2C,EACJ,IACEA,EAAI0yC,KAAKC,MAAM77B,EACjB,CAAE,MAAOpZ,GACPsC,EAAI8W,CACN,CACA,OAAO9W,CACT,CACA,OAAO8W,CAVkC,CAU/B,EAEN87B,GAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,GAAUt2C,EAASu2C,EAAUC,GACpC,MAAMh4C,EAAS,CAAC,EACVqsB,EAAe,CAAC,EACtB,GAAOrsB,EAAQ8qB,IACf,MAAMmtB,EAAkB,IAAIhC,GAAY,MAClCiC,EAAgBD,EAAgBr/C,KAAI/C,GAAOA,EAAI8H,QAAQ,IAAK,MAGlEs6C,EAAgBj/C,SAAQm/C,IACtBA,EAAYA,EAAUx6C,QAAQ,IAAK,IACD,qBAAvB6D,EAAQ22C,KACjB9rB,EAAa8rB,GAAa32C,EAAQ22C,GACpC,IAIF,MAAMC,EAAY,IAAI52C,EAAQuI,YA6D9B,MA5DwB,kBAAbguC,GAA8C,qBAAdC,GACzCI,EAAUvgD,KAAK,CACb5E,KAAM8kD,EACNjlD,MAAO,GAASklD,GAAa,IACxBA,GACDA,IAGRI,EAAUp/C,SAAQq/C,IAChB,MAAMC,EAAcT,GAAkBpiC,MAAK8iC,GAAUF,EAAKplD,KAAKulD,WAAW,GAAGD,QAC7E,GAAID,EAAa,CACf,MAAMG,EAAgBpC,GAAWiC,GAC3BI,EAAarC,GAAWgC,EAAKplD,KAAKwJ,MAAM,GAAG67C,MAAgB,IACtB,qBAAhCjsB,EAAaosB,KAAgCpsB,EAAaosB,GAAiB,CAAC,IACnD,IAAhCpsB,EAAaosB,KACfpsB,EAAaosB,GAAiB,CAC5BrrC,SAAS,IAGbif,EAAaosB,GAAeC,GAAchB,GAAYW,EAAKvlD,MAC7D,KAAO,CACL,MAAMG,EAAOojD,GAAWgC,EAAKplD,MAC7B,IAAKilD,EAAc51C,SAASrP,GAAO,OACnC,MAAMH,EAAQ4kD,GAAYW,EAAKvlD,OAC3Bu5B,EAAap5B,IAAS4kD,GAAkBv1C,SAAS+1C,EAAKplD,QAAU,GAASH,IACvEu5B,EAAap5B,GAAM2D,cAAgB9C,SACrCu4B,EAAap5B,GAAQ,CAAC,GAExBo5B,EAAap5B,GAAMma,UAAYta,GAE/Bu5B,EAAap5B,GAAQH,CAEzB,KAEF,GAAOkN,EAAQqsB,GACXrsB,EAAOqmB,WACTrmB,EAAOqmB,WAAa,CAClBE,OAAQ,sBACRD,OAAQ,0BACkB,IAAtBtmB,EAAOqmB,WAAsBrmB,EAAOqmB,WAAa,CAAC,IAEzB,IAAtBrmB,EAAOqmB,mBACTrmB,EAAOqmB,WAEZrmB,EAAOw7B,UACTx7B,EAAOw7B,UAAY,CACjBz+B,GAAI,wBACqB,IAArBiD,EAAOw7B,UAAqBx7B,EAAOw7B,UAAY,CAAC,IAExB,IAArBx7B,EAAOw7B,kBACTx7B,EAAOw7B,UAEZx7B,EAAOm3B,WACTn3B,EAAOm3B,WAAa,CAClBp6B,GAAI,yBACsB,IAAtBiD,EAAOm3B,WAAsBn3B,EAAOm3B,WAAa,CAAC,IAEzB,IAAtBn3B,EAAOm3B,mBACTn3B,EAAOm3B,WAET,CACLn3B,SACAqsB,eAEJ,CCpFA,MAAMssB,GAAY,ooaACZC,GAAiB,ylEAEvB,MAAMC,IACN,MAAMC,GAAkC,qBAAXziD,QAAiD,qBAAhBiI,YAA8Bu6C,GAAmBv6C,YACzGy6C,GAAW,udAEXC,GAAW,CAAC13C,EAAY23C,KAC5B,GAA6B,qBAAlBC,eAAiC53C,EAAW63C,mBAAoB,CACzE,MAAMC,EAAa,IAAIF,cACvBE,EAAWC,YAAYJ,GACvB33C,EAAW63C,mBAAqB,CAACC,EACnC,KAAO,CACL,MAAMp/C,EAAQxG,SAASqG,cAAc,SACrCG,EAAMs/C,IAAM,aACZt/C,EAAMwgC,YAAcye,EACpB33C,EAAWi2C,YAAYv9C,EACzB,GAEF,MAAMu/C,WAAwBT,GAC5B,WAAAliD,GACE4iD,QACA/9C,KAAKg+C,aAAa,CAChBC,KAAM,QAEV,CACA,wBAAWlC,GACT,OAAOuB,EACT,CACA,wBAAWtB,GACT,OAAOsB,GAASp7C,QAAQ,WAAY,6DACtC,CACA,SAAAg8C,GACE,MAAO,CAAChB,MAEJl9C,KAAKm+C,cAAgBziD,MAAMC,QAAQqE,KAAKm+C,cAAgBn+C,KAAKm+C,aAAe,IAAKh8C,KAAK,KAC5F,CACA,QAAAi8C,GACE,OAAOp+C,KAAKq+C,kBAAoB,EAClC,CACA,cAAAC,GACE,MAAMC,EAAmBv+C,KAAK4yB,YAAc,EAEtC4rB,EAAoB,IAAIx+C,KAAKhC,iBAAiB,mBAAmBb,KAAIwL,GAClEkI,SAASlI,EAAMyT,aAAa,QAAQpb,MAAM,UAAU,GAAI,MAGjE,GADAhB,KAAK4yB,WAAa4rB,EAAkB1kD,OAASoL,KAAKC,OAAOq5C,GAAqB,EAAI,EAC7Ex+C,KAAKy+C,SACV,GAAIz+C,KAAK4yB,WAAa2rB,EACpB,IAAK,IAAI1kD,EAAI0kD,EAAkB1kD,EAAImG,KAAK4yB,WAAY/4B,GAAK,EAAG,CAC1D,MAAM+L,EAAU7N,SAASqG,cAAc,gBACvCwH,EAAQpH,aAAa,OAAQ,eAAe3E,EAAI,KAChD,MAAM6kD,EAAS3mD,SAASqG,cAAc,QACtCsgD,EAAOlgD,aAAa,OAAQ,SAAS3E,EAAI,KACzC+L,EAAQk2C,YAAY4C,GACpB1+C,KAAK6F,WAAW9H,cAAc,mBAAmB+9C,YAAYl2C,EAC/D,MACK,GAAI5F,KAAK4yB,WAAa2rB,EAAkB,CAC7C,MAAM1sC,EAAS7R,KAAK+D,OAAO8N,OAC3B,IAAK,IAAIhY,EAAIgY,EAAO/X,OAAS,EAAGD,GAAK,EAAGA,GAAK,EACvCA,EAAImG,KAAK4yB,YACX/gB,EAAOhY,GAAG4c,QAGhB,CACF,CACA,MAAA6oB,GACE,GAAIt/B,KAAKy+C,SAAU,OACnBz+C,KAAKs+C,iBAGL,IAAIK,EAAc3+C,KAAKk+C,YACnBl+C,KAAK4yB,WAAa,IACpB+rB,EAAcA,EAAYz8C,QAAQ,8BAA+B,OAE/Dy8C,EAAY7kD,QACdyjD,GAASv9C,KAAK6F,WAAY84C,GAE5B3+C,KAAKo+C,WAAW7gD,SAAQkyB,IACtB,MAAMmvB,EAAa5+C,KAAK6F,WAAW9H,cAAc,cAAc0xB,OAC/D,GAAImvB,EAAY,OAChB,MAAMC,EAAS9mD,SAASqG,cAAc,QACtCygD,EAAOhB,IAAM,aACbgB,EAAO7/C,KAAOywB,EACdzvB,KAAK6F,WAAWi2C,YAAY+C,EAAO,IAGrC,MAAMv9C,EAAKvJ,SAASqG,cAAc,OAClCkD,EAAG8F,UAAUC,IAAI,UACjB/F,EAAGqsC,KAAO,YAGVrsC,EAAGyyB,UAAY,mIAITr4B,MAAM0f,KAAK,CACfthB,OAAQkG,KAAK4yB,aACZz1B,KAAI,CAACiY,EAAGpF,IAAU,6CACiBA,oCACZA,kDAEnB7N,KAAK,sEAGRs4C,GAAgBz6C,KAAK4wB,cAAgB,gEACgB5wB,KAAK7E,YAAY6gD,mFACjBh8C,KAAK7E,YAAY4gD,8BACpE,aACFrB,GAAgB16C,KAAK4wB,cAAgB,4EAEnC,aACF+pB,GAAe36C,KAAK4wB,cAAgB,0EAElC,WAEN5wB,KAAK6F,WAAWi2C,YAAYx6C,GAC5BtB,KAAKy+C,UAAW,CAClB,CACA,UAAAK,GACE,IAAIC,EAAQ/+C,KACZ,GAAIA,KAAK2M,YAAa,OACtB3M,KAAK2M,aAAc,EACnB,MACEpI,OAAQosB,EAAY,aACpBC,GACEyrB,GAAUr8C,MACdA,KAAK2wB,aAAeA,EACpB3wB,KAAK4wB,aAAeA,SACb5wB,KAAK2wB,aAAan3B,KACzBwG,KAAKs/B,SAGLt/B,KAAK+D,OAAS,IAAIssB,GAAOrwB,KAAK6F,WAAW9H,cAAc,WAAY,IAC7D4yB,EAAajf,QAAU,CAAC,EAAI,CAC9BnF,UAAU,MAETokB,EACH9M,kBAAmB,YACnBhU,MAAO,SAAUrY,GACF,mBAATA,GACFunD,EAAMT,iBAER,MAAMztB,EAAYF,EAAanB,aAAe,GAAGmB,EAAanB,eAAeh4B,EAAKoU,gBAAkBpU,EAAKoU,cACzG,IAAK,IAAI8D,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAAKC,EAAO,GAAK5M,UAAU4M,GAE7B,MAAMN,EAAQ,IAAIvP,YAAY8wB,EAAW,CACvC9H,OAAQpZ,EACRmZ,QAAkB,eAATtxB,EACT0wB,YAAY,IAEd62B,EAAM91B,cAAc3Z,EACtB,GAEJ,CACA,iBAAA0vC,GACMh/C,KAAK2M,aAAe3M,KAAKooB,QAAUpoB,KAAKya,QAAQ,iBAAmBza,KAAKya,QAAQ,gBAAgBmI,oBAGlF,IAAd5iB,KAAKxG,MAAgD,UAA9BwG,KAAKoc,aAAa,SAG7Cpc,KAAK8+C,YACP,CACA,oBAAAG,GACMj/C,KAAKooB,QAAUpoB,KAAKya,QAAQ,iBAAmBza,KAAKya,QAAQ,gBAAgBmI,oBAG5E5iB,KAAK+D,QAAU/D,KAAK+D,OAAO+K,SAC7B9O,KAAK+D,OAAO+K,UAEd9O,KAAK2M,aAAc,EACrB,CACA,wBAAAuyC,CAAyB5C,EAAUC,GACjC,MACEh4C,OAAQosB,EAAY,aACpBC,GACEyrB,GAAUr8C,KAAMs8C,EAAUC,GAC9Bv8C,KAAK4wB,aAAeA,EACpB5wB,KAAK2wB,aAAeA,EAChB3wB,KAAK+D,QAAU/D,KAAK+D,OAAOQ,OAAO+3C,KAAcC,GAGpDxB,GAAa,CACXh3C,OAAQ/D,KAAK+D,OACb6sB,aAAc5wB,KAAK4wB,aACnBoqB,cAAe,CAACJ,GAAW0B,OACV,eAAbA,GAA6B1rB,EAAa0rB,GAAY,CACxDxxB,OAAQ,sBACRD,OAAQ,uBACN,CAAC,KACY,eAAbyxB,GAA6B1rB,EAAa0rB,GAAY,CACxDrP,aAAc,sBACZ,CAAC,KACY,cAAbqP,GAA4B1rB,EAAa0rB,GAAY,CACvDrB,YAAa,qBACX,CAAC,GAET,CACA,wBAAAkE,CAAyBvC,EAAMwC,EAAWvD,GACnC77C,KAAK2M,cACQ,SAAdyyC,GAAqC,OAAbvD,IAC1BA,GAAW,GAEb77C,KAAKk/C,yBAAyBtC,EAAMf,GACtC,CACA,6BAAWwD,GACT,MAAMC,EAAQ9E,GAAWv+C,QAAOsjD,GAASA,EAAM14C,SAAS,OAAM1J,KAAIoiD,GAASA,EAAMr9C,QAAQ,UAAUsH,GAAK,IAAIA,MAAKtH,QAAQ,IAAK,IAAI0J,gBAClI,OAAO0zC,CACT,EAEF9E,GAAWj9C,SAAQm/C,IACC,SAAdA,IACJA,EAAYA,EAAUx6C,QAAQ,IAAK,IACnC7J,OAAO8B,eAAe2jD,GAAgBvkD,UAAWmjD,EAAW,CAC1DziD,cAAc,EACd,GAAA2C,GACE,OAAQoD,KAAK4wB,cAAgB,CAAC,GAAG8rB,EACnC,EACA,GAAA7/C,CAAIxF,GACG2I,KAAK4wB,eAAc5wB,KAAK4wB,aAAe,CAAC,GAC7C5wB,KAAK4wB,aAAa8rB,GAAarlD,EAC1B2I,KAAK2M,aACV3M,KAAKk/C,yBAAyBxC,EAAWrlD,EAC3C,IACA,IAEJ,MAAMmoD,WAAoBnC,GACxB,WAAAliD,GACE4iD,QACA/9C,KAAKg+C,aAAa,CAChBC,KAAM,QAEV,CACA,MAAA3e,GACE,MAAMmgB,EAAOz/C,KAAKy/C,MAAsC,KAA9Bz/C,KAAKoc,aAAa,SAAgD,SAA9Bpc,KAAKoc,aAAa,QAGhF,GAFAmhC,GAASv9C,KAAK6F,WAAYs3C,IAC1Bn9C,KAAK6F,WAAWi2C,YAAY/jD,SAASqG,cAAc,SAC/CqhD,EAAM,CACR,MAAMC,EAAU3nD,SAASqG,cAAc,OACvCshD,EAAQt4C,UAAUC,IAAI,yBACtBq4C,EAAQ/R,KAAKtmC,IAAI,aACjBrH,KAAK6F,WAAWi2C,YAAY4D,EAC9B,CACF,CACA,UAAAZ,GACE9+C,KAAKs/B,QACP,CACA,iBAAA0f,GACMh/C,KAAK4iB,mBAGT5iB,KAAK8+C,YACP,EAIF,MAAMa,GAAW,KACO,qBAAX/kD,SACNA,OAAOglD,eAAehjD,IAAI,qBAAqBhC,OAAOglD,eAAeC,OAAO,mBAAoB/B,IAChGljD,OAAOglD,eAAehjD,IAAI,iBAAiBhC,OAAOglD,eAAeC,OAAO,eAAgBL,IAAY,EAErF,qBAAX5kD,SACTA,OAAOklD,4BAA8Bv7C,IACnCi2C,GAAWp+C,QAAQmI,EAAO,E;;;;;ICpR9B,MAAMw7C,EAAgC,qBAAbhoD,SAQzB,SAASioD,EAAiBC,GACtB,MAA6B,kBAAdA,GACX,gBAAiBA,GACjB,UAAWA,GACX,cAAeA,CACvB,CACA,SAASC,EAAWllD,GAChB,OAAQA,EAAImlD,YACoB,WAA5BnlD,EAAIC,OAAOmlD,cAGVplD,EAAIqlD,SAAWL,EAAiBhlD,EAAIqlD,QAC7C,CACA,MAAMtvC,EAAS1Y,OAAO0Y,OACtB,SAASuvC,EAAcC,EAAIh8C,GACvB,MAAMgsB,EAAY,CAAC,EACnB,IAAK,MAAMn2B,KAAOmK,EAAQ,CACtB,MAAMlN,EAAQkN,EAAOnK,GACrBm2B,EAAUn2B,GAAOuB,EAAQtE,GACnBA,EAAM8F,IAAIojD,GACVA,EAAGlpD,EACb,CACA,OAAOk5B,CACX,CACA,MAAMiwB,EAAO,OAKP7kD,EAAUD,MAAMC,QA2BtB,MAAM8kD,EAAU,KACVC,EAAe,KACfC,EAAW,MACXC,EAAW,KACXC,EAAQ,MACRC,EAAU,MAeVC,EAAsB,OACtBC,EAAuB,OACvBC,EAAe,OACfC,EAAkB,OAClBC,EAAoB,OACpBC,EAAc,OACdC,EAAqB,OACrBC,EAAe,OASrB,SAASC,EAAax6C,GAClB,OAAOy6C,UAAU,GAAKz6C,GACjB7E,QAAQk/C,EAAa,KACrBl/C,QAAQ6+C,EAAqB,KAC7B7+C,QAAQ8+C,EAAsB,IACvC,CAOA,SAASS,EAAW16C,GAChB,OAAOw6C,EAAax6C,GACf7E,QAAQi/C,EAAmB,KAC3Bj/C,QAAQm/C,EAAoB,KAC5Bn/C,QAAQ++C,EAAc,IAC/B,CAQA,SAASS,EAAiB36C,GACtB,OAAQw6C,EAAax6C,GAEhB7E,QAAQ4+C,EAAS,OACjB5+C,QAAQo/C,EAAc,KACtBp/C,QAAQu+C,EAAS,OACjBv+C,QAAQw+C,EAAc,OACtBx+C,QAAQg/C,EAAiB,KACzBh/C,QAAQi/C,EAAmB,KAC3Bj/C,QAAQm/C,EAAoB,KAC5Bn/C,QAAQ++C,EAAc,IAC/B,CAMA,SAASU,EAAe56C,GACpB,OAAO26C,EAAiB36C,GAAM7E,QAAQ0+C,EAAU,MACpD,CAOA,SAASgB,EAAW76C,GAChB,OAAOw6C,EAAax6C,GAAM7E,QAAQu+C,EAAS,OAAOv+C,QAAQ2+C,EAAO,MACrE,CAUA,SAASgB,EAAY96C,GACjB,OAAe,MAARA,EAAe,GAAK66C,EAAW76C,GAAM7E,QAAQy+C,EAAU,MAClE,CAQA,SAASmB,EAAO/6C,GACZ,IACI,OAAOg7C,mBAAmB,GAAKh7C,EACnC,CACA,MAAOG,GAEP,CACA,MAAO,GAAKH,CAChB,CAEA,MAAMi7C,EAAoB,MACpBC,EAAuB1lC,GAASA,EAAKra,QAAQ8/C,EAAmB,IAUtE,SAASE,EAASC,EAAYvjD,EAAUwjD,EAAkB,KACtD,IAAI7lC,EAAM8lC,EAAQ,CAAC,EAAGC,EAAe,GAAIzjD,EAAO,GAGhD,MAAM0jD,EAAU3jD,EAAS5B,QAAQ,KACjC,IAAIwlD,EAAY5jD,EAAS5B,QAAQ,KAkBjC,OAhBIulD,EAAUC,GAAaD,GAAW,IAClCC,GAAa,GAEbA,GAAa,IACbjmC,EAAO3d,EAAS1B,MAAM,EAAGslD,GACzBF,EAAe1jD,EAAS1B,MAAMslD,EAAY,EAAGD,GAAW,EAAIA,EAAU3jD,EAAS9E,QAC/EuoD,EAAQF,EAAWG,IAEnBC,GAAW,IACXhmC,EAAOA,GAAQ3d,EAAS1B,MAAM,EAAGqlD,GAEjC1jD,EAAOD,EAAS1B,MAAMqlD,EAAS3jD,EAAS9E,SAG5CyiB,EAAOkmC,EAA4B,MAARlmC,EAAeA,EAAO3d,EAAUwjD,GAEpD,CACHM,SAAUnmC,GAAQ+lC,GAAgB,KAAOA,EAAezjD,EACxD0d,OACA8lC,QACAxjD,KAAMijD,EAAOjjD,GAErB,CAOA,SAAS8jD,EAAaC,EAAgBhkD,GAClC,MAAMyjD,EAAQzjD,EAASyjD,MAAQO,EAAehkD,EAASyjD,OAAS,GAChE,OAAOzjD,EAAS2d,MAAQ8lC,GAAS,KAAOA,GAASzjD,EAASC,MAAQ,GACtE,CAOA,SAASgkD,EAAU3jD,EAAUglB,GAEzB,OAAKA,GAAShlB,EAAS0M,cAAcmxC,WAAW74B,EAAKtY,eAE9C1M,EAAShC,MAAMgnB,EAAKpqB,SAAW,IAD3BoF,CAEf,CAUA,SAAS4jD,EAAoBF,EAAgB3gD,EAAGwsB,GAC5C,MAAMs0B,EAAa9gD,EAAE+gD,QAAQlpD,OAAS,EAChCmpD,EAAax0B,EAAEu0B,QAAQlpD,OAAS,EACtC,OAAQipD,GAAc,GAClBA,IAAeE,GACfC,EAAkBjhD,EAAE+gD,QAAQD,GAAat0B,EAAEu0B,QAAQC,KACnDE,EAA0BlhD,EAAEsC,OAAQkqB,EAAElqB,SACtCq+C,EAAe3gD,EAAEogD,SAAWO,EAAen0B,EAAE4zB,QAC7CpgD,EAAEpD,OAAS4vB,EAAE5vB,IACrB,CAQA,SAASqkD,EAAkBjhD,EAAGwsB,GAI1B,OAAQxsB,EAAEmhD,SAAWnhD,MAAQwsB,EAAE20B,SAAW30B,EAC9C,CACA,SAAS00B,EAA0BlhD,EAAGwsB,GAClC,GAAIp2B,OAAO0D,KAAKkG,GAAGnI,SAAWzB,OAAO0D,KAAK0yB,GAAG30B,OACzC,OAAO,EACX,IAAK,MAAMM,KAAO6H,EACd,IAAKohD,EAA+BphD,EAAE7H,GAAMq0B,EAAEr0B,IAC1C,OAAO,EAEf,OAAO,CACX,CACA,SAASipD,EAA+BphD,EAAGwsB,GACvC,OAAO9yB,EAAQsG,GACTqhD,EAAkBrhD,EAAGwsB,GACrB9yB,EAAQ8yB,GACJ60B,EAAkB70B,EAAGxsB,GACrBA,IAAMwsB,CACpB,CAQA,SAAS60B,EAAkBrhD,EAAGwsB,GAC1B,OAAO9yB,EAAQ8yB,GACTxsB,EAAEnI,SAAW20B,EAAE30B,QAAUmI,EAAEshD,OAAM,CAAClsD,EAAOwC,IAAMxC,IAAUo3B,EAAE50B,KAC9C,IAAboI,EAAEnI,QAAgBmI,EAAE,KAAOwsB,CACrC,CAOA,SAASg0B,EAAoB1/C,EAAIqY,GAC7B,GAAIrY,EAAGg6C,WAAW,KACd,OAAOh6C,EAKX,IAAKA,EACD,OAAOqY,EACX,MAAMooC,EAAepoC,EAAKpa,MAAM,KAC1ByiD,EAAa1gD,EAAG/B,MAAM,KACtB0iD,EAAgBD,EAAWA,EAAW3pD,OAAS,GAG/B,OAAlB4pD,GAA4C,MAAlBA,GAC1BD,EAAWrnD,KAAK,IAEpB,IACIunD,EACAC,EAFA5pB,EAAWwpB,EAAa1pD,OAAS,EAGrC,IAAK6pD,EAAa,EAAGA,EAAaF,EAAW3pD,OAAQ6pD,IAGjD,GAFAC,EAAUH,EAAWE,GAEL,MAAZC,EAAJ,CAGA,GAAgB,OAAZA,EAQA,MANI5pB,EAAW,GACXA,GALI,CAYhB,OAAQwpB,EAAatmD,MAAM,EAAG88B,GAAU73B,KAAK,KACzC,IACAshD,EAAWvmD,MAAMymD,GAAYxhD,KAAK,IAC1C,CAgBA,MAAM0hD,EAA4B,CAC9BtnC,KAAM,IAEN/kB,UAAMyL,EACNsB,OAAQ,CAAC,EACT89C,MAAO,CAAC,EACRxjD,KAAM,GACN6jD,SAAU,IACVM,QAAS,GACTc,KAAM,CAAC,EACPC,oBAAgB9gD,GAGpB,IAAI+gD,EAKAC,GAJJ,SAAWD,GACPA,EAAe,OAAS,MACxBA,EAAe,QAAU,MAC5B,EAHD,CAGGA,IAAmBA,EAAiB,CAAC,IAExC,SAAWC,GACPA,EAAoB,QAAU,OAC9BA,EAAoB,WAAa,UACjCA,EAAoB,WAAa,EACpC,CAJD,CAIGA,IAAwBA,EAAsB,CAAC,IAYlD,SAASC,EAAchgC,GACnB,IAAKA,EACD,GAAI67B,EAAW,CAEX,MAAMoE,EAASpsD,SAASgG,cAAc,QACtCmmB,EAAQigC,GAAUA,EAAO/nC,aAAa,SAAY,IAElD8H,EAAOA,EAAKhiB,QAAQ,kBAAmB,GAC3C,MAEIgiB,EAAO,IAUf,MAJgB,MAAZA,EAAK,IAA0B,MAAZA,EAAK,KACxBA,EAAO,IAAMA,GAGV+9B,EAAoB/9B,EAC/B,CAEA,MAAMkgC,EAAiB,UACvB,SAASC,EAAWngC,EAAMtlB,GACtB,OAAOslB,EAAKhiB,QAAQkiD,EAAgB,KAAOxlD,CAC/C,CAEA,SAAS0lD,EAAmBhjD,EAAIuyB,GAC5B,MAAM0wB,EAAUxsD,SAASiS,gBAAgBxC,wBACnCg9C,EAASljD,EAAGkG,wBAClB,MAAO,CACHwW,SAAU6V,EAAO7V,SACjBhW,KAAMw8C,EAAOx8C,KAAOu8C,EAAQv8C,MAAQ6rB,EAAO7rB,MAAQ,GACnDD,IAAKy8C,EAAOz8C,IAAMw8C,EAAQx8C,KAAO8rB,EAAO9rB,KAAO,GAEvD,CACA,MAAM08C,EAAwB,KAAM,CAChCz8C,KAAMpN,OAAOkN,QACbC,IAAKnN,OAAOgN,UAEhB,SAAS88C,EAAiB1qB,GACtB,IAAI2qB,EACJ,GAAI,OAAQ3qB,EAAU,CAClB,MAAM4qB,EAAa5qB,EAAS14B,GACtBujD,EAAqC,kBAAfD,GAA2BA,EAAW7H,WAAW,KAsBzE,EAiBJ,MAAMz7C,EAA2B,kBAAfsjD,EACZC,EACI9sD,SAASkG,eAAe2mD,EAAW1nD,MAAM,IACzCnF,SAASgG,cAAc6mD,GAC3BA,EACN,IAAKtjD,EAGD,OAEJqjD,EAAkBL,EAAmBhjD,EAAI04B,EAC7C,MAEI2qB,EAAkB3qB,EAElB,mBAAoBjiC,SAASiS,gBAAgBzL,MAC7C3D,OAAO6K,SAASk/C,GAEhB/pD,OAAO6K,SAAiC,MAAxBk/C,EAAgB38C,KAAe28C,EAAgB38C,KAAOpN,OAAOkN,QAAgC,MAAvB68C,EAAgB58C,IAAc48C,EAAgB58C,IAAMnN,OAAOgN,QAEzJ,CACA,SAASk9C,EAAavoC,EAAMid,GACxB,MAAMQ,EAAWt6B,QAAQouC,MAAQpuC,QAAQouC,MAAM9T,SAAWR,GAAS,EACnE,OAAOQ,EAAWzd,CACtB,CACA,MAAMwoC,EAAkB,IAAIvoD,IAC5B,SAASwoD,GAAmB5qD,EAAK6qD,GAC7BF,EAAgBloD,IAAIzC,EAAK6qD,EAC7B,CACA,SAASC,GAAuB9qD,GAC5B,MAAM+qD,EAASJ,EAAgBnoD,IAAIxC,GAGnC,OADA2qD,EAAgBK,OAAOhrD,GAChB+qD,CACX,CAiBA,IAAIE,GAAqB,IAAMzmD,SAASO,SAAW,KAAOP,SAASE,KAMnE,SAASwmD,GAAsBphC,EAAMtlB,GACjC,MAAM,SAAEM,EAAQ,OAAEE,EAAM,KAAEP,GAASD,EAE7B2jD,EAAUr+B,EAAKlnB,QAAQ,KAC7B,GAAIulD,GAAW,EAAG,CACd,IAAIgD,EAAW1mD,EAAKgI,SAASqd,EAAKhnB,MAAMqlD,IAClCr+B,EAAKhnB,MAAMqlD,GAASzoD,OACpB,EACF0rD,EAAe3mD,EAAK3B,MAAMqoD,GAI9B,MAFwB,MAApBC,EAAa,KACbA,EAAe,IAAMA,GAClB3C,EAAU2C,EAAc,GACnC,CACA,MAAMjpC,EAAOsmC,EAAU3jD,EAAUglB,GACjC,OAAO3H,EAAOnd,EAASP,CAC3B,CACA,SAAS4mD,GAAoBvhC,EAAMwhC,EAActD,EAAiBlgD,GAC9D,IAAIyjD,EAAY,GACZC,EAAY,GAGZC,EAAa,KACjB,MAAMC,EAAkB,EAAGhY,YACvB,MAAM/qC,EAAKuiD,GAAsBphC,EAAMtlB,UACjCwc,EAAOgnC,EAAgB/qD,MACvB0uD,EAAYL,EAAaruD,MAC/B,IAAImiC,EAAQ,EACZ,GAAIsU,EAAO,CAIP,GAHAsU,EAAgB/qD,MAAQ0L,EACxB2iD,EAAaruD,MAAQy2C,EAEjB+X,GAAcA,IAAezqC,EAE7B,YADAyqC,EAAa,MAGjBrsB,EAAQusB,EAAYjY,EAAM9T,SAAW+rB,EAAU/rB,SAAW,CAC9D,MAEI93B,EAAQa,GAOZ4iD,EAAUpoD,SAAQyoD,IACdA,EAAS5D,EAAgB/qD,MAAO+jB,EAAM,CAClCoe,QACAzU,KAAMi/B,EAAe7R,IACrB9zB,UAAWmb,EACLA,EAAQ,EACJyqB,EAAoBgC,QACpBhC,EAAoBnkD,KACxBmkD,EAAoBiC,SAC5B,GACJ,EAEN,SAASC,IACLN,EAAazD,EAAgB/qD,KACjC,CACA,SAAS+uD,EAAO3lD,GAEZklD,EAAUvpD,KAAKqE,GACf,MAAM4lD,EAAW,KACb,MAAMr2C,EAAQ21C,EAAU3oD,QAAQyD,GAC5BuP,GAAS,GACT21C,EAAU5oD,OAAOiT,EAAO,EAAE,EAGlC,OADA41C,EAAUxpD,KAAKiqD,GACRA,CACX,CACA,SAASC,IACL,MAAM,QAAE5mD,GAAY9E,OACf8E,EAAQouC,OAEbpuC,EAAQC,aAAaoR,EAAO,CAAC,EAAGrR,EAAQouC,MAAO,CAAEqX,OAAQV,MAA4B,GACzF,CACA,SAAS31C,IACL,IAAK,MAAMu3C,KAAYT,EACnBS,IACJT,EAAY,GACZhrD,OAAO+C,oBAAoB,WAAYmoD,GACvClrD,OAAO+C,oBAAoB,eAAgB2oD,EAC/C,CAQA,OANA1rD,OAAO8C,iBAAiB,WAAYooD,GAGpClrD,OAAO8C,iBAAiB,eAAgB4oD,EAAsB,CAC1Dn6B,SAAS,IAEN,CACHg6B,iBACAC,SACAt3C,UAER,CAIA,SAASy3C,GAAWzmD,EAAMgF,EAASmhD,EAASO,GAAW,EAAOC,GAAgB,GAC1E,MAAO,CACH3mD,OACAgF,UACAmhD,UACAO,WACAxsB,SAAUp/B,OAAO8E,QAAQ5F,OACzBqrD,OAAQsB,EAAgBhC,IAA0B,KAE1D,CACA,SAASiC,GAA0BxiC,GAC/B,MAAM,QAAExkB,EAAO,SAAEd,GAAahE,OAExBwnD,EAAkB,CACpB/qD,MAAOiuD,GAAsBphC,EAAMtlB,IAEjC8mD,EAAe,CAAEruD,MAAOqI,EAAQouC,OAetC,SAAS6Y,EAAe5jD,EAAI+qC,EAAO5rC,GAU/B,MAAM0kD,EAAY1iC,EAAKlnB,QAAQ,KACzByyB,EAAMm3B,GAAa,GAClBhoD,EAASE,MAAQ/G,SAASgG,cAAc,QACrCmmB,EACAA,EAAKhnB,MAAM0pD,IAAc7jD,EAC7BsiD,KAAuBnhC,EAAOnhB,EACpC,IAGIrD,EAAQwC,EAAU,eAAiB,aAAa4rC,EAAO,GAAIre,GAC3Di2B,EAAaruD,MAAQy2C,CACzB,CACA,MAAO5mC,GAKCF,QAAQ6/C,MAAM3/C,GAGlBtI,EAASsD,EAAU,UAAY,UAAUutB,EAC7C,CACJ,CACA,SAASvtB,EAAQa,EAAImN,GACjB,MAAM49B,EAAQ/8B,EAAO,CAAC,EAAGrR,EAAQouC,MAAOyY,GAAWb,EAAaruD,MAAMyI,KAEtEiD,EAAI2iD,EAAaruD,MAAM4uD,SAAS,GAAO/1C,EAAM,CAAE8pB,SAAU0rB,EAAaruD,MAAM2iC,WAC5E2sB,EAAe5jD,EAAI+qC,GAAO,GAC1BsU,EAAgB/qD,MAAQ0L,CAC5B,CACA,SAAS3G,EAAK2G,EAAImN,GAGd,MAAM29B,EAAe98B,EAAO,CAAC,EAI7B20C,EAAaruD,MAAOqI,EAAQouC,MAAO,CAC/BmY,QAASljD,EACToiD,OAAQV,MAOZkC,EAAe9Y,EAAa/oC,QAAS+oC,GAAc,GACnD,MAAMC,EAAQ/8B,EAAO,CAAC,EAAGw1C,GAAWnE,EAAgB/qD,MAAO0L,EAAI,MAAO,CAAEi3B,SAAU6T,EAAa7T,SAAW,GAAK9pB,GAC/Gy2C,EAAe5jD,EAAI+qC,GAAO,GAC1BsU,EAAgB/qD,MAAQ0L,CAC5B,CACA,OA1EK2iD,EAAaruD,OACdsvD,EAAevE,EAAgB/qD,MAAO,CAClCyI,KAAM,KACNgF,QAASs9C,EAAgB/qD,MACzB4uD,QAAS,KAETjsB,SAAUt6B,EAAQ5F,OAAS,EAC3B0sD,UAAU,EAGVrB,OAAQ,OACT,GA+DA,CACHvmD,SAAUwjD,EACVtU,MAAO4X,EACPtpD,OACA8F,UAER,CAMA,SAAS4kD,GAAiB5iC,GACtBA,EAAOggC,EAAchgC,GACrB,MAAM6iC,EAAoBL,GAA0BxiC,GAC9C8iC,EAAmBvB,GAAoBvhC,EAAM6iC,EAAkBjZ,MAAOiZ,EAAkBnoD,SAAUmoD,EAAkB7kD,SAC1H,SAASrC,EAAG25B,EAAOytB,GAAmB,GAC7BA,GACDD,EAAiBb,iBACrBzmD,QAAQG,GAAG25B,EACf,CACA,MAAM0tB,EAAgBn2C,EAAO,CAEzBnS,SAAU,GACVslB,OACArkB,KACAwkD,WAAYA,EAAW5oD,KAAK,KAAMyoB,IACnC6iC,EAAmBC,GAStB,OARA3uD,OAAO8B,eAAe+sD,EAAe,WAAY,CAC7CltD,YAAY,EACZ4C,IAAK,IAAMmqD,EAAkBnoD,SAASvH,QAE1CgB,OAAO8B,eAAe+sD,EAAe,QAAS,CAC1CltD,YAAY,EACZ4C,IAAK,IAAMmqD,EAAkBjZ,MAAMz2C,QAEhC6vD,CACX,CAyHA,SAASC,GAAgBC,GACrB,MAAwB,kBAAVA,GAAuBA,GAA0B,kBAAVA,CACzD,CACA,SAASC,GAAY7vD,GACjB,MAAuB,kBAATA,GAAqC,kBAATA,CAC9C,CAEA,MAAM8vD,GAA0BrsD,OAAwE,IAKxG,IAAIssD,IACJ,SAAWA,GAKPA,EAAsBA,EAAsB,WAAa,GAAK,UAK9DA,EAAsBA,EAAsB,aAAe,GAAK,YAKhEA,EAAsBA,EAAsB,cAAgB,IAAM,YACrE,EAhBD,CAgBGA,KAA0BA,GAAwB,CAAC,IA2BtD,SAASC,GAAkBziC,EAAMxgB,GASzB,OAAOwM,EAAO,IAAI02C,MAAS,CACvB1iC,OACA,CAACuiC,KAA0B,GAC5B/iD,EAEX,CACA,SAASmjD,GAAoBb,EAAO9hC,GAChC,OAAQ8hC,aAAiBY,OACrBH,MAA2BT,IAClB,MAAR9hC,MAAmB8hC,EAAM9hC,KAAOA,GACzC,CAgBA,MAAM4iC,GAAqB,SACrBC,GAA2B,CAC7BC,WAAW,EACXC,QAAQ,EACR7X,OAAO,EACP8X,KAAK,GAGHC,GAAiB,sBAQvB,SAASC,GAAeC,EAAUC,GAC9B,MAAMp6C,EAAUgD,EAAO,CAAC,EAAG62C,GAA0BO,GAE/CC,EAAQ,GAEd,IAAIC,EAAUt6C,EAAQkiC,MAAQ,IAAM,GAEpC,MAAMl0C,EAAO,GACb,IAAK,MAAM6nD,KAAWsE,EAAU,CAE5B,MAAMI,EAAgB1E,EAAQ9pD,OAAS,GAAK,CAAC,IAEzCiU,EAAQ+5C,SAAWlE,EAAQ9pD,SAC3BuuD,GAAW,KACf,IAAK,IAAIE,EAAa,EAAGA,EAAa3E,EAAQ9pD,OAAQyuD,IAAc,CAChE,MAAMC,EAAQ5E,EAAQ2E,GAEtB,IAAIE,EAAkB,IACjB16C,EAAQ85C,UAAY,IAA0C,GACnE,GAAmB,IAAfW,EAAMzjC,KAEDwjC,IACDF,GAAW,KACfA,GAAWG,EAAMnxD,MAAM6K,QAAQ8lD,GAAgB,QAC/CS,GAAmB,QAElB,GAAmB,IAAfD,EAAMzjC,KAAkC,CAC7C,MAAM,MAAE1tB,EAAK,WAAEqxD,EAAU,SAAEC,EAAQ,OAAEC,GAAWJ,EAChDzsD,EAAKK,KAAK,CACN5E,KAAMH,EACNqxD,aACAC,aAEJ,MAAME,EAAKD,GAAkBjB,GAE7B,GAAIkB,IAAOlB,GAAoB,CAC3Bc,GAAmB,GAEnB,IACI,IAAIK,OAAO,IAAID,KACnB,CACA,MAAO3hD,GACH,MAAM,IAAIugD,MAAM,oCAAoCpwD,OAAWwxD,OAC3D3hD,EAAI0jC,QACZ,CACJ,CAEA,IAAIme,EAAaL,EAAa,OAAOG,YAAaA,QAAW,IAAIA,KAE5DN,IACDQ,EAGIJ,GAAY/E,EAAQ9pD,OAAS,EACvB,OAAOivD,KACP,IAAMA,GAChBJ,IACAI,GAAc,KAClBV,GAAWU,EACXN,GAAmB,GACfE,IACAF,IAAoB,GACpBC,IACAD,IAAoB,IACb,OAAPI,IACAJ,IAAoB,GAC5B,CACAH,EAAclsD,KAAKqsD,EACvB,CAGAL,EAAMhsD,KAAKksD,EACf,CAEA,GAAIv6C,EAAQ+5C,QAAU/5C,EAAQg6C,IAAK,CAC/B,MAAMluD,EAAIuuD,EAAMtuD,OAAS,EACzBsuD,EAAMvuD,GAAGuuD,EAAMvuD,GAAGC,OAAS,IAAM,iBACrC,CAEKiU,EAAQ+5C,SACTO,GAAW,MACXt6C,EAAQg6C,IACRM,GAAW,IAENt6C,EAAQ+5C,SAAWO,EAAQW,SAAS,OACzCX,GAAW,WACf,MAAMQ,EAAK,IAAIC,OAAOT,EAASt6C,EAAQ85C,UAAY,GAAK,KACxD,SAAS1L,EAAM5/B,GACX,MAAMxR,EAAQwR,EAAKxR,MAAM89C,GACnBtkD,EAAS,CAAC,EAChB,IAAKwG,EACD,OAAO,KACX,IAAK,IAAIlR,EAAI,EAAGA,EAAIkR,EAAMjR,OAAQD,IAAK,CACnC,MAAMxC,EAAQ0T,EAAMlR,IAAM,GACpBO,EAAM2B,EAAKlC,EAAI,GACrB0K,EAAOnK,EAAI5C,MAAQH,GAAS+C,EAAIsuD,WAAarxD,EAAM2J,MAAM,KAAO3J,CACpE,CACA,OAAOkN,CACX,CACA,SAAS0kD,EAAU1kD,GACf,IAAIgY,EAAO,GAEP2sC,GAAuB,EAC3B,IAAK,MAAMtF,KAAWsE,EAAU,CACvBgB,GAAyB3sC,EAAKysC,SAAS,OACxCzsC,GAAQ,KACZ2sC,GAAuB,EACvB,IAAK,MAAMV,KAAS5E,EAChB,GAAmB,IAAf4E,EAAMzjC,KACNxI,GAAQisC,EAAMnxD,WAEb,GAAmB,IAAfmxD,EAAMzjC,KAAkC,CAC7C,MAAM,MAAE1tB,EAAK,WAAEqxD,EAAU,SAAEC,GAAaH,EAClCjJ,EAAQloD,KAASkN,EAASA,EAAOlN,GAAS,GAChD,GAAIsE,EAAQ4jD,KAAWmJ,EACnB,MAAM,IAAIjB,MAAM,mBAAmBpwD,8DAEvC,MAAM0P,EAAOpL,EAAQ4jD,GACfA,EAAMp9C,KAAK,KACXo9C,EACN,IAAKx4C,EAAM,CACP,IAAI4hD,EAYA,MAAM,IAAIlB,MAAM,2BAA2BpwD,MAVvCusD,EAAQ9pD,OAAS,IAEbyiB,EAAKysC,SAAS,KACdzsC,EAAOA,EAAKrf,MAAM,GAAI,GAGtBgsD,GAAuB,EAKvC,CACA3sC,GAAQxV,CACZ,CAER,CAEA,OAAOwV,GAAQ,GACnB,CACA,MAAO,CACHssC,KACAT,QACArsD,OACAogD,QACA8M,YAER,CAUA,SAASE,GAAkBlnD,EAAGwsB,GAC1B,IAAI50B,EAAI,EACR,MAAOA,EAAIoI,EAAEnI,QAAUD,EAAI40B,EAAE30B,OAAQ,CACjC,MAAMkpB,EAAOyL,EAAE50B,GAAKoI,EAAEpI,GAEtB,GAAImpB,EACA,OAAOA,EACXnpB,GACJ,CAGA,OAAIoI,EAAEnI,OAAS20B,EAAE30B,OACO,IAAbmI,EAAEnI,QAAyB,KAATmI,EAAE,IACpB,EACD,EAEDA,EAAEnI,OAAS20B,EAAE30B,OACE,IAAb20B,EAAE30B,QAAyB,KAAT20B,EAAE,GACrB,GACC,EAEJ,CACX,CAQA,SAAS26B,GAAuBnnD,EAAGwsB,GAC/B,IAAI50B,EAAI,EACR,MAAMwvD,EAASpnD,EAAEmmD,MACXkB,EAAS76B,EAAE25B,MACjB,MAAOvuD,EAAIwvD,EAAOvvD,QAAUD,EAAIyvD,EAAOxvD,OAAQ,CAC3C,MAAMyvD,EAAOJ,GAAkBE,EAAOxvD,GAAIyvD,EAAOzvD,IAEjD,GAAI0vD,EACA,OAAOA,EACX1vD,GACJ,CACA,GAAgD,IAA5CqL,KAAKuE,IAAI6/C,EAAOxvD,OAASuvD,EAAOvvD,QAAe,CAC/C,GAAI0vD,GAAoBH,GACpB,OAAO,EACX,GAAIG,GAAoBF,GACpB,OAAQ,CAChB,CAEA,OAAOA,EAAOxvD,OAASuvD,EAAOvvD,MAOlC,CAOA,SAAS0vD,GAAoBpB,GACzB,MAAMqB,EAAOrB,EAAMA,EAAMtuD,OAAS,GAClC,OAAOsuD,EAAMtuD,OAAS,GAAK2vD,EAAKA,EAAK3vD,OAAS,GAAK,CACvD,CAEA,MAAM4vD,GAAa,CACf3kC,KAAM,EACN1tB,MAAO,IAELsyD,GAAiB,eAIvB,SAASC,GAAartC,GAClB,IAAKA,EACD,MAAO,CAAC,IACZ,GAAa,MAATA,EACA,MAAO,CAAC,CAACmtC,KACb,IAAKntC,EAAKwgC,WAAW,KACjB,MAAM,IAAI0K,MAEJ,iBAAiBlrC,MAG3B,SAASstC,EAAMjf,GACX,MAAM,IAAI6c,MAAM,QAAQ3Z,OAAWgc,OAAYlf,IACnD,CACA,IAAIkD,EAAQ,EACRic,EAAgBjc,EACpB,MAAMkc,EAAS,GAGf,IAAIpG,EACJ,SAASqG,IACDrG,GACAoG,EAAO5tD,KAAKwnD,GAChBA,EAAU,EACd,CAEA,IAEIsG,EAFArwD,EAAI,EAIJiwD,EAAS,GAETK,EAAW,GACf,SAASC,IACAN,IAES,IAAVhc,EACA8V,EAAQxnD,KAAK,CACT2oB,KAAM,EACN1tB,MAAOyyD,IAGI,IAAVhc,GACK,IAAVA,GACU,IAAVA,GACI8V,EAAQ9pD,OAAS,IAAe,MAATowD,GAAyB,MAATA,IACvCL,EAAM,uBAAuBC,iDACjClG,EAAQxnD,KAAK,CACT2oB,KAAM,EACN1tB,MAAOyyD,EACPlB,OAAQuB,EACRzB,WAAqB,MAATwB,GAAyB,MAATA,EAC5BvB,SAAmB,MAATuB,GAAyB,MAATA,KAI9BL,EAAM,mCAEVC,EAAS,GACb,CACA,SAASO,IACLP,GAAUI,CACd,CACA,MAAOrwD,EAAI0iB,EAAKziB,OAEZ,GADAowD,EAAO3tC,EAAK1iB,KACC,OAATqwD,GAA2B,IAAVpc,EAKrB,OAAQA,GACJ,KAAK,EACY,MAAToc,GACIJ,GACAM,IAEJH,KAEc,MAATC,GACLE,IACAtc,EAAQ,GAGRuc,IAEJ,MACJ,KAAK,EACDA,IACAvc,EAAQic,EACR,MACJ,KAAK,EACY,MAATG,EACApc,EAAQ,EAEH6b,GAAex9C,KAAK+9C,GACzBG,KAGAD,IACAtc,EAAQ,EAEK,MAAToc,GAAyB,MAATA,GAAyB,MAATA,GAChCrwD,KAER,MACJ,KAAK,EAMY,MAATqwD,EAEqC,MAAjCC,EAASA,EAASrwD,OAAS,GAC3BqwD,EAAWA,EAASjtD,MAAM,GAAI,GAAKgtD,EAEnCpc,EAAQ,EAGZqc,GAAYD,EAEhB,MACJ,KAAK,EAEDE,IACAtc,EAAQ,EAEK,MAAToc,GAAyB,MAATA,GAAyB,MAATA,GAChCrwD,IACJswD,EAAW,GACX,MACJ,QACIN,EAAM,iBACN,WAnEJE,EAAgBjc,EAChBA,EAAQ,EA0EhB,OALc,IAAVA,GACA+b,EAAM,uCAAuCC,MACjDM,IACAH,IAEOD,CACX,CAEA,SAASM,GAAyBC,EAAQ7jD,EAAQqH,GAC9C,MAAMy8C,EAASvC,GAAe2B,GAAaW,EAAOhuC,MAAOxO,GAUzD,MAAM08C,EAAU15C,EAAOy5C,EAAQ,CAC3BD,SACA7jD,SAEArI,SAAU,GACVqsD,MAAO,KASX,OAPIhkD,IAIK+jD,EAAQF,OAAOnH,WAAa18C,EAAO6jD,OAAOnH,SAC3C18C,EAAOrI,SAASjC,KAAKquD,GAEtBA,CACX,CASA,SAASE,GAAoBC,EAAQC,GAEjC,MAAMC,EAAW,GACXC,EAAa,IAAIvuD,IAEvB,SAASwuD,EAAiBxzD,GACtB,OAAOuzD,EAAWnuD,IAAIpF,EAC1B,CACA,SAASyzD,EAASV,EAAQ7jD,EAAQwkD,GAE9B,MAAMC,GAAaD,EACbE,EAAuBC,GAAqBd,GAKlDa,EAAqBhI,QAAU8H,GAAkBA,EAAeX,OAChE,MAAMx8C,EAAUu9C,GAAaT,EAAeN,GAEtCgB,EAAoB,CAACH,GAC3B,GAAI,UAAWb,EAAQ,CACnB,MAAMiB,EAAkC,kBAAjBjB,EAAOG,MAAqB,CAACH,EAAOG,OAASH,EAAOG,MAC3E,IAAK,MAAMA,KAASc,EAChBD,EAAkBnvD,KAGlBivD,GAAqBt6C,EAAO,CAAC,EAAGq6C,EAAsB,CAGlDK,WAAYP,EACNA,EAAeX,OAAOkB,WACtBL,EAAqBK,WAC3BlvC,KAAMmuC,EAENtH,QAAS8H,EACHA,EAAeX,OACfa,KAKlB,CACA,IAAIX,EACAiB,EACJ,IAAK,MAAMC,KAAoBJ,EAAmB,CAC9C,MAAM,KAAEhvC,GAASovC,EAIjB,GAAIjlD,GAAsB,MAAZ6V,EAAK,GAAY,CAC3B,MAAMqvC,EAAallD,EAAO6jD,OAAOhuC,KAC3BsvC,EAAwD,MAAtCD,EAAWA,EAAW9xD,OAAS,GAAa,GAAK,IACzE6xD,EAAiBpvC,KACb7V,EAAO6jD,OAAOhuC,MAAQA,GAAQsvC,EAAkBtvC,EACxD,CAoCA,GA9BAkuC,EAAUH,GAAyBqB,EAAkBjlD,EAAQqH,GAKzDm9C,EACAA,EAAeR,MAAMtuD,KAAKquD,IAO1BiB,EAAkBA,GAAmBjB,EACjCiB,IAAoBjB,GACpBiB,EAAgBhB,MAAMtuD,KAAKquD,GAG3BU,GAAaZ,EAAO/yD,OAASs0D,GAAcrB,IAI3CsB,EAAYxB,EAAO/yD,OAKvBw0D,GAAYvB,IACZwB,EAAcxB,GAEdW,EAAqB/sD,SAAU,CAC/B,MAAMA,EAAW+sD,EAAqB/sD,SACtC,IAAK,IAAIxE,EAAI,EAAGA,EAAIwE,EAASvE,OAAQD,IACjCoxD,EAAS5sD,EAASxE,GAAI4wD,EAASS,GAAkBA,EAAe7sD,SAASxE,GAEjF,CAGAqxD,EAAiBA,GAAkBT,CAKvC,CACA,OAAOiB,EACD,KAEEK,EAAYL,EAAgB,EAE9BlL,CACV,CACA,SAASuL,EAAYG,GACjB,GAAI7E,GAAY6E,GAAa,CACzB,MAAMzB,EAAUM,EAAWnuD,IAAIsvD,GAC3BzB,IACAM,EAAW3F,OAAO8G,GAClBpB,EAAS/tD,OAAO+tD,EAAS9tD,QAAQytD,GAAU,GAC3CA,EAAQpsD,SAASd,QAAQwuD,GACzBtB,EAAQC,MAAMntD,QAAQwuD,GAE9B,KACK,CACD,MAAM/7C,EAAQ86C,EAAS9tD,QAAQkvD,GAC3Bl8C,GAAS,IACT86C,EAAS/tD,OAAOiT,EAAO,GACnBk8C,EAAW3B,OAAO/yD,MAClBuzD,EAAW3F,OAAO8G,EAAW3B,OAAO/yD,MACxC00D,EAAW7tD,SAASd,QAAQwuD,GAC5BG,EAAWxB,MAAMntD,QAAQwuD,GAEjC,CACJ,CACA,SAASI,IACL,OAAOrB,CACX,CACA,SAASmB,EAAcxB,GACnB,MAAMz6C,EAAQo8C,GAAmB3B,EAASK,GAC1CA,EAAS/tD,OAAOiT,EAAO,EAAGy6C,GAEtBA,EAAQF,OAAO/yD,OAASs0D,GAAcrB,IACtCM,EAAWluD,IAAI4tD,EAAQF,OAAO/yD,KAAMizD,EAC5C,CACA,SAAS4B,EAAQztD,EAAUwjD,GACvB,IAAIqI,EAEAluC,EACA/kB,EAFA+M,EAAS,CAAC,EAGd,GAAI,SAAU3F,GAAYA,EAASpH,KAAM,CAErC,GADAizD,EAAUM,EAAWnuD,IAAIgC,EAASpH,OAC7BizD,EACD,MAAMjD,GAAkB,EAAsC,CAC1D5oD,aAGJ,EAMJpH,EAAOizD,EAAQF,OAAO/yD,KACtB+M,EAASwM,EAETu7C,GAAmBlK,EAAgB79C,OAGnCkmD,EAAQ1uD,KACHE,QAAOswD,IAAMA,EAAE5D,WACf6D,OAAO/B,EAAQ/jD,OAAS+jD,EAAQ/jD,OAAO3K,KAAKE,QAAOswD,GAAKA,EAAE5D,WAAY,IACtExrD,KAAIovD,GAAKA,EAAE/0D,QAGhBoH,EAAS2F,QACL+nD,GAAmB1tD,EAAS2F,OAAQkmD,EAAQ1uD,KAAKoB,KAAIovD,GAAKA,EAAE/0D,SAEhE+kB,EAAOkuC,EAAQxB,UAAU1kD,EAC7B,MACK,GAAqB,MAAjB3F,EAAS2d,KAGdA,EAAO3d,EAAS2d,KAIhBkuC,EAAUK,EAAS9wC,MAAKoZ,GAAKA,EAAEy1B,GAAG18C,KAAKoQ,KAEnCkuC,IAEAlmD,EAASkmD,EAAQtO,MAAM5/B,GACvB/kB,EAAOizD,EAAQF,OAAO/yD,UAIzB,CAKD,GAHAizD,EAAUrI,EAAgB5qD,KACpBuzD,EAAWnuD,IAAIwlD,EAAgB5qD,MAC/BszD,EAAS9wC,MAAKoZ,GAAKA,EAAEy1B,GAAG18C,KAAKi2C,EAAgB7lC,SAC9CkuC,EACD,MAAMjD,GAAkB,EAAsC,CAC1D5oD,WACAwjD,oBAER5qD,EAAOizD,EAAQF,OAAO/yD,KAGtB+M,EAASwM,EAAO,CAAC,EAAGqxC,EAAgB79C,OAAQ3F,EAAS2F,QACrDgY,EAAOkuC,EAAQxB,UAAU1kD,EAC7B,CACA,MAAMy+C,EAAU,GAChB,IAAIyJ,EAAgBhC,EACpB,MAAOgC,EAEHzJ,EAAQ1yC,QAAQm8C,EAAclC,QAC9BkC,EAAgBA,EAAc/lD,OAElC,MAAO,CACHlP,OACA+kB,OACAhY,SACAy+C,UACAc,KAAM4I,GAAgB1J,GAE9B,CAGA,SAAS2J,IACL7B,EAAShxD,OAAS,EAClBixD,EAAW6B,OACf,CACA,OAlOA/B,EAAgBS,GAAa,CAAExD,QAAQ,EAAOC,KAAK,EAAMF,WAAW,GAASgD,GA6N7ED,EAAOrtD,SAAQ6pD,GAAS6D,EAAS7D,KAK1B,CACH6D,WACAoB,UACAN,cACAY,cACAR,YACAnB,mBAER,CACA,SAASsB,GAAmB/nD,EAAQxI,GAChC,MAAMw0B,EAAY,CAAC,EACnB,IAAK,MAAMn2B,KAAO2B,EACV3B,KAAOmK,IACPgsB,EAAUn2B,GAAOmK,EAAOnK,IAEhC,OAAOm2B,CACX,CAOA,SAAS86B,GAAqBd,GAC1B,MAAMsC,EAAa,CACftwC,KAAMguC,EAAOhuC,KACbuwC,SAAUvC,EAAOuC,SACjBt1D,KAAM+yD,EAAO/yD,KACbssD,KAAMyG,EAAOzG,MAAQ,CAAC,EACtBV,QAASmH,EAAOnH,QAChB2J,YAAaxC,EAAOwC,YACpBnzD,MAAOozD,GAAqBzC,GAC5BlsD,SAAUksD,EAAOlsD,UAAY,GAC7B4uD,UAAW,CAAC,EACZC,YAAa,IAAIC,IACjBC,aAAc,IAAID,IAClBE,eAAgB,CAAC,EAGjB5B,WAAY,eAAgBlB,EACtBA,EAAOkB,YAAc,KACrBlB,EAAOtK,WAAa,CAAEI,QAASkK,EAAOtK,YAQhD,OAHA5nD,OAAO8B,eAAe0yD,EAAY,OAAQ,CACtCx1D,MAAO,CAAC,IAELw1D,CACX,CAMA,SAASG,GAAqBzC,GAC1B,MAAM+C,EAAc,CAAC,EAEf1zD,EAAQ2wD,EAAO3wD,QAAS,EAC9B,GAAI,cAAe2wD,EACf+C,EAAYjN,QAAUzmD,OAKtB,IAAK,MAAMpC,KAAQ+yD,EAAOkB,WACtB6B,EAAY91D,GAAyB,kBAAVoC,EAAqBA,EAAMpC,GAAQoC,EAEtE,OAAO0zD,CACX,CAKA,SAASxB,GAAcvB,GACnB,MAAOA,EAAQ,CACX,GAAIA,EAAOA,OAAOnH,QACd,OAAO,EACXmH,EAASA,EAAO7jD,MACpB,CACA,OAAO,CACX,CAMA,SAASgmD,GAAgB1J,GACrB,OAAOA,EAAQuK,QAAO,CAACzJ,EAAMyG,IAAWx5C,EAAO+yC,EAAMyG,EAAOzG,OAAO,CAAC,EACxE,CACA,SAASwH,GAAaj8B,EAAUm+B,GAC5B,MAAMz/C,EAAU,CAAC,EACjB,IAAK,MAAM3T,KAAOi1B,EACdthB,EAAQ3T,GAAOA,KAAOozD,EAAiBA,EAAepzD,GAAOi1B,EAASj1B,GAE1E,OAAO2T,CACX,CA0DA,SAASq+C,GAAmB3B,EAASK,GAEjC,IAAI2C,EAAQ,EACRC,EAAQ5C,EAAShxD,OACrB,MAAO2zD,IAAUC,EAAO,CACpB,MAAMC,EAAOF,EAAQC,GAAU,EACzBE,EAAYxE,GAAuBqB,EAASK,EAAS6C,IACvDC,EAAY,EACZF,EAAQC,EAGRF,EAAQE,EAAM,CAEtB,CAEA,MAAME,EAAoBC,GAAqBrD,GAQ/C,OAPIoD,IACAH,EAAQ5C,EAASiD,YAAYF,EAAmBH,EAAQ,IAMrDA,CACX,CACA,SAASI,GAAqBrD,GAC1B,IAAIuD,EAAWvD,EACf,MAAQuD,EAAWA,EAAStnD,OACxB,GAAIslD,GAAYgC,IACkC,IAA9C5E,GAAuBqB,EAASuD,GAChC,OAAOA,CAInB,CAQA,SAAShC,IAAY,OAAEzB,IACnB,SAAUA,EAAO/yD,MACZ+yD,EAAOkB,YAAcpzD,OAAO0D,KAAKwuD,EAAOkB,YAAY3xD,QACrDywD,EAAOuC,SACf,CAWA,SAAS3K,GAAW/iD,GAChB,MAAMijD,EAAQ,CAAC,EAGf,GAAe,KAAXjjD,GAA4B,MAAXA,EACjB,OAAOijD,EACX,MAAM4L,EAA6B,MAAd7uD,EAAO,GACtB8uD,GAAgBD,EAAe7uD,EAAOlC,MAAM,GAAKkC,GAAQ4B,MAAM,KACrE,IAAK,IAAInH,EAAI,EAAGA,EAAIq0D,EAAap0D,SAAUD,EAAG,CAE1C,MAAMs0D,EAAcD,EAAar0D,GAAGqI,QAAQ4+C,EAAS,KAE/CsN,EAAQD,EAAYnxD,QAAQ,KAC5B5C,EAAM0nD,EAAOsM,EAAQ,EAAID,EAAcA,EAAYjxD,MAAM,EAAGkxD,IAC5D/2D,EAAQ+2D,EAAQ,EAAI,KAAOtM,EAAOqM,EAAYjxD,MAAMkxD,EAAQ,IAClE,GAAIh0D,KAAOioD,EAAO,CAEd,IAAIgM,EAAehM,EAAMjoD,GACpBuB,EAAQ0yD,KACTA,EAAehM,EAAMjoD,GAAO,CAACi0D,IAEjCA,EAAajyD,KAAK/E,EACtB,MAEIgrD,EAAMjoD,GAAO/C,CAErB,CACA,OAAOgrD,CACX,CAUA,SAASO,GAAeP,GACpB,IAAIjjD,EAAS,GACb,IAAK,IAAIhF,KAAOioD,EAAO,CACnB,MAAMhrD,EAAQgrD,EAAMjoD,GAEpB,GADAA,EAAMunD,EAAevnD,GACR,MAAT/C,EAAe,MAED4L,IAAV5L,IACA+H,IAAWA,EAAOtF,OAAS,IAAM,IAAMM,GAE3C,QACJ,CAEA,MAAMk0D,EAAS3yD,EAAQtE,GACjBA,EAAM8F,KAAIqM,GAAKA,GAAKk4C,EAAiBl4C,KACrC,CAACnS,GAASqqD,EAAiBrqD,IACjCi3D,EAAO/wD,SAAQlG,SAGG4L,IAAV5L,IAEA+H,IAAWA,EAAOtF,OAAS,IAAM,IAAMM,EAC1B,MAAT/C,IACA+H,GAAU,IAAM/H,GACxB,GAER,CACA,OAAO+H,CACX,CASA,SAASmvD,GAAelM,GACpB,MAAMmM,EAAkB,CAAC,EACzB,IAAK,MAAMp0D,KAAOioD,EAAO,CACrB,MAAMhrD,EAAQgrD,EAAMjoD,QACN6I,IAAV5L,IACAm3D,EAAgBp0D,GAAOuB,EAAQtE,GACzBA,EAAM8F,KAAIqM,GAAW,MAALA,EAAY,KAAO,GAAKA,IAC/B,MAATnS,EACIA,EACA,GAAKA,EAEvB,CACA,OAAOm3D,CACX,CASA,MAAMC,GAAkBxzD,OAAkF,IAOpGyzD,GAAezzD,OAAuE,IAOtF0zD,GAAY1zD,OAA4D,IAOxE2zD,GAAmB3zD,OAAoE,IAOvF4zD,GAAwB5zD,OAA0E,IAKxG,SAAS6zD,KACL,IAAIC,EAAW,GACf,SAAS1nD,EAAI6H,GAET,OADA6/C,EAAS3yD,KAAK8S,GACP,KACH,MAAMrV,EAAIk1D,EAAS/xD,QAAQkS,GACvBrV,GAAK,GACLk1D,EAAShyD,OAAOlD,EAAG,EAAE,CAEjC,CACA,SAASs2C,IACL4e,EAAW,EACf,CACA,MAAO,CACH1nD,MACA2nD,KAAM,IAAMD,EAAS7xD,QACrBizC,QAER,CAyDA,SAAS8e,GAAiBC,EAAOnsD,EAAIqY,EAAMmvC,EAAQ/yD,EAAM23D,EAAiB5O,IAAMA,MAE5E,MAAM6O,EAAqB7E,IAEtBA,EAAO8C,eAAe71D,GAAQ+yD,EAAO8C,eAAe71D,IAAS,IAClE,MAAO,IAAM,IAAI63D,SAAQ,CAAChD,EAASiD,KAC/B,MAAM9zD,EAAQ+zD,KACI,IAAVA,EACAD,EAAO9H,GAAkB,EAAuC,CAC5DpsC,OACArY,QAGCwsD,aAAiB9H,MACtB6H,EAAOC,GAEFpI,GAAgBoI,GACrBD,EAAO9H,GAAkB,EAA8C,CACnEpsC,KAAMrY,EACNA,GAAIwsD,MAIJH,GAEA7E,EAAO8C,eAAe71D,KAAU43D,GACf,oBAAVG,GACPH,EAAmBhzD,KAAKmzD,GAE5BlD,IACJ,EAGEmD,EAAcL,GAAe,IAAMD,EAAM3zD,KAAKgvD,GAAUA,EAAO0C,UAAUz1D,GAAOuL,EAAIqY,EAAsF5f,KAChL,IAAIi0D,EAAYJ,QAAQhD,QAAQmD,GAC5BN,EAAMp1D,OAAS,IACf21D,EAAYA,EAAUC,KAAKl0D,IAsB/Bi0D,EAAUE,OAAMzoD,GAAOooD,EAAOpoD,IAAK,GAE3C,CAYA,SAAS0oD,GAAwB5M,EAAS6M,EAAW9sD,EAAIqY,EAAM+zC,EAAiB5O,IAAMA,MAClF,MAAMuP,EAAS,GACf,IAAK,MAAMvF,KAAUvH,EAAS,CACtB,EAIJ,IAAK,MAAMxrD,KAAQ+yD,EAAOkB,WAAY,CAClC,IAAIsE,EAAexF,EAAOkB,WAAWj0D,GAiCrC,GAAkB,qBAAdq4D,GAAqCtF,EAAO0C,UAAUz1D,GAE1D,GAAIwoD,EAAiB+P,GAAe,CAEhC,MAAMhiD,EAAUgiD,EAAaC,WAAaD,EACpCb,EAAQnhD,EAAQ8hD,GACtBX,GACIY,EAAO1zD,KAAK6yD,GAAiBC,EAAOnsD,EAAIqY,EAAMmvC,EAAQ/yD,EAAM23D,GACpE,KACK,CAED,IAAIc,EAAmBF,IACnB,EAIJD,EAAO1zD,MAAK,IAAM6zD,EAAiBP,MAAKQ,IACpC,IAAKA,EACD,MAAM,IAAIzI,MAAM,+BAA+BjwD,UAAa+yD,EAAOhuC,SACvE,MAAM4zC,EAAoBjQ,EAAWgQ,GAC/BA,EAAS7P,QACT6P,EAEN3F,EAAO6F,KAAK54D,GAAQ04D,EAGpB3F,EAAOkB,WAAWj0D,GAAQ24D,EAE1B,MAAMpiD,EAAUoiD,EAAkBH,WAAaG,EACzCjB,EAAQnhD,EAAQ8hD,GACtB,OAAQX,GACJD,GAAiBC,EAAOnsD,EAAIqY,EAAMmvC,EAAQ/yD,EAAM23D,EAAhDF,EAAkE,KAE9E,CACJ,CACJ,CACA,OAAOa,CACX,CAuCA,SAASO,GAAQz2D,GACb,MAAM02D,GAAS,QAAO3B,IAChB4B,GAAe,QAAO3B,IAG5B,MAAMxH,GAAQ,SAAS,KACnB,MAAMrkD,GAAK,QAAMnJ,EAAMmJ,IAavB,OAAOutD,EAAOjE,QAAQtpD,EAAG,IAEvBytD,GAAoB,SAAS,KAC/B,MAAM,QAAExN,GAAYoE,EAAM/vD,OACpB,OAAEyC,GAAWkpD,EACbyN,EAAezN,EAAQlpD,EAAS,GAChC42D,EAAiBH,EAAavN,QACpC,IAAKyN,IAAiBC,EAAe52D,OACjC,OAAQ,EACZ,MAAMkW,EAAQ0gD,EAAerrB,UAAU6d,EAAkBznD,KAAK,KAAMg1D,IACpE,GAAIzgD,GAAS,EACT,OAAOA,EAEX,MAAM2gD,EAAmBC,GAAgB5N,EAAQlpD,EAAS,IAC1D,OAEAA,EAAS,GAIL82D,GAAgBH,KAAkBE,GAElCD,EAAeA,EAAe52D,OAAS,GAAGyiB,OAASo0C,EACjDD,EAAerrB,UAAU6d,EAAkBznD,KAAK,KAAMunD,EAAQlpD,EAAS,KACvEkW,CAAM,IAEV68B,GAAW,SAAS,IAAM2jB,EAAkBn5D,OAAS,GACvDw5D,GAAeN,EAAahsD,OAAQ6iD,EAAM/vD,MAAMkN,UAC9CusD,GAAgB,SAAS,IAAMN,EAAkBn5D,OAAS,GAC5Dm5D,EAAkBn5D,QAAUk5D,EAAavN,QAAQlpD,OAAS,GAC1DqpD,EAA0BoN,EAAahsD,OAAQ6iD,EAAM/vD,MAAMkN,UAC/D,SAASwsD,EAASp0D,EAAI,CAAC,GACnB,GAAIq0D,GAAWr0D,GAAI,CACf,MAAMilC,EAAI0uB,GAAO,QAAM12D,EAAMsI,SAAW,UAAY,SAAQ,QAAMtI,EAAMmJ,KAEtE4sD,MAAMnP,GAMR,OALI5mD,EAAMq3D,gBACc,qBAAbl5D,UACP,wBAAyBA,UACzBA,SAASm5D,qBAAoB,IAAMtvB,IAEhCA,CACX,CACA,OAAOytB,QAAQhD,SACnB,CA4BA,MAAO,CACHjF,QACApoD,MAAM,SAAS,IAAMooD,EAAM/vD,MAAM2H,OACjC6tC,WACAikB,gBACAC,WAER,CACA,SAASI,GAAkBC,GACvB,OAAyB,IAAlBA,EAAOt3D,OAAes3D,EAAO,GAAKA,CAC7C,CACA,MAAMC,IAA+B,QAAgB,CACjD75D,KAAM,aACN85D,aAAc,CAAEC,KAAM,GACtB33D,MAAO,CACHmJ,GAAI,CACAgiB,KAAM,CAAClZ,OAAQxT,QACfm5D,UAAU,GAEdtvD,QAASuvD,QACTC,YAAa7lD,OAEb8lD,iBAAkB9lD,OAClButC,OAAQqY,QACRG,iBAAkB,CACd7sC,KAAMlZ,OACNw0C,QAAS,SAGjBgQ,WACA,KAAAwB,CAAMj4D,GAAO,MAAEk4D,IACX,MAAMC,GAAO,QAAS1B,GAAQz2D,KACxB,QAAEmU,IAAY,QAAO4gD,IACrBqD,GAAU,SAAS,KAAM,CAC3B,CAACC,GAAar4D,EAAM83D,YAAa3jD,EAAQmkD,gBAAiB,uBAAwBH,EAAKllB,SAMvF,CAAColB,GAAar4D,EAAM+3D,iBAAkB5jD,EAAQokD,qBAAsB,6BAA8BJ,EAAKjB,kBAE3G,MAAO,KACH,MAAMzyD,EAAWyzD,EAAMzR,SAAW8Q,GAAkBW,EAAMzR,QAAQ0R,IAClE,OAAOn4D,EAAMw/C,OACP/6C,GACA,IAAA+zD,GAAE,IAAK,CACL,eAAgBL,EAAKjB,cACfl3D,EAAMg4D,iBACN,KACN5yD,KAAM+yD,EAAK/yD,KAGXusB,QAASwmC,EAAKhB,SACdsB,MAAOL,EAAQ36D,OAChBgH,EAAS,CAExB,IAOEi0D,GAAajB,GACnB,SAASL,GAAWr0D,GAEhB,KAAIA,EAAE85B,SAAW95B,EAAE45B,QAAU55B,EAAE65B,SAAW75B,EAAE25B,YAGxC35B,EAAE41D,wBAGWtvD,IAAbtG,EAAE8oB,QAAqC,IAAb9oB,EAAE8oB,QAAhC,CAIA,GAAI9oB,EAAE61D,eAAiB71D,EAAE61D,cAAcp2C,aAAc,CAEjD,MAAMziB,EAASgD,EAAE61D,cAAcp2C,aAAa,UAC5C,GAAI,cAAcjQ,KAAKxS,GACnB,MACR,CAIA,OAFIgD,EAAEioB,gBACFjoB,EAAEioB,kBACC,CAZG,CAad,CACA,SAASisC,GAAe4B,EAAOC,GAC3B,IAAK,MAAMt4D,KAAOs4D,EAAO,CACrB,MAAMC,EAAaD,EAAMt4D,GACnBw4D,EAAaH,EAAMr4D,GACzB,GAA0B,kBAAfu4D,GACP,GAAIA,IAAeC,EACf,OAAO,OAGX,IAAKj3D,EAAQi3D,IACTA,EAAW94D,SAAW64D,EAAW74D,QACjC64D,EAAWE,MAAK,CAACx7D,EAAOwC,IAAMxC,IAAUu7D,EAAW/4D,KACnD,OAAO,CAEnB,CACA,OAAO,CACX,CAKA,SAAS+2D,GAAgBrG,GACrB,OAAOA,EAAUA,EAAOnH,QAAUmH,EAAOnH,QAAQ7mC,KAAOguC,EAAOhuC,KAAQ,EAC3E,CAOA,MAAM01C,GAAe,CAACa,EAAWC,EAAaC,IAA8B,MAAbF,EACzDA,EACe,MAAfC,EACIA,EACAC,EAEJC,IAA+B,QAAgB,CACjDz7D,KAAM,aAEN07D,cAAc,EACdt5D,MAAO,CACHpC,KAAM,CACFutB,KAAMlZ,OACNw0C,QAAS,WAEb+G,MAAO/uD,QAIXi5D,aAAc,CAAEC,KAAM,GACtB,KAAAM,CAAMj4D,GAAO,MAAE0lD,EAAK,MAAEwS,IAElB,MAAMqB,GAAgB,QAAOtE,IACvBuE,GAAiB,SAAS,IAAMx5D,EAAMwtD,OAAS+L,EAAc97D,QAC7Dg8D,GAAgB,QAAO3E,GAAc,GAGrCvW,GAAQ,SAAS,KACnB,IAAImb,GAAe,QAAMD,GACzB,MAAM,QAAErQ,GAAYoQ,EAAe/7D,MACnC,IAAIk8D,EACJ,OAAQA,EAAevQ,EAAQsQ,MAC1BC,EAAa9H,WACd6H,IAEJ,OAAOA,CAAY,IAEjBE,GAAkB,SAAS,IAAMJ,EAAe/7D,MAAM2rD,QAAQ7K,EAAM9gD,UAC1E,QAAQq3D,IAAc,SAAS,IAAMvW,EAAM9gD,MAAQ,MACnD,QAAQo3D,GAAiB+E,IACzB,QAAQ3E,GAAuBuE,GAC/B,MAAMK,GAAU,UAiChB,OA9BA,SAAM,IAAM,CAACA,EAAQp8D,MAAOm8D,EAAgBn8D,MAAOuC,EAAMpC,QAAO,EAAEk8D,EAAU3wD,EAAIvL,IAAQm8D,EAAav4C,EAAMw4C,MAEnG7wD,IAGAA,EAAGkqD,UAAUz1D,GAAQk8D,EAOjBt4C,GAAQA,IAASrY,GAAM2wD,GAAYA,IAAaC,IAC3C5wD,EAAGmqD,YAAY/jD,OAChBpG,EAAGmqD,YAAc9xC,EAAK8xC,aAErBnqD,EAAGqqD,aAAajkD,OACjBpG,EAAGqqD,aAAehyC,EAAKgyC,iBAK/BsG,IACA3wD,GAGEqY,GAAS8nC,EAAkBngD,EAAIqY,IAAUu4C,IAC1C5wD,EAAGsqD,eAAe71D,IAAS,IAAI+F,SAAQkD,GAAYA,EAASizD,IACjE,GACD,CAAEG,MAAO,SACL,KACH,MAAMzM,EAAQgM,EAAe/7D,MAGvBy8D,EAAcl6D,EAAMpC,KACpB+7D,EAAeC,EAAgBn8D,MAC/B08D,EAAgBR,GAAgBA,EAAa9H,WAAWqI,GAC9D,IAAKC,EACD,OAAOC,GAAclC,EAAMzR,QAAS,CAAE4T,UAAWF,EAAe3M,UAGpE,MAAM8M,EAAmBX,EAAa35D,MAAMk6D,GACtCK,EAAaD,GACQ,IAArBA,EACI9M,EAAM7iD,OACsB,oBAArB2vD,EACHA,EAAiB9M,GACjB8M,EACR,KACAE,EAAmBC,IAEjBA,EAAMpU,UAAUqU,cAChBf,EAAatG,UAAU6G,GAAe,KAC1C,EAEE7T,GAAY,IAAAmS,GAAE2B,EAAehjD,EAAO,CAAC,EAAGojD,EAAY7U,EAAO,CAC7D8U,mBACAG,IAAKd,KAoBT,OAGAO,GAAclC,EAAMzR,QAAS,CAAE4T,UAAWhU,EAAWmH,WACjDnH,CAAU,CAEtB,IAEJ,SAAS+T,GAAc3tD,EAAM6J,GACzB,IAAK7J,EACD,OAAO,KACX,MAAMmuD,EAAcnuD,EAAK6J,GACzB,OAA8B,IAAvBskD,EAAY16D,OAAe06D,EAAY,GAAKA,CACvD,CAMA,MAAMC,GAAaxB,GAmenB,SAASyB,GAAa3mD,GAClB,MAAM08C,EAAUE,GAAoB58C,EAAQ68C,OAAQ78C,GAC9C4mD,EAAe5mD,EAAQo0C,YAAcA,GACrCyS,EAAmB7mD,EAAQ60C,gBAAkBA,GAC7CsE,EAAgBn5C,EAAQrO,QAI9B,MAAMm1D,EAAe/F,KACfgG,EAAsBhG,KACtBiG,EAAcjG,KACdyB,GAAe,QAAW1M,GAChC,IAAImR,EAAkBnR,EAElB9D,GAAahyC,EAAQknD,gBAAkB,sBAAuBv1D,UAC9DA,QAAQw1D,kBAAoB,UAEhC,MAAMC,EAAkB7U,EAAc7kD,KAAK,MAAM25D,GAAc,GAAKA,IAC9DC,EAAe/U,EAAc7kD,KAAK,KAAMomD,GACxCyT,EAENhV,EAAc7kD,KAAK,KAAMqmD,GACzB,SAASmJ,EAASsK,EAAenO,GAC7B,IAAI1gD,EACA6jD,EAWJ,OAVIlD,GAAYkO,IACZ7uD,EAAS+jD,EAAQO,iBAAiBuK,GAIlChL,EAASnD,GAGTmD,EAASgL,EAEN9K,EAAQQ,SAASV,EAAQ7jD,EACpC,CACA,SAASqlD,EAAYv0D,GACjB,MAAMg+D,EAAgB/K,EAAQO,iBAAiBxzD,GAC3Cg+D,GACA/K,EAAQsB,YAAYyJ,EAK5B,CACA,SAASrJ,IACL,OAAO1B,EAAQ0B,YAAYhvD,KAAIs4D,GAAgBA,EAAalL,QAChE,CACA,SAASmL,EAASl+D,GACd,QAASizD,EAAQO,iBAAiBxzD,EACtC,CACA,SAAS60D,EAAQsJ,EAAavT,GAK1B,GADAA,EAAkBrxC,EAAO,CAAC,EAAGqxC,GAAmBmO,EAAal5D,OAClC,kBAAhBs+D,EAA0B,CACjC,MAAMC,EAAqB1T,EAASyS,EAAcgB,EAAavT,EAAgB7lC,MACzEg3C,EAAe9I,EAAQ4B,QAAQ,CAAE9vC,KAAMq5C,EAAmBr5C,MAAQ6lC,GAClEpjD,EAAOkoD,EAAc7C,WAAWuR,EAAmBlT,UASzD,OAAO3xC,EAAO6kD,EAAoBrC,EAAc,CAC5ChvD,OAAQ+wD,EAAa/B,EAAahvD,QAClC1F,KAAMijD,EAAO8T,EAAmB/2D,MAChCklD,oBAAgB9gD,EAChBjE,QAER,CAKA,IAAI62D,EAEJ,GAAwB,MAApBF,EAAYp5C,KAQZs5C,EAAkB9kD,EAAO,CAAC,EAAG4kD,EAAa,CACtCp5C,KAAM2lC,EAASyS,EAAcgB,EAAYp5C,KAAM6lC,EAAgB7lC,MAAMA,WAGxE,CAED,MAAMu5C,EAAe/kD,EAAO,CAAC,EAAG4kD,EAAYpxD,QAC5C,IAAK,MAAMnK,KAAO07D,EACW,MAArBA,EAAa17D,WACN07D,EAAa17D,GAI5By7D,EAAkB9kD,EAAO,CAAC,EAAG4kD,EAAa,CACtCpxD,OAAQ8wD,EAAaS,KAIzB1T,EAAgB79C,OAAS8wD,EAAajT,EAAgB79C,OAC1D,CACA,MAAMgvD,EAAe9I,EAAQ4B,QAAQwJ,EAAiBzT,GAChDvjD,EAAO82D,EAAY92D,MAAQ,GAMjC00D,EAAahvD,OAAS4wD,EAAgBG,EAAa/B,EAAahvD,SAChE,MAAMm+C,EAAWC,EAAaiS,EAAkB7jD,EAAO,CAAC,EAAG4kD,EAAa,CACpE92D,KAAM4iD,EAAW5iD,GACjB0d,KAAMg3C,EAAah3C,QAEjBvd,EAAOkoD,EAAc7C,WAAW3B,GAStC,OAAO3xC,EAAO,CACV2xC,WAGA7jD,OACAwjD,MAMAuS,IAAqBhS,GACf2L,GAAeoH,EAAYtT,OAC1BsT,EAAYtT,OAAS,CAAC,GAC9BkR,EAAc,CACbxP,oBAAgB9gD,EAChBjE,QAER,CACA,SAAS+2D,EAAiBhzD,GACtB,MAAqB,kBAAPA,EACRm/C,EAASyS,EAAc5xD,EAAIwtD,EAAal5D,MAAMklB,MAC9CxL,EAAO,CAAC,EAAGhO,EACrB,CACA,SAASizD,EAAwBjzD,EAAIqY,GACjC,GAAI45C,IAAoBjyD,EACpB,OAAOykD,GAAkB,EAAyC,CAC9DpsC,OACArY,MAGZ,CACA,SAAS3G,EAAK2G,GACV,OAAOkzD,EAAiBlzD,EAC5B,CACA,SAASb,EAAQa,GACb,OAAO3G,EAAK2U,EAAOglD,EAAiBhzD,GAAK,CAAEb,SAAS,IACxD,CACA,SAASg0D,EAAqBnzD,GAC1B,MAAMozD,EAAcpzD,EAAGigD,QAAQjgD,EAAGigD,QAAQlpD,OAAS,GACnD,GAAIq8D,GAAeA,EAAYrJ,SAAU,CACrC,MAAM,SAAEA,GAAaqJ,EACrB,IAAIC,EAAwC,oBAAbtJ,EAA0BA,EAAS/pD,GAAM+pD,EAiBxE,MAhBiC,kBAAtBsJ,IACPA,EACIA,EAAkBvvD,SAAS,MAAQuvD,EAAkBvvD,SAAS,KACvDuvD,EAAoBL,EAAiBK,GAEpC,CAAE75C,KAAM65C,GAGpBA,EAAkB7xD,OAAS,CAAC,GAQzBwM,EAAO,CACVsxC,MAAOt/C,EAAGs/C,MACVxjD,KAAMkE,EAAGlE,KAET0F,OAAkC,MAA1B6xD,EAAkB75C,KAAe,CAAC,EAAIxZ,EAAGwB,QAClD6xD,EACP,CACJ,CACA,SAASH,EAAiBlzD,EAAIghD,GAC1B,MAAMsS,EAAkBrB,EAAkB3I,EAAQtpD,GAC5CqY,EAAOm1C,EAAal5D,MACpB6Y,EAAOnN,EAAG+qC,MACV9Z,EAAQjxB,EAAGixB,MAEX9xB,GAAyB,IAAfa,EAAGb,QACbo0D,EAAiBJ,EAAqBG,GAC5C,GAAIC,EACA,OAAOL,EAAiBllD,EAAOglD,EAAiBO,GAAiB,CAC7DxoB,MAAiC,kBAAnBwoB,EACRvlD,EAAO,CAAC,EAAGb,EAAMomD,EAAexoB,OAChC59B,EACN8jB,QACA9xB,YAGJ6hD,GAAkBsS,GAEtB,MAAME,EAAaF,EAEnB,IAAIG,EAYJ,OAbAD,EAAWxS,eAAiBA,GAEvB/vB,GAAS8uB,EAAoB8R,EAAkBx5C,EAAMi7C,KACtDG,EAAUhP,GAAkB,GAA2C,CAAEzkD,GAAIwzD,EAAYn7C,SAEzFq7C,GAAar7C,EAAMA,GAGnB,GAGA,KAEIo7C,EAAUnH,QAAQhD,QAAQmK,GAAWzF,EAASwF,EAAYn7C,IAC7Du0C,OAAO9I,GAAUa,GAAoBb,GAElCa,GAAoBb,EAAO,GACrBA,EACA6P,EAAY7P,GAElB8P,EAAa9P,EAAO0P,EAAYn7C,KACnCs0C,MAAM8G,IACP,GAAIA,GACA,GAAI9O,GAAoB8O,EAAS,GAc7B,OAAOP,EAEPllD,EAAO,CAEH7O,WACD6zD,EAAiBS,EAAQzzD,IAAK,CAC7B+qC,MAA6B,kBAAf0oB,EAAQzzD,GAChBgO,EAAO,CAAC,EAAGb,EAAMsmD,EAAQzzD,GAAG+qC,OAC5B59B,EACN8jB,UAGJ+vB,GAAkBwS,QAKtBC,EAAUI,EAAmBL,EAAYn7C,GAAM,EAAMlZ,EAASgO,GAGlE,OADA2mD,EAAiBN,EAAYn7C,EAAMo7C,GAC5BA,CAAO,GAEtB,CAMA,SAASM,EAAiC/zD,EAAIqY,GAC1C,MAAMyrC,EAAQmP,EAAwBjzD,EAAIqY,GAC1C,OAAOyrC,EAAQwI,QAAQC,OAAOzI,GAASwI,QAAQhD,SACnD,CACA,SAAS8C,EAAe5O,GACpB,MAAMwW,EAAMC,GAAc1I,SAAS9yD,OAAOnE,MAE1C,OAAO0/D,GAAqC,oBAAvBA,EAAI5H,eACnB4H,EAAI5H,eAAe5O,GACnBA,GACV,CAEA,SAASwQ,EAAShuD,EAAIqY,GAClB,IAAI00C,EACJ,MAAOmH,EAAgBC,EAAiBC,GAAmBC,GAAuBr0D,EAAIqY,GAEtF00C,EAASF,GAAwBqH,EAAeI,UAAW,mBAAoBt0D,EAAIqY,GAEnF,IAAK,MAAMmvC,KAAU0M,EACjB1M,EAAO2C,YAAY3vD,SAAQ2xD,IACvBY,EAAO1zD,KAAK6yD,GAAiBC,EAAOnsD,EAAIqY,GAAM,IAGtD,MAAMk8C,EAA0BR,EAAiCr7D,KAAK,KAAMsH,EAAIqY,GAGhF,OAFA00C,EAAO1zD,KAAKk7D,GAEJC,GAAczH,GACjBJ,MAAK,KAENI,EAAS,GACT,IAAK,MAAMZ,KAAS2F,EAAa7F,OAC7Bc,EAAO1zD,KAAK6yD,GAAiBC,EAAOnsD,EAAIqY,IAG5C,OADA00C,EAAO1zD,KAAKk7D,GACLC,GAAczH,EAAO,IAE3BJ,MAAK,KAENI,EAASF,GAAwBsH,EAAiB,oBAAqBn0D,EAAIqY,GAC3E,IAAK,MAAMmvC,KAAU2M,EACjB3M,EAAO6C,aAAa7vD,SAAQ2xD,IACxBY,EAAO1zD,KAAK6yD,GAAiBC,EAAOnsD,EAAIqY,GAAM,IAKtD,OAFA00C,EAAO1zD,KAAKk7D,GAELC,GAAczH,EAAO,IAE3BJ,MAAK,KAENI,EAAS,GACT,IAAK,MAAMvF,KAAU4M,EAEjB,GAAI5M,EAAOwC,YACP,GAAIpxD,EAAQ4uD,EAAOwC,aACf,IAAK,MAAMA,KAAexC,EAAOwC,YAC7B+C,EAAO1zD,KAAK6yD,GAAiBlC,EAAahqD,EAAIqY,SAGlD00C,EAAO1zD,KAAK6yD,GAAiB1E,EAAOwC,YAAahqD,EAAIqY,IAMjE,OAFA00C,EAAO1zD,KAAKk7D,GAELC,GAAczH,EAAO,IAE3BJ,MAAK,KAGN3sD,EAAGigD,QAAQzlD,SAAQgtD,GAAWA,EAAO8C,eAAiB,CAAC,IAEvDyC,EAASF,GAAwBuH,EAAiB,mBAAoBp0D,EAAIqY,EAAM+zC,GAChFW,EAAO1zD,KAAKk7D,GAELC,GAAczH,MAEpBJ,MAAK,KAENI,EAAS,GACT,IAAK,MAAMZ,KAAS4F,EAAoB9F,OACpCc,EAAO1zD,KAAK6yD,GAAiBC,EAAOnsD,EAAIqY,IAG5C,OADA00C,EAAO1zD,KAAKk7D,GACLC,GAAczH,EAAO,IAG3BH,OAAMzoD,GAAOwgD,GAAoBxgD,EAAK,GACrCA,EACAmoD,QAAQC,OAAOpoD,IACzB,CACA,SAAS2vD,EAAiB9zD,EAAIqY,EAAMo7C,GAGhCzB,EACK/F,OACAzxD,SAAQ2xD,GAASC,GAAe,IAAMD,EAAMnsD,EAAIqY,EAAMo7C,MAC/D,CAMA,SAASI,EAAmBL,EAAYn7C,EAAMo8C,EAAQt1D,EAASgO,GAE3D,MAAM22C,EAAQmP,EAAwBO,EAAYn7C,GAClD,GAAIyrC,EACA,OAAOA,EAEX,MAAM4Q,EAAoBr8C,IAASyoC,EAC7B/V,EAASiS,EAAiBrgD,QAAQouC,MAAb,CAAC,EAGxB0pB,IAGIt1D,GAAWu1D,EACXvQ,EAAchlD,QAAQq0D,EAAW7T,SAAU3xC,EAAO,CAC9Co0C,OAAQsS,GAAqB3pB,GAASA,EAAMqX,QAC7Cj1C,IAEHg3C,EAAc9qD,KAAKm6D,EAAW7T,SAAUxyC,IAGhDqgD,EAAal5D,MAAQk/D,EACrBE,GAAaF,EAAYn7C,EAAMo8C,EAAQC,GACvCf,GACJ,CACA,IAAIgB,EAEJ,SAASC,IAEDD,IAEJA,EAAwBxQ,EAAcd,QAAO,CAACrjD,EAAI60D,EAAOC,KACrD,IAAKvH,GAAOwH,UACR,OAEJ,MAAMvB,EAAalK,EAAQtpD,GAIrBuzD,EAAiBJ,EAAqBK,GAC5C,GAAID,EAEA,YADAL,EAAiBllD,EAAOulD,EAAgB,CAAEp0D,SAAS,EAAM8xB,OAAO,IAASuiC,GAAY5G,MAAMnP,GAG/FwU,EAAkBuB,EAClB,MAAMn7C,EAAOm1C,EAAal5D,MAEtB0oD,GACAiF,GAAmBF,EAAa1pC,EAAKsnC,SAAUmV,EAAKr+B,OAAQirB,KAEhEsM,EAASwF,EAAYn7C,GAChBu0C,OAAO9I,GACJa,GAAoBb,EAAO,IACpBA,EAEPa,GAAoBb,EAAO,IAU3BoP,EAAiBllD,EAAOglD,EAAiBlP,EAAM9jD,IAAK,CAChDixB,OAAO,IACPuiC,GAGC7G,MAAK8G,IAIF9O,GAAoB8O,EAAS,MAE5BqB,EAAKr+B,OACNq+B,EAAK9yC,OAASi/B,EAAe7R,KAC7B+U,EAAcrnD,IAAI,GAAG,EACzB,IAEC8vD,MAAMnP,GAEJ6O,QAAQC,WAGfuI,EAAKr+B,OACL0tB,EAAcrnD,IAAIg4D,EAAKr+B,OAAO,GAG3Bm9B,EAAa9P,EAAO0P,EAAYn7C,MAEtCs0C,MAAM8G,IACPA,EACIA,GACII,EAEAL,EAAYn7C,GAAM,GAEtBo7C,IACIqB,EAAKr+B,QAGJkuB,GAAoB8O,EAAS,GAC9BtP,EAAcrnD,IAAIg4D,EAAKr+B,OAAO,GAEzBq+B,EAAK9yC,OAASi/B,EAAe7R,KAClCuV,GAAoB8O,EAAS,KAG7BtP,EAAcrnD,IAAI,GAAG,IAG7Bg3D,EAAiBN,EAAYn7C,EAAMo7C,EAAQ,IAG1C7G,MAAMnP,EAAK,IAExB,CAEA,IAEIuX,EAFAC,EAAgBlJ,KAChBmJ,EAAiBnJ,KAUrB,SAAS6H,EAAa9P,EAAO9jD,EAAIqY,GAC7Bs7C,EAAY7P,GACZ,MAAMmI,EAAOiJ,EAAejJ,OAW5B,OAVIA,EAAKl1D,OACLk1D,EAAKzxD,SAAQ2R,GAAWA,EAAQ23C,EAAO9jD,EAAIqY,KAM3CpU,QAAQ6/C,MAAMA,GAGXwI,QAAQC,OAAOzI,EAC1B,CACA,SAASqR,IACL,OAAIH,GAASxH,EAAal5D,QAAUwsD,EACzBwL,QAAQhD,UACZ,IAAIgD,SAAQ,CAAChD,EAASiD,KACzB0I,EAAc3wD,IAAI,CAACglD,EAASiD,GAAQ,GAE5C,CACA,SAASoH,EAAYxvD,GAUjB,OATK6wD,IAEDA,GAAS7wD,EACTywD,IACAK,EACKhJ,OACAzxD,SAAQ,EAAE8uD,EAASiD,KAAapoD,EAAMooD,EAAOpoD,GAAOmlD,MACzD2L,EAAc7nB,SAEXjpC,CACX,CAEA,SAASuvD,GAAa1zD,EAAIqY,EAAMo8C,EAAQC,GACpC,MAAM,eAAExC,GAAmBlnD,EAC3B,IAAKgyC,IAAckV,EACf,OAAO5F,QAAQhD,UACnB,MAAMpH,GAAmBuS,GAAUtS,GAAuBJ,EAAa/hD,EAAG2/C,SAAU,MAC9E+U,IAAsBD,IACpB93D,QAAQouC,OACRpuC,QAAQouC,MAAMqX,QAClB,KACJ,OAAO,UACFuK,MAAK,IAAMuF,EAAelyD,EAAIqY,EAAM6pC,KACpCyK,MAAK11B,GAAYA,GAAY0qB,EAAiB1qB,KAC9C21B,OAAMzoD,GAAOyvD,EAAazvD,EAAKnE,EAAIqY,IAC5C,CACA,MAAMvb,GAAM25B,GAAU0tB,EAAcrnD,GAAG25B,GACvC,IAAI2+B,GACJ,MAAMnB,GAAgB,IAAI7J,IACpBmD,GAAS,CACXC,eACAuH,WAAW,EACX7M,WACAc,cACAY,YAAalC,EAAQkC,YACrB+I,WACAvJ,YACAE,UACAt+C,UACA3R,OACA8F,UACArC,MACAC,KAAM,IAAMD,IAAI,GAChBomD,QAAS,IAAMpmD,GAAG,GAClBu4D,WAAYvD,EAAaxtD,IACzBgxD,cAAevD,EAAoBztD,IACnCixD,UAAWvD,EAAY1tD,IACvBkxD,QAASN,EAAe5wD,IACxB6wD,UACA,OAAAM,CAAQzB,GACJ,MAAMzG,EAAStwD,KACf+2D,EAAI9W,UAAU,aAAcqS,IAC5ByE,EAAI9W,UAAU,aAAcwU,IAC5BsC,EAAI0B,OAAOC,iBAAiBC,QAAUrI,EACtCj4D,OAAO8B,eAAe48D,EAAI0B,OAAOC,iBAAkB,SAAU,CACzD1+D,YAAY,EACZ4C,IAAK,KAAM,QAAM2zD,KAKjBxQ,IAGCoY,IACD5H,EAAal5D,QAAUwsD,IAEvBsU,IAAU,EACV/7D,EAAK8qD,EAActoD,UAAU+wD,OAAMzoD,IAC3B,CACA,KAGZ,MAAM0xD,EAAgB,CAAC,EACvB,IAAK,MAAMx+D,KAAOypD,EACdxrD,OAAO8B,eAAey+D,EAAex+D,EAAK,CACtCwC,IAAK,IAAM2zD,EAAal5D,MAAM+C,GAC9BJ,YAAY,IAGpB+8D,EAAI8B,QAAQlK,GAAW2B,GACvByG,EAAI8B,QAAQjK,IAAkB,QAAgBgK,IAC9C7B,EAAI8B,QAAQhK,GAAuB0B,GACnC,MAAMuI,EAAa/B,EAAIgC,QACvB/B,GAAc3vD,IAAI0vD,GAClBA,EAAIgC,QAAU,WACV/B,GAAc5R,OAAO2R,GAEjBC,GAAc7tD,KAAO,IAErB6rD,EAAkBnR,EAClB6T,GAAyBA,IACzBA,EAAwB,KACxBnH,EAAal5D,MAAQwsD,EACrBsU,IAAU,EACVJ,GAAQ,GAEZe,GACJ,CAKJ,GAGJ,SAASvB,GAAczH,GACnB,OAAOA,EAAOvC,QAAO,CAACyL,EAAS9J,IAAU8J,EAAQtJ,MAAK,IAAMP,EAAeD,MAASG,QAAQhD,UAChG,CACA,OAAOiE,EACX,CACA,SAAS8G,GAAuBr0D,EAAIqY,GAChC,MAAM67C,EAAiB,GACjBC,EAAkB,GAClBC,EAAkB,GAClB9zD,EAAM6B,KAAKC,IAAIiW,EAAK4nC,QAAQlpD,OAAQiJ,EAAGigD,QAAQlpD,QACrD,IAAK,IAAID,EAAI,EAAGA,EAAIwJ,EAAKxJ,IAAK,CAC1B,MAAMo/D,EAAa79C,EAAK4nC,QAAQnpD,GAC5Bo/D,IACIl2D,EAAGigD,QAAQhpC,MAAKuwC,GAAUrH,EAAkBqH,EAAQ0O,KACpD/B,EAAgB96D,KAAK68D,GAErBhC,EAAe76D,KAAK68D,IAE5B,MAAMC,EAAWn2D,EAAGigD,QAAQnpD,GACxBq/D,IAEK99C,EAAK4nC,QAAQhpC,MAAKuwC,GAAUrH,EAAkBqH,EAAQ2O,MACvD/B,EAAgB/6D,KAAK88D,GAGjC,CACA,MAAO,CAACjC,EAAgBC,EAAiBC,EAC7C,C,oECjrHO,MAAMgC,EAAcl+D,OAAOm+D,IAAI,iB,qHCC/B,SAASC,EAAkBhrC,EAAOwF,GACvC,MAAO,CACL1W,EAAGkR,EAAMlR,EAAI0W,EAAO1W,EACpBC,EAAGiR,EAAMjR,EAAIyW,EAAOzW,EAExB,CAWO,SAASk8C,EAAUr3D,EAAGwsB,GAC3B,MAAO,CACLtR,EAAGlb,EAAEkb,EAAIsR,EAAEtR,EACXC,EAAGnb,EAAEmb,EAAIqR,EAAErR,EAEf,CAGO,SAASm8C,EAAcC,EAAQjyD,GACpC,GAAoB,QAAhBiyD,EAAOv1D,MAAkC,WAAhBu1D,EAAOv1D,KAAmB,CACrD,MAAM,KACJA,EAAI,MACJw1D,GACED,EACEr8C,EAAc,SAAVs8C,EAAmB,EAAc,WAAVA,EAAqBlyD,EAAIqD,MAAQ,EAAc,UAAV6uD,EAAoBlyD,EAAIqD,MAAQ6uD,EAChGr8C,EAAa,QAATnZ,EAAiB,EAAa,WAATA,EAAoBsD,EAAIuD,OAAS7G,EAChE,OAAOo1D,EAAkB,CACvBl8C,IACAC,KACC7V,EACL,CAAO,GAAoB,SAAhBiyD,EAAOv1D,MAAmC,UAAhBu1D,EAAOv1D,KAAkB,CAC5D,MAAM,KACJA,EAAI,MACJw1D,GACED,EACEr8C,EAAa,SAATlZ,EAAkB,EAAa,UAATA,EAAmBsD,EAAIqD,MAAQ3G,EACzDmZ,EAAc,QAAVq8C,EAAkB,EAAc,WAAVA,EAAqBlyD,EAAIuD,OAAS,EAAc,WAAV2uD,EAAqBlyD,EAAIuD,OAAS2uD,EACxG,OAAOJ,EAAkB,CACvBl8C,IACAC,KACC7V,EACL,CACA,OAAO8xD,EAAkB,CACvBl8C,EAAG5V,EAAIqD,MAAQ,EACfwS,EAAG7V,EAAIuD,OAAS,GACfvD,EACL,C,kCCvDO,SAASmyD,EAAgBp4D,GAC9B,MAAOA,EAAI,CACT,GAA6C,UAAzC1G,OAAOqF,iBAAiBqB,GAAI04B,SAC9B,OAAO,EAET14B,EAAKA,EAAGq4D,YACV,CACA,OAAO,CACT,C,sDCFA,MAAMC,EAAqB,CACzBC,OAAQC,EAERC,UAAWC,GAEAC,GAA4B,EAAAC,EAAA,GAAa,CACpDC,iBAAkB,CAChBp1C,KAAM,CAAClZ,OAAQ/T,UACfuoD,QAAS,SACT+Z,UAAW95C,GAAsB,oBAARA,GAAsBA,KAAOs5C,GAExDh7D,SAAU,CACRmmB,KAAMlZ,OACNw0C,QAAS,UAEXphD,OAAQ,CACN8lB,KAAMlZ,OACNw0C,QAAS,QAEXxsB,OAAQ,CAAC5nB,OAAQJ,OAAQnQ,QACxB,gCACI,SAAS2+D,EAAsBzgE,EAAOsW,GAC3C,MAAMoqD,GAAgB,QAAI,CAAC,GACrBC,GAAiB,UAkBvB,SAASxvC,EAASpuB,GAChB49D,EAAeljE,QAAQsF,EACzB,CACA,OApBI,OACF,QAAe,OAASuT,EAAK28B,SAASx1C,QAASuC,EAAMugE,oBAAmBhqB,KACtE,SAAM,IAAMv2C,EAAMugE,kBAAkBhqB,IACpC,SAAe,KACbv1C,OAAO+C,oBAAoB,SAAUotB,GACrCwvC,EAAeljE,WAAQ4L,CAAS,IAElCrI,OAAO8C,iBAAiB,SAAUqtB,EAAU,CAC1CoB,SAAS,IAE2B,oBAA3BvyB,EAAMugE,iBACfI,EAAeljE,MAAQuC,EAAMugE,iBAAiBjqD,EAAMtW,EAAO0gE,IAAgBC,eAE3EA,EAAeljE,MAAQuiE,EAAmBhgE,EAAMugE,kBAAkBjqD,EAAMtW,EAAO0gE,IAAgBC,cACjG,IAMG,CACLD,gBACAC,iBAEJ,CACA,SAAST,IAET,CAGA,SAASU,EAAiBl5D,EAAIm5D,GAgB5B,MAAMC,GAAa,OAAkBp5D,GAcrC,OAbIm5D,EACFC,EAAWv9C,GAAK1a,WAAWnB,EAAG/C,MAAMo8D,OAAS,GAE7CD,EAAWv9C,GAAK1a,WAAWnB,EAAG/C,MAAMyJ,MAAQ,GAE9C0yD,EAAWt9C,GAAK3a,WAAWnB,EAAG/C,MAAMwJ,KAAO,GAQpC2yD,CACT,CACA,SAASV,EAA0B9pD,EAAMtW,EAAO0gE,GAC9C,MAAMM,EAAiBl/D,MAAMC,QAAQuU,EAAKvW,OAAOtC,QAAUqiE,EAAgBxpD,EAAKvW,OAAOtC,OACnFujE,GACFviE,OAAO0Y,OAAOupD,EAAcjjE,MAAO,CACjC2iC,SAAU,QACVjyB,IAAK,EACL,CAACmI,EAAKuqD,MAAMpjE,MAAQ,QAAU,QAAS,IAG3C,MAAM,gBACJwjE,EAAe,gBACfC,IACE,SAAiB,KACnB,MAAMC,GAAe,QAAYnhE,EAAMgF,SAAUsR,EAAKuqD,MAAMpjE,OACtD2jE,EAAgC,YAAjBphE,EAAMqF,OAAuB87D,EAAgC,SAAjBnhE,EAAMqF,QAAoB,QAAS87D,IAAgB,QAAYnhE,EAAMqF,OAAQiR,EAAKuqD,MAAMpjE,OAGzJ,OAAI0jE,EAAa92D,OAAS+2D,EAAa/2D,MAAQ82D,EAAatB,SAAU,QAAUuB,GAAcvB,MACrF,CACLoB,iBAAiB,QAAWE,GAC5BD,iBAAiB,QAAWE,IAGvB,CACLH,gBAAiBE,EACjBD,gBAAiBE,EAErB,KAEKC,EAAUC,EAAWC,EAAUC,GAAa,CAAC,WAAY,YAAa,WAAY,aAAaj+D,KAAI/C,IACjG,SAAS,KACd,MAAMkmB,EAAM7d,WAAW7I,EAAMQ,IAC7B,OAAO0W,MAAMwP,GAAO+6C,IAAW/6C,CAAG,MAGhCuT,GAAS,SAAS,KACtB,GAAIn4B,MAAMC,QAAQ/B,EAAMi6B,QACtB,OAAOj6B,EAAMi6B,OAEf,GAA4B,kBAAjBj6B,EAAMi6B,OAAqB,CACpC,MAAMA,EAASj6B,EAAMi6B,OAAO7yB,MAAM,KAAK7D,IAAIsF,YAE3C,OADIoxB,EAAO/5B,OAAS,GAAG+5B,EAAOz3B,KAAK,GAC5By3B,CACT,CACA,MAA+B,kBAAjBj6B,EAAMi6B,OAAsB,CAACj6B,EAAMi6B,OAAQ,GAAK,CAAC,EAAG,EAAE,IAEtE,IAAIvmB,GAAU,EACd,MAAMf,EAAW,IAAIM,gBAAe,KAC9BS,GAASitD,GAAgB,IAiB/B,SAASA,IAGP,GAFAjtD,GAAU,EACV9M,uBAAsB,IAAM8M,GAAU,KACjC4C,EAAKvW,OAAOtC,QAAU6Y,EAAKorD,UAAUjkE,MAAO,OACjD,MAAMkkE,GAAY,QAAarrD,EAAKvW,OAAOtC,OACrCqjE,EAAaF,EAAiBtqD,EAAKorD,UAAUjkE,MAAO6Y,EAAKuqD,MAAMpjE,OAC/DmkE,GAAgB,EAAAC,EAAA,IAAiBvrD,EAAKorD,UAAUjkE,OAChDqkE,EAAiB,GAClBF,EAAc1hE,SACjB0hE,EAAcp/D,KAAKrE,SAASiS,iBACtBkG,EAAKorD,UAAUjkE,MAAMkH,MAAMwJ,KAAOmI,EAAKorD,UAAUjkE,MAAMkH,MAAMyJ,OACjE0yD,EAAWv9C,GAAK1a,WAAW1K,SAASiS,gBAAgBzL,MAAM2B,iBAAiB,sBAAwB,GACnGw6D,EAAWt9C,GAAK3a,WAAW1K,SAASiS,gBAAgBzL,MAAM2B,iBAAiB,sBAAwB,KAGvG,MAAMy7D,EAAWH,EAAcjO,QAAO,CAAChmD,EAAKjG,KAC1C,MAAMs6D,EAAOt6D,EAAGkG,wBACVq0D,EAAY,IAAI,KAAI,CACxB1+C,EAAG7b,IAAOvJ,SAASiS,gBAAkB,EAAI4xD,EAAKz+C,EAC9CC,EAAG9b,IAAOvJ,SAASiS,gBAAkB,EAAI4xD,EAAKx+C,EAC9CxS,MAAOtJ,EAAGmP,YACV3F,OAAQxJ,EAAGoP,eAEb,OAAInJ,EACK,IAAI,KAAI,CACb4V,EAAGjY,KAAKC,IAAIoC,EAAIS,KAAM6zD,EAAU7zD,MAChCoV,EAAGlY,KAAKC,IAAIoC,EAAIQ,IAAK8zD,EAAU9zD,KAC/B6C,MAAO1F,KAAKE,IAAImC,EAAIozD,MAAOkB,EAAUlB,OAASz1D,KAAKC,IAAIoC,EAAIS,KAAM6zD,EAAU7zD,MAC3E8C,OAAQ5F,KAAKE,IAAImC,EAAIu0D,OAAQD,EAAUC,QAAU52D,KAAKC,IAAIoC,EAAIQ,IAAK8zD,EAAU9zD,OAG1E8zD,CAAS,QACf54D,GACH04D,EAASx+C,GAAKu+C,EACdC,EAASv+C,GAAKs+C,EACdC,EAAS/wD,OAA0B,EAAjB8wD,EAClBC,EAAS7wD,QAA2B,EAAjB4wD,EACnB,IAAIK,EAAY,CACdvC,OAAQqB,EAAgBxjE,MACxB4H,OAAQ67D,EAAgBzjE,OAE1B,SAAS6e,EAAc8lD,GACrB,MAAMz0D,EAAM,IAAI,KAAImzD,GACduB,EAAc1C,EAAcyC,EAAWxC,OAAQ+B,GAC/CW,EAAe3C,EAAcyC,EAAW/8D,OAAQsI,GACtD,IAAI,EACF4V,EAAC,EACDC,GACEk8C,EAAU2C,EAAaC,GAC3B,OAAQF,EAAWxC,OAAOv1D,MACxB,IAAK,MACHmZ,GAAKyW,EAAOx8B,MAAM,GAClB,MACF,IAAK,SACH+lB,GAAKyW,EAAOx8B,MAAM,GAClB,MACF,IAAK,OACH8lB,GAAK0W,EAAOx8B,MAAM,GAClB,MACF,IAAK,QACH8lB,GAAK0W,EAAOx8B,MAAM,GAClB,MAEJ,OAAQ2kE,EAAWxC,OAAOC,OACxB,IAAK,MACHr8C,GAAKyW,EAAOx8B,MAAM,GAClB,MACF,IAAK,SACH+lB,GAAKyW,EAAOx8B,MAAM,GAClB,MACF,IAAK,OACH8lB,GAAK0W,EAAOx8B,MAAM,GAClB,MACF,IAAK,QACH8lB,GAAK0W,EAAOx8B,MAAM,GAClB,MAEJkQ,EAAI4V,GAAKA,EACT5V,EAAI6V,GAAKA,EACT7V,EAAIqD,MAAQ1F,KAAKE,IAAImC,EAAIqD,MAAOuwD,EAAS9jE,OACzCkQ,EAAIuD,OAAS5F,KAAKE,IAAImC,EAAIuD,OAAQswD,EAAU/jE,OAC5C,MAAM8kE,GAAY,QAAY50D,EAAKo0D,GACnC,MAAO,CACLQ,YACAh/C,IACAC,IAEJ,CACA,IAAID,EAAI,EACJC,EAAI,EACR,MAAMg/C,EAAY,CAChBj/C,EAAG,EACHC,EAAG,GAECi/C,EAAU,CACdl/C,GAAG,EACHC,GAAG,GAEL,IAAIk/C,GAAU,EACd,MAAO,EAAM,CACX,GAAIA,IAAW,GAAI,EACjB,EAAAt1D,EAAA,IAAa,uDACb,KACF,CACA,MACEmW,EAAGo/C,EACHn/C,EAAGo/C,EAAE,UACLL,GACEjmD,EAAc6lD,GAClB5+C,GAAKo/C,EACLn/C,GAAKo/C,EACL9B,EAAWv9C,GAAKo/C,EAChB7B,EAAWt9C,GAAKo/C,EAGhB,CACE,MAAM/6D,GAAO,QAAQs6D,EAAUvC,QACzBiD,EAAeN,EAAUh/C,EAAEu/C,QAAUP,EAAUh/C,EAAEw/C,MACjDC,EAAeT,EAAU/+C,EAAEs/C,QAAUP,EAAU/+C,EAAEu/C,MACvD,IAAIxsB,GAAQ,EAuBZ,GAtBA,CAAC,IAAK,KAAK5yC,SAAQnD,IACjB,GAAY,MAARA,GAAeqiE,IAAiBJ,EAAQl/C,GAAa,MAAR/iB,GAAewiE,IAAiBP,EAAQj/C,EAAG,CAC1F,MAAMy/C,EAAe,CACnBrD,OAAQ,IACHuC,EAAUvC,QAEfv6D,OAAQ,IACH88D,EAAU98D,SAGX69D,EAAe,MAAR1iE,EAAuB,MAATqH,EAAe,KAAY,KAAoB,MAATA,EAAe,KAAW,KAC3Fo7D,EAAarD,OAASsD,EAAKD,EAAarD,QACxCqD,EAAa59D,OAAS69D,EAAKD,EAAa59D,QACxC,MACEk9D,UAAWY,GACT7mD,EAAc2mD,IACdE,EAAa3iE,GAAKsiE,QAAUP,EAAU/hE,GAAKsiE,QAAUK,EAAa3iE,GAAKuiE,OAASR,EAAU/hE,GAAKuiE,OAASI,EAAa3iE,GAAKsiE,OAASK,EAAa3iE,GAAKuiE,OAASR,EAAU/hE,GAAKsiE,OAASP,EAAU/hE,GAAKuiE,OAAS,KAChNZ,EAAYc,EACZ1sB,EAAQksB,EAAQjiE,IAAO,EAE3B,KAEE+1C,EAAO,QACb,CAGIgsB,EAAUh/C,EAAEu/C,SACdv/C,GAAKg/C,EAAUh/C,EAAEu/C,OACjBhC,EAAWv9C,GAAKg/C,EAAUh/C,EAAEu/C,QAE1BP,EAAUh/C,EAAEw/C,QACdx/C,GAAKg/C,EAAUh/C,EAAEw/C,MACjBjC,EAAWv9C,GAAKg/C,EAAUh/C,EAAEw/C,OAE1BR,EAAU/+C,EAAEs/C,SACdt/C,GAAK++C,EAAU/+C,EAAEs/C,OACjBhC,EAAWt9C,GAAK++C,EAAU/+C,EAAEs/C,QAE1BP,EAAU/+C,EAAEu/C,QACdv/C,GAAK++C,EAAU/+C,EAAEu/C,MACjBjC,EAAWt9C,GAAK++C,EAAU/+C,EAAEu/C,OAI9B,CACE,MAAMR,GAAY,QAAYzB,EAAYiB,GAC1CS,EAAUj/C,EAAIw+C,EAAS/wD,MAAQuxD,EAAUh/C,EAAEu/C,OAASP,EAAUh/C,EAAEw/C,MAChEP,EAAUh/C,EAAIu+C,EAAS7wD,OAASqxD,EAAU/+C,EAAEs/C,OAASP,EAAU/+C,EAAEu/C,MACjEx/C,GAAKg/C,EAAUh/C,EAAEu/C,OACjBhC,EAAWv9C,GAAKg/C,EAAUh/C,EAAEu/C,OAC5Bt/C,GAAK++C,EAAU/+C,EAAEs/C,OACjBhC,EAAWt9C,GAAK++C,EAAU/+C,EAAEs/C,MAC9B,CACA,KACF,CACA,MAAMj7D,GAAO,QAAQs6D,EAAUvC,QAY/B,OAXAnhE,OAAO0Y,OAAOupD,EAAcjjE,MAAO,CACjC,4BAA6B,GAAG0kE,EAAUvC,OAAOv1D,QAAQ83D,EAAUvC,OAAOC,QAC1EziB,gBAAiB,GAAG+kB,EAAU98D,OAAOgF,QAAQ83D,EAAU98D,OAAOw6D,QAE9D1xD,KAAK,QAAci1D,EAAW5/C,IAC9BpV,KAAMkI,EAAKuqD,MAAMpjE,WAAQ4L,GAAY,QAAc+5D,EAAW7/C,IAC9Dw9C,MAAOzqD,EAAKuqD,MAAMpjE,OAAQ,QAAc2lE,GAAY7/C,SAAMla,EAC1Dg4D,UAAU,QAAuB,MAATx5D,EAAeyD,KAAKE,IAAI61D,EAAS5jE,MAAOkkE,EAAU3wD,OAASqwD,EAAS5jE,OAC5F8jE,UAAU,QAAc8B,GAAU,QAAMb,EAAUj/C,EAAG89C,EAAS5jE,QAAUgkE,IAAW,EAAIJ,EAAS5jE,MAAO8jE,EAAS9jE,SAChH+jE,WAAW,QAAc6B,GAAU,QAAMb,EAAUh/C,EAAG89C,EAAU7jE,QAAUgkE,IAAW,EAAIH,EAAU7jE,MAAO+jE,EAAU/jE,WAE/G,CACL+kE,YACA1B,aAEJ,CAqBA,OAnOA,QAAM,CAACxqD,EAAKvW,OAAQuW,EAAKorD,YAAY,CAACx3D,EAAMmJ,KAC1C,IAAKiwD,EAAWC,GAAgBr5D,GAC3Bs5D,EAAWC,GAAgBpwD,EAC5BmwD,IAAc1hE,MAAMC,QAAQyhE,IAAY7wD,EAASiB,UAAU4vD,GAC3DF,IAAcxhE,MAAMC,QAAQuhE,IAAY3wD,EAASe,QAAQ4vD,GACzDG,GAAc9wD,EAASiB,UAAU6vD,GACjCF,GAAc5wD,EAASe,QAAQ6vD,EAAa,GAC/C,CACDG,WAAW,KAEb,SAAe,KACb/wD,EAASwC,YAAY,KAoMvB,SAAM,IAAM,CAAC8rD,EAAgBxjE,MAAOyjE,EAAgBzjE,MAAOuC,EAAMi6B,OAAQj6B,EAAMqhE,SAAUrhE,EAAMshE,UAAWthE,EAAMuhE,SAAUvhE,EAAMwhE,aAAY,IAAMb,OAClJ,SAAS,KACP,MAAMgD,EAAShD,IAIf,IAAKgD,EAAQ,OACb,MAAM,UACJnB,EAAS,WACT1B,GACE6C,EACA7C,EAAW5vD,OAASsxD,EAAUh/C,GAChC5c,uBAAsB,KACpB+5D,IACA/5D,uBAAsB,KACpB+5D,GAAgB,GAChB,GAEN,IAEK,CACLA,iBAEJ,CACA,SAASyC,EAAW18C,GAClB,OAAOpb,KAAK8lC,MAAM1qB,EAAMk9C,kBAAoBA,gBAC9C,CACA,SAASP,EAAU38C,GACjB,OAAOpb,KAAK8P,KAAKsL,EAAMk9C,kBAAoBA,gBAC7C,CC1XA,IAAIC,GAAQ,EACZ,MAAM,EAAS,GAMR,SAASC,EAAgBC,IACzBF,GAAS,EAAO3jE,QACnB,EAAOsC,KAAKuhE,GACZ5tB,MAEA0tB,GAAQ,EACRE,IACA5tB,IAEJ,CACA,IAAInB,GAAO,EACX,SAASmB,IACPrvC,qBAAqBkuC,GACrBA,EAAMpuC,uBAAsB,KAC1B,MAAMo9D,EAAQ,EAAOp3D,QACjBo3D,GAAOA,IACP,EAAO9jE,OAAQi2C,IAAW0tB,GAAQ,CAAI,GAE9C,CCrBA,MAAMI,EAAmB,CACvBC,KAAM,KACNC,MAAOC,EACPC,MAAOC,EACPC,WAAYC,GAEDC,GAA0B,EAAAnE,EAAA,GAAa,CAClDoE,eAAgB,CACdv5C,KAAM,CAAClZ,OAAQ/T,UACfuoD,QAAS,QACT+Z,UAAW95C,GAAsB,oBAARA,GAAsBA,KAAOu9C,IAEvD,8BACI,SAASU,EAAoB3kE,EAAOsW,GACzC,IAAK,KAAY,OACjB,IAAIsuD,GACJ,SAAYC,UACVD,GAAOlkC,OACDpqB,EAAK28B,SAASx1C,OAASuC,EAAM0kE,iBACnCE,GAAQ,eACF,IAAInP,SAAQhD,GAAWhsD,WAAWgsD,KACxCmS,EAAME,QAAUF,EAAMzuB,KAAI,KACY,oBAAzBn2C,EAAM0kE,eACf1kE,EAAM0kE,eAAepuD,EAAMtW,EAAO4kE,GAElCX,EAAiBjkE,EAAM0kE,kBAAkBpuD,EAAMtW,EAAO4kE,EACxD,IACA,KAEJ,SAAe,KACbA,GAAOlkC,MAAM,GAEjB,CACA,SAAS0jC,EAAoB9tD,GAC3B,SAASyb,EAAShvB,GAChBuT,EAAK28B,SAASx1C,OAAQ,CACxB,CACAsnE,EAAWzuD,EAAKqV,SAASluB,OAAS6Y,EAAKorD,UAAUjkE,MAAOs0B,EAC1D,CACA,SAASuyC,EAAoBhuD,EAAMtW,GACjC,MAAM+/D,EAAezpD,EAAKi9B,KAAK91C,OAAOsiE,aAChCiF,EAAiB,IAAI,IAAIzR,IAAI,KAAI,EAAAsO,EAAA,IAAiBvrD,EAAKqV,SAASluB,MAAOuC,EAAMilE,UAAYlF,OAAe12D,OAAe,EAAAw4D,EAAA,IAAiBvrD,EAAKorD,UAAUjkE,MAAOuC,EAAMilE,UAAYlF,OAAe12D,MAAchH,QAAOqF,IAAOA,EAAG8F,UAAUR,SAAS,8BACjPk4D,EAAiBlkE,OAAO+pB,WAAa5sB,SAASiS,gBAAgBX,YAC9D01D,EAAmB,CAACz9D,IAAM,QAAaA,IAAOA,EAA3B,CAA+Bq4D,GAAgB5hE,SAASiS,iBAC7E+0D,GACF7uD,EAAKi9B,KAAK91C,MAAM+P,UAAUC,IAAI,6BAEhCu3D,EAAerhE,SAAQ,CAAC+D,EAAIzH,KAC1ByH,EAAG/C,MAAMqF,YAAY,qBAAqB,SAAetC,EAAGuG,aAC5DvG,EAAG/C,MAAMqF,YAAY,qBAAqB,SAAetC,EAAGqG,YACxDrG,IAAOvJ,SAASiS,iBAClB1I,EAAG/C,MAAMqF,YAAY,wBAAwB,QAAck7D,IAE7Dx9D,EAAG8F,UAAUC,IAAI,2BAA2B,KAE9C,SAAe,KACbu3D,EAAerhE,SAAQ,CAAC+D,EAAIzH,KAC1B,MAAMsjB,EAAI1a,WAAWnB,EAAG/C,MAAM2B,iBAAiB,sBACzCkd,EAAI3a,WAAWnB,EAAG/C,MAAM2B,iBAAiB,sBACzC+0D,EAAiB3zD,EAAG/C,MAAM02D,eAChC3zD,EAAG/C,MAAM02D,eAAiB,OAC1B3zD,EAAG/C,MAAMygE,eAAe,qBACxB19D,EAAG/C,MAAMygE,eAAe,qBACxB19D,EAAG/C,MAAMygE,eAAe,wBACxB19D,EAAG8F,UAAUqP,OAAO,4BACpBnV,EAAGuG,YAAcsV,EACjB7b,EAAGqG,WAAayV,EAChB9b,EAAG/C,MAAM02D,eAAiBA,CAAc,IAEtC8J,GACF7uD,EAAKi9B,KAAK91C,MAAM+P,UAAUqP,OAAO,4BACnC,GAEJ,CACA,SAAS2nD,EAAyBluD,EAAMtW,EAAO4kE,GAC7C,IAAIS,GAAO,EACPrwB,GAAO,EACPswB,GAAO,EACX,SAASriD,EAAOlgB,GACd+gE,GAAgB,KACd,MAAMztB,EAAQkvB,YAAY99D,MAC1B6O,EAAKqqD,eAAeljE,QAAQsF,GAC5B,MAAMyH,EAAO+6D,YAAY99D,MAAQ4uC,EACjCgvB,EAAO76D,GAAQ,IAAO,IAAM,CAAC,GAEjC,CACA86D,GAAsC,qBAAxBE,oBAAsCzB,GAAMA,IAAOyB,sBAAqB,KACpFZ,EAAMzuB,KAAI,KACR4uB,EAAWzuD,EAAKqV,SAASluB,OAAS6Y,EAAKorD,UAAUjkE,OAAOsF,IAClDsiE,GAKFv+D,qBAAqBkuC,GACrBA,EAAMpuC,uBAAsB,KAC1BouC,EAAMpuC,uBAAsB,KAC1Bqc,EAAOlgB,EAAE,GACT,KAGJkgB,EAAOlgB,EACT,GACA,GACF,KAEJ,SAAe,KACiB,qBAAvB0iE,oBAAsCA,mBAAmBH,GAChEx+D,qBAAqBkuC,EAAI,GAE7B,CAGA,SAAS+vB,EAAWr9D,EAAIqqB,GACtB,MAAMizC,EAAiB,CAAC7mE,aAAa,EAAA0jE,EAAA,IAAiBn6D,IACtDs9D,EAAerhE,SAAQ+D,IACrBA,EAAG5D,iBAAiB,SAAUiuB,EAAU,CACtCQ,SAAS,GACT,KAEJ,SAAe,KACbyyC,EAAerhE,SAAQ+D,IACrBA,EAAG3D,oBAAoB,SAAUguB,EAAS,GAC1C,GAEN,C,kCC/HA,MAAMojC,EAAW,IAAIuQ,QACd,SAASC,EAAUj+D,EAAI1H,GAC5BvB,OAAO0D,KAAKnC,GAAO2D,SAAQgvD,IACzB,IAAI,QAAKA,GAAI,CACX,MAAM/0D,GAAO,QAAU+0D,GACjBr9C,EAAU6/C,EAASnyD,IAAI0E,GAC7B,GAAgB,MAAZ1H,EAAM2yD,GACRr9C,GAAS3R,SAAQiM,IACf,MAAOlN,EAAGikD,GAAM/2C,EACZlN,IAAM9E,IACR8J,EAAG3D,oBAAoBnG,EAAM+oD,GAC7BrxC,EAAQk2C,OAAO57C,GACjB,SAEG,IAAK0F,IAAY,IAAIA,IAAU2jD,MAAKrpD,GAAKA,EAAE,KAAOhS,GAAQgS,EAAE,KAAO5P,EAAM2yD,KAAK,CACnFjrD,EAAG5D,iBAAiBlG,EAAMoC,EAAM2yD,IAChC,MAAMiT,EAAWtwD,GAAW,IAAIi+C,IAChCqS,EAASn4D,IAAI,CAAC7P,EAAMoC,EAAM2yD,KACrBwC,EAASx2D,IAAI+I,IAAKytD,EAASlyD,IAAIyE,EAAIk+D,EAC1C,CACF,MACkB,MAAZ5lE,EAAM2yD,GACRjrD,EAAGuZ,gBAAgB0xC,GAEnBjrD,EAAG9C,aAAa+tD,EAAG3yD,EAAM2yD,GAE7B,GAEJ,CACO,SAASkT,EAAYn+D,EAAI1H,GAC9BvB,OAAO0D,KAAKnC,GAAO2D,SAAQgvD,IACzB,IAAI,QAAKA,GAAI,CACX,MAAM/0D,GAAO,QAAU+0D,GACjBr9C,EAAU6/C,EAASnyD,IAAI0E,GAC7B4N,GAAS3R,SAAQiM,IACf,MAAOlN,EAAGikD,GAAM/2C,EACZlN,IAAM9E,IACR8J,EAAG3D,oBAAoBnG,EAAM+oD,GAC7BrxC,EAAQk2C,OAAO57C,GACjB,GAEJ,MACElI,EAAGuZ,gBAAgB0xC,EACrB,GAEJ,CC1CO,MAAMmT,GAAqB,EAAAxF,EAAA,GAAa,CAC7CvgE,OAAQ,CAACkS,OAAQxT,QACjBsnE,UAAW,CAAC9zD,OAAQxT,QACpBunE,eAAgB,CACd76C,KAAM1sB,OACNgoD,QAAS,KAAM,CAAG,IAEpBwf,YAAa,CACX96C,KAAM0sC,QACNpR,aAASp9C,GAEX68D,YAAarO,QACbsO,YAAa,CACXh7C,KAAM0sC,QACNpR,aAASp9C,GAEX+8D,oBAAqBvO,YAClB,UACF,sBACI,SAASwO,EAAarmE,EAAOkK,GAClC,IAAI,SACF+oC,EAAQ,MACRqzB,EAAK,UACL5E,GACEx3D,EACJ,MAAMq8D,GAAK,EAAAC,EAAA,IAAmB,gBACxBC,GAAc,UACpB,IAAIC,GAAY,EACZC,GAAY,EACZC,GAAa,EACjB,MAAMT,GAAc,SAAS,IAAMnmE,EAAMmmE,aAAoC,MAArBnmE,EAAMmmE,aAAuBnmE,EAAMkmE,cACrFD,GAAc,SAAS,IAAMjmE,EAAMimE,aAAoC,MAArBjmE,EAAMimE,cAAwBjmE,EAAMkmE,cAAgBC,EAAY1oE,SAClH,aACJopE,EAAY,cACZC,IACE,OAAS9mE,GAAOvC,IACdA,KAAWuC,EAAMkmE,aAAeQ,GAAaP,EAAY1oE,OAASkpE,IAAgB3mE,EAAMkmE,aAAejzB,EAASx1C,QAAU6oE,EAAM7oE,QAC9Hw1C,EAASx1C,QAAUA,IACrBmpE,GAAa,GAEf3zB,EAASx1C,MAAQA,EACnB,IAEIspE,GAAe,UACfC,EAAkB,CACtBr1C,QAAS5uB,IACPA,EAAE0rB,kBACFg4C,EAAYhpE,MAAQsF,EAAE61D,eAAiB71D,EAAEhD,OACpCkzC,EAASx1C,QACZspE,EAAatpE,MAAQ,CAACsF,EAAE4jC,QAAS5jC,EAAE6jC,UAErCqM,EAASx1C,OAASw1C,EAASx1C,KAAK,EAElCwpE,aAAclkE,IACRA,EAAEmwC,oBAAoBC,mBAC1BuzB,GAAY,EACZD,EAAYhpE,MAAQsF,EAAE61D,eAAiB71D,EAAEhD,OACzC8mE,IAAc,EAEhBK,aAAcnkE,IACZ2jE,GAAY,EACZI,GAAe,EAEjBK,QAASpkE,KAC6C,KAAhD,QAAgBA,EAAEhD,OAAQ,oBAC9B4mE,GAAY,EACZ5jE,EAAE0rB,kBACFg4C,EAAYhpE,MAAQsF,EAAE61D,eAAiB71D,EAAEhD,OACzC8mE,IAAc,EAEhBO,OAAQrkE,IACN4jE,GAAY,EACZ5jE,EAAE0rB,kBACFq4C,GAAe,GAGbO,GAAkB,SAAS,KAC/B,MAAMhyD,EAAS,CAAC,EAYhB,OAXI4wD,EAAYxoE,QACd4X,EAAOsc,QAAUq1C,EAAgBr1C,SAE/B3xB,EAAMkmE,cACR7wD,EAAO4xD,aAAeD,EAAgBC,aACtC5xD,EAAO6xD,aAAeF,EAAgBE,cAEpCf,EAAY1oE,QACd4X,EAAO8xD,QAAUH,EAAgBG,QACjC9xD,EAAO+xD,OAASJ,EAAgBI,QAE3B/xD,CAAM,IAETiyD,GAAgB,SAAS,KAC7B,MAAMjyD,EAAS,CAAC,EAqBhB,GApBIrV,EAAMkmE,cACR7wD,EAAO4xD,aAAe,KACpBP,GAAY,EACZG,GAAc,EAEhBxxD,EAAO6xD,aAAe,KACpBR,GAAY,EACZI,GAAe,GAGfX,EAAY1oE,QACd4X,EAAOkyD,UAAY,KACjBZ,GAAY,EACZE,GAAc,EAEhBxxD,EAAOmyD,WAAa,KAClBb,GAAY,EACZG,GAAe,GAGf9mE,EAAMomE,oBAAqB,CAC7B,MAAMqB,GAAO,QAAO,IAAa,MACjCpyD,EAAOsc,QAAU,KACfshB,EAASx1C,OAAQ,EACjBgqE,GAAMC,cAAc,CAExB,CACA,OAAOryD,CAAM,IAETsyD,GAAc,SAAS,KAC3B,MAAMtyD,EAAS,CAAC,EAchB,OAbIrV,EAAMkmE,cACR7wD,EAAO4xD,aAAe,KAChBL,IACFF,GAAY,EACZE,GAAa,EACbC,IACF,EAEFxxD,EAAO6xD,aAAe,KACpBR,GAAY,EACZI,GAAe,GAGZzxD,CAAM,KAEf,QAAMixD,GAAO5/C,KACPA,KAAQ1mB,EAAMkmE,aAAgBQ,GAAeP,EAAY1oE,OAAUkpE,MAAcR,EAAY1oE,OAAUkpE,GAAe3mE,EAAMkmE,aAAgBQ,IAAgBhF,EAAUjkE,OAAOuP,SAAS7O,SAAS6F,iBACjMivC,EAASx1C,OAAQ,EACnB,KAEF,QAAMw1C,GAAUvsB,IACTA,GACHjgB,YAAW,KACTsgE,EAAatpE,WAAQ4L,CAAS,GAElC,GACC,CACD4wD,MAAO,SAET,MAAM2N,GAAe,WACrB,SAAY,KACLA,EAAanqE,QAClB,SAAS,KACPgpE,EAAYhpE,MAAQmqE,EAAalgE,EAAE,GACnC,IAEJ,MAAMmgE,GAAY,UACZ9nE,GAAS,SAAS,IACD,WAAjBC,EAAMD,QAAuBgnE,EAAatpE,MAAcspE,EAAatpE,MACrEoqE,EAAUpqE,MAAcoqE,EAAUngE,GAC/BogE,EAAU9nE,EAAMD,OAAQwmE,IAAOE,EAAYhpE,QAE9CkuB,GAAW,SAAS,IACjB7pB,MAAMC,QAAQhC,EAAOtC,YAAS4L,EAAYtJ,EAAOtC,QAE1D,IAAImnE,EAoBJ,OAnBA,SAAM,MAAQ5kE,EAAM+lE,YAAWr/C,IACzBA,GAAO,MACTk+C,GAAQ,SACRA,EAAMzuB,KAAI,KACR4xB,EAAc/nE,EAAOumE,EAAI,CACvBE,cACAY,mBACA,KAEKzC,GACTA,EAAMlkC,MACR,GACC,CACDu5B,MAAO,OACPyJ,WAAW,KAEb,SAAe,KACbkB,GAAOlkC,MAAM,IAER,CACL+lC,cACAmB,eACA7nE,SACA4rB,WACAk8C,YACAR,kBACAC,gBACAK,cAEJ,CACA,SAASI,EAAc/nE,EAAOumE,EAAIlzD,GAChC,IAAI,YACFozD,EAAW,gBACXY,GACEh0D,EAkBJ,SAAS20D,IACP,IAAItgE,EAAK0B,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK6+D,IACzEC,EAAS9+D,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAKpJ,EAAMgmE,eAClFt+D,GACLi+D,EAAUj+D,GAAI,QAAW2/D,EAAgB5pE,MAAOyqE,GAClD,CACA,SAASC,IACP,IAAIzgE,EAAK0B,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK6+D,IACzEC,EAAS9+D,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAKpJ,EAAMgmE,eAClFt+D,GACLm+D,EAAYn+D,GAAI,QAAW2/D,EAAgB5pE,MAAOyqE,GACpD,CACA,SAASD,IACP,IAAI77D,EAAWhD,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAKpJ,EAAM+lE,UACzF,MAAMA,EAAY+B,EAAU17D,EAAUm6D,GAItC,OADAE,EAAYhpE,MAAQsoE,GAAW78D,WAAak/D,KAAKC,aAAetC,OAAY18D,EACrEo9D,EAAYhpE,KACrB,EApCA,SAAM,IAAMuC,EAAM+lE,YAAW,CAACr/C,EAAK4hD,KACjC,GAAIA,GAAU5hD,IAAQ4hD,EAAQ,CAC5B,MAAMvC,EAAYkC,EAAaK,GAC/BvC,GAAaoC,EAAqBpC,EACpC,CACIr/C,IACF,SAAS,IAAMshD,KACjB,GACC,CACDtE,WAAW,KAEb,SAAM,IAAM1jE,EAAMgmE,iBAAgB,KAChCgC,GAAoB,KAEtB,SAAe,KACbG,GAAsB,GAsB1B,CACA,SAASL,EAAU17D,EAAUm6D,GAC3B,IAAKn6D,EAAU,OACf,IAAIrM,EACJ,GAAiB,WAAbqM,EAAuB,CACzB,IAAI1E,EAAK6+D,GAAIgC,OAAOC,KAAK7vC,WACzB,MAAOjxB,GAAI+gE,aAAa,qBACtB/gE,EAAKA,EAAGixB,WAEV54B,EAAS2H,CACX,MAEE3H,EAF6B,kBAAbqM,EAEPjO,SAASgG,cAAciI,GACvB,QAASA,EAETA,EAASo8D,IAGTp8D,EAEX,OAAOrM,CACT,C,+FCxQA,MAAM2oE,GAAcrnE,OAAOm+D,IAAI,iBACzBmJ,IAAc,QAAS,IACtB,SAASC,GAAS31B,EAAUkL,EAAQ0qB,GACzC,MAAMtC,GAAK,EAAAC,EAAA,IAAmB,YACxBsC,GAAoBD,EACpB/7D,GAAS,QAAO47D,QAAar/D,GAC7B0/D,GAAQ,QAAS,CACrBC,eAAgB,IAAIzV,OAEtB,QAAQmV,GAAaK,GACrB,MAAME,GAAU,SAAY9qB,EAAO1gD,QACnC,OAAew1C,GAAU,KACvB,MAAMi2B,EAAaP,GAAYQ,IAAI,KAAK,GACxCF,EAAQxrE,MAAQyrE,EAAaA,EAAa,IAAM/qB,EAAO1gD,MACnDqrE,GACFH,GAAYnmE,KAAK,CAAC+jE,EAAG6C,IAAKH,EAAQxrE,QAEpCqP,GAAQk8D,eAAev7D,IAAI84D,EAAG6C,MAC9B,SAAe,KACb,GAAIN,EAAkB,CACpB,MAAMO,GAAM,QAAMV,IAAal9B,WAAU77B,GAAKA,EAAE,KAAO22D,EAAG6C,MAC1DT,GAAYxlE,OAAOkmE,EAAK,EAC1B,CACAv8D,GAAQk8D,eAAexd,OAAO+a,EAAG6C,IAAI,GACrC,IAEJ,MAAME,GAAY,SAAW,GACzBR,IACF,SAAY,KACV,MAAMS,EAASZ,GAAYQ,IAAI,KAAK,KAAO5C,EAAG6C,IAC9C3iE,YAAW,IAAM6iE,EAAU7rE,MAAQ8rE,GAAO,IAG9C,MAAMC,GAAW,SAAS,KAAOT,EAAMC,eAAez5D,OACtD,MAAO,CACL+5D,WAAW,QAASA,GACpBE,WACAC,aAAa,SAAS,KAAM,CAC1BtrB,OAAQ8qB,EAAQxrE,UAGtB,CC1CO,SAASisE,GAAY3pE,GAC1B,MAAM4pE,GAAiB,SAAS,KAC9B,MAAMC,EAAU7pE,IAChB,IAAgB,IAAZ6pE,IAAqB,KAAY,OACrC,MAAMC,GAA4B,IAAZD,EAAoBzrE,SAAS0F,KAA0B,kBAAZ+lE,EAAuBzrE,SAASgG,cAAcylE,GAAWA,EAC1H,GAAqB,MAAjBC,EAEF,YADA,QAAK,2BAA2BD,KAGlC,IAAIE,EAAY,IAAID,EAAcplE,UAAU2b,MAAK1Y,GAAMA,EAAG6E,QAAQ,0BAMlE,OALKu9D,IACHA,EAAY3rE,SAASqG,cAAc,OACnCslE,EAAUjsD,UAAY,sBACtBgsD,EAAc3nB,YAAY4nB,IAErBA,CAAS,IAElB,MAAO,CACLH,iBAEJ,C,qECEA,SAASI,GAAM/pE,GACb,MAAM,WACJgqE,EAAU,MACVC,KACGC,GACDlqE,EACJ,OAAO,QAAa,KAAY,CAC9B,KAAQ,kBACR,QAAU,GACT,CACDymD,QAAS,IAAM,CAACzmD,EAAMgqE,aAAc,QAAa,OAAO,QAAY,CAClE,MAAS,CAAC,mBAAoBhqE,EAAMiqE,MAAME,uBAAuB1sE,OACjE,MAASuC,EAAMiqE,MAAMG,sBAAsB3sE,OAC1CysE,GAAO,QAEd,CACO,MAAMG,IAAoB,EAAA/J,EAAA,GAAa,CAC5CgK,SAAUzS,QACV3jD,OAAQ,CAAC2jD,QAAS5lD,OAAQxT,QAC1B8rE,YAAa,CACXp/C,KAAM0sC,QACNpR,SAAS,GAEXwe,UAAWpN,QACX2S,aAAc,KACdC,aAAc,KACdzpC,SAAU62B,QACVrxB,QAAS,CAACn0B,OAAQJ,QAClBy4D,iBAAkB7S,QAClBmS,WAAYnS,QACZ8S,WAAY9S,QACZ+S,MAAO,CACLz/C,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,SAAS,GAEXtI,OAAQ,CACNhzB,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,QAERqf,QACA,aACA,aACA,YACAzF,OACAoE,QACA,eACA,WACF,YACUoG,IAAW,WAAmB,CACzCjtE,KAAM,WACNktE,WAAY,CACVC,aAAY,MAEdzR,cAAc,EACdt5D,MAAO,CACLgrE,oBAAqBnT,WAClBwS,MAELY,MAAO,CACL,gBAAiBloE,IAAK,EACtB,oBAAqBtF,IAAS,EAC9BytE,WAAY,KAAM,EAClBC,WAAY,KAAM,GAEpB,KAAAlT,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,MACLxS,EAAK,KACLriD,GACE6G,EACJ,MAAMq8D,GAAK,EAAAC,EAAA,IAAmB,YACxBjzB,GAAO,UACP63B,GAAU,UACV1J,GAAY,UACZ2J,GAAQ,OAAgBrrE,EAAO,cAC/BizC,GAAW,QAAS,CACxBjwC,IAAK,IAAMqoE,EAAM5tE,MACjBwF,IAAK2M,IACGA,GAAK5P,EAAMghC,WAAWqqC,EAAM5tE,MAAQmS,EAAC,KAGzC,aACJ07D,IACE,SAAatrE,IACX,WACJurE,EAAU,MACV1K,IACE,WACE,WACJ2K,EACAC,aAAcC,IACZ,OAAQ1rE,EAAOizC,GACb04B,GAAa,SAAmB,SAAS,IACf,kBAAhB3rE,EAAM4qE,MAAqB5qE,EAAM4qE,MAAQ,SAEnD,UACJtB,EAAS,SACTE,EAAQ,YACRC,GACEb,GAAS31B,GAAU,QAAMjzC,EAAO,UAAWA,EAAMgrE,sBAC/C,YACJvE,EAAW,aACXmB,EAAY,OACZ7nE,EAAM,SACN4rB,EAAQ,UACRk8C,EAAS,gBACTR,EAAe,cACfC,EAAa,YACbK,GACEtB,EAAarmE,EAAO,CACtBizC,WACAqzB,MAAOkD,EACP9H,eAEI,eACJiI,GACED,IAAY,KACd,MAAM3pE,EAASC,EAAMkU,QAAUlU,EAAMilE,UACrC,GAAIllE,EAAQ,OAAOA,EACnB,MAAM6rE,EAAWnF,GAAahpE,OAAOitB,eAAiB67C,EAAGgC,OAAOC,KAAK99C,cACrE,OAAIkhD,aAAoBC,YAAmBD,CAC/B,KAER,gBACJE,IACE,OAAa9rE,GACX+rE,GAAY,UACZ,QACJC,IACE,WACJ,SAAM,IAAMhsE,EAAMghC,WAAUpxB,IACtBA,IAAGqjC,EAASx1C,OAAQ,EAAK,IAE/B,MAAM,cACJijE,EAAa,eACbC,GACEF,EAAsBzgE,EAAO,CAC/B6gE,QACAa,YACA3hE,SACAkzC,aASF,SAASg5B,EAAelpE,GACtBM,EAAK,gBAAiBN,GACjB/C,EAAM2qE,WAAwCuB,KAA5Bj5B,EAASx1C,OAAQ,CAC1C,CACA,SAAS0uE,EAAiBppE,GACxB,OAAOkwC,EAASx1C,OAAS6rE,EAAU7rE,SAElCuC,EAAM4qE,OAAS7nE,EAAEhD,SAAWqrE,EAAQ3tE,OAASsF,aAAaqpE,YAAcrpE,EAAEspE,eAAiBjB,EAAQ3tE,MACtG,CAcA,SAAS6uE,EAAUvpE,GACH,WAAVA,EAAEvC,KAAoB8oE,EAAU7rE,QAC7BuC,EAAM2qE,WAKJuB,MAJLj5B,EAASx1C,OAAQ,EACbikE,EAAUjkE,OAAOuP,SAAS7O,SAAS6F,gBACrCyiE,EAAYhpE,OAAO8uE,SAI3B,CAtCA5H,EAAoB3kE,EAAO,CACzBuzC,OACAmuB,YACA/1C,WACAsnB,WACA0tB,mBAWF,OAAc,QAAM1tB,GAAUvsB,IACxBA,EACF1lB,OAAO8C,iBAAiB,UAAWwoE,GAEnCtrE,OAAO+C,oBAAoB,UAAWuoE,EACxC,GACC,CACD5I,WAAW,KAEb,SAAgB,KACT,MACL1iE,OAAO+C,oBAAoB,UAAWuoE,EAAU,IAYlD,MAAM5V,GAAS,YACf,QAAe,IAAM12D,EAAMuqE,cAAa,MACtC,SAAc7T,GAAQ90D,IAChB0nE,EAAU7rE,OAASw1C,EAASx1C,OAC9BmE,GAAK,GACA5B,EAAM2qE,WAAwCuB,KAA5Bj5B,EAASx1C,OAAQ,GAExCmE,GACF,GACA,IAEJ,MAAMuM,IAAM,UAWZ,SAAS+9D,KACHlsE,EAAM0qE,kBACVhJ,EAAUjkE,QAAS,OAAQikE,EAAUjkE,MAAO,CAAC,CAC3C2/C,gBAAiB,UAChB,CACDj1C,UAAW,eACV,CACDi1C,gBAAiB,WACf,CACF1yC,SAAU,IACV8hE,OAAQ,OAEZ,CACA,SAASC,KACPppE,EAAK,aACP,CACA,SAASooE,KACPC,IACAroE,EAAK,aACP,CA+CA,OA5EA,SAAM,IAAM4vC,EAASx1C,QAAUuC,EAAMsqE,UAAYtqE,EAAMilE,YAAsC,MAAxB0E,EAAelsE,QAAeipB,IACjG,GAAIA,EAAK,CACP,MAAMgmD,GAAe,EAAA7K,EAAA,IAAgBtuB,EAAK91C,OACtCivE,GAAgBA,IAAiBvuE,SAASwuE,mBAC5Cx+D,GAAI1Q,MAAQivE,EAAa3+D,UAE7B,MAwBF,EAAA6+D,GAAA,IAAU,KAAM,QAAa,KAAW,KAAM,CAAC1U,EAAM6N,YAAY,CAC/D9yB,SAAUA,EAASx1C,MACnBoqE,YACA7nE,OAAO,QAAW,CAChB26D,IAAKiN,GACJP,EAAgB5pE,MAAOuC,EAAMgmE,kBAC9B+F,EAAUtuE,OAAS+tE,EAAW/tE,QAAS,QAAa,KAAU,CAChE,UAAaksE,EAAelsE,MAC5B,GAAMksE,EAAelsE,OACpB,CACDgpD,QAAS,IAAM,EAAC,QAAa,OAAO,QAAY,CAC9C,MAAS,CAAC,YAAa,CACrB,sBAAuBzmD,EAAMsqE,UAAYtqE,EAAMilE,UAC/C,oBAAqBhyB,EAASx1C,MAC9B,uBAAwBuC,EAAMilE,WAC7BqG,EAAa7tE,MAAO8tE,EAAW9tE,MAAOuC,EAAMy4D,OAC/C,MAAS,CAACgR,EAAYhsE,MAAO,CAC3B,sBAAuBuC,EAAMwmC,QAC7Br4B,KAAK,QAAcA,GAAI1Q,QACtBuC,EAAM2E,OACT,IAAO4uC,GACNy4B,EAAStmB,GAAQ,EAAC,QAAaqkB,IAAO,QAAY,CACnD,MAAS4B,EACT,WAAc14B,EAASx1C,SAAWuC,EAAM4qE,MACxC,IAAOQ,GACNzD,EAAYlqE,OAAQ,OAAO,QAAa,KAAiB,CAC1D,QAAU,EACV,WAAa,EACb,WAAcuC,EAAM6kB,WACpB,OAAU9kB,EAAOtC,MACjB,aAAgBgvE,GAChB,aAAgBhB,IACf,CACDhlB,QAAS,IAAM,EAAC,SAAgB,QAAa,OAAO,QAAY,CAC9D,IAAOib,EACP,MAAS,CAAC,qBAAsB1hE,EAAMwqE,cACtC,MAAS,CAACsB,EAAgBruE,MAAOijE,EAAcjjE,QAC9C6pE,EAAc7pE,MAAOuC,EAAMyqE,cAAe,CAACvS,EAAMzR,UAAU,CAC5DxT,eACI,CAAC,CAAC,KAAQA,EAASx1C,OAAQ,EAAC,QAAkB,iBAAkB,CACpE6X,QAAS22D,EACTE,mBACAU,QAAS,IAAM,CAACpG,EAAYhpE,uBAI3B,CACLgpE,cACA2E,UACArrE,SACAmsE,gBACAxK,YACA4H,YACAE,WACA7I,iBAEJ,G,4KCpSK,MAAMmM,GAAoB,EAAAxM,EAAA,GAAa,CAC5CjhE,GAAI4S,OACJ9E,KAAM8E,WACH,SAAK,OAAkB,CACxBs4D,aAAa,EACbvlE,SAAU,MACVu7D,iBAAkB,YAClBwM,OAAO,EACP1L,SAAU,EACVpnC,OAAQ,GACRgsC,aAAa,EACbC,aAAa,EACb7gE,OAAQ,OACRulE,OAAO,EACPlG,eAAgB,aAChB7/C,YAAY,IACV,CAAC,WAAY,gBAChB,YACUmoD,GAAW,UAAmB,CACzCpvE,KAAM,WACNoC,MAAO8sE,IACP7B,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM+oC,GAAW,OAAgBjzC,EAAO,eAClC,QACJgsE,IACE,SACE5C,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,aAAa+pE,MAC7C6D,GAAU,UACVjoE,GAAW,SAAS,IACjBhF,EAAMgF,SAASoC,MAAM,KAAKlH,OAAS,EAAIF,EAAMgF,SAAWhF,EAAMgF,SAAW,YAE5EK,GAAS,SAAS,IACE,SAAjBrF,EAAMqF,QAAsC,YAAjBrF,EAAMqF,QAAwBrF,EAAMqF,OAAO+B,MAAM,KAAKlH,OAAS,GAAKF,EAAMgF,SAASoC,MAAM,KAAKlH,OAAS,EAAIF,EAAMqF,OAASrF,EAAMqF,OAAS,YAEvKwf,GAAa,SAAS,IACtB7kB,EAAM6kB,WAAmB7kB,EAAM6kB,WAC5BouB,EAASx1C,MAAQ,mBAAqB,oBAEzCuoE,GAAiB,SAAS,KAAM,QAAW,CAC/C,mBAAoB3mE,EAAG5B,OACtBuC,EAAMgmE,kBA6BT,OA5BA,EAAA4G,EAAA,IAAU,KACR,MAAMM,EAAerC,EAAA,EAASsC,YAAYntE,GAC1C,OAAO,QAAa6qE,EAAA,GAAU,QAAY,CACxC,IAAOoC,EACP,MAAS,CAAC,YAAajtE,EAAMy4D,OAC7B,MAASz4D,EAAM2E,MACf,GAAMtF,EAAG5B,OACRyvE,EAAc,CACf,WAAcj6B,EAASx1C,MACvB,sBAAuB2vE,GAAUn6B,EAASx1C,MAAQ2vE,EAClD,WAAcvoD,EAAWpnB,MACzB,UAAY,EACZ,SAAYuH,EAASvH,MACrB,OAAU4H,EAAO5H,MACjB,YAAc,EACd,KAAQ,UACR,eAAkBuoE,EAAevoE,MACjC,qBAAuB,GACtBuuE,GAAU,CACXjG,UAAW7N,EAAM6N,UACjBtf,QAAS,WACP,IAAK,IAAI3wC,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzB,OAAOkiD,EAAMzR,aAAa1wC,IAAS/V,EAAMmN,IAC3C,GACA,KAEG,EAAAkgE,EAAA,GAAY,CAAC,EAAGJ,EACzB,G,2nLCrFK,SAASK,EAAkBzmE,GAChC,IAAI8G,EAAMvE,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,UAC9E,MAAMmkE,GAAY,UACZh6D,GAAc,UACpB,GAAI,KAAY,CACd,MAAMZ,EAAW,IAAIM,gBAAeC,IAClCrM,IAAWqM,EAASP,GACfO,EAAQhT,SAEXqT,EAAY9V,MADF,YAARkQ,EACkBuF,EAAQ,GAAGK,YAEXL,EAAQ,GAAGnT,OAAO6N,wBACxC,KAEF,SAAgB,KACd+E,EAASwC,YAAY,KAEvB,SAAM,IAAMo4D,EAAU7lE,KAAI,CAACu6C,EAAUurB,KAC/BA,IACF76D,EAASiB,UAAU45D,GACnBj6D,EAAY9V,WAAQ4L,GAElB44C,GAAUtvC,EAASe,QAAQuuC,EAAS,GACvC,CACDgY,MAAO,QAEX,CACA,MAAO,CACLsT,YACAh6D,aAAa,QAASA,GAE1B,C,wBC/BO,MAAMk6D,EAAmBpsE,OAAOm+D,IAAI,kBAC9BkO,EAAuBrsE,OAAOm+D,IAAI,uBACzCmO,EAAc,IACPC,GAAkB,EAAAtN,EAAA,GAAa,CAC1CuN,SAAU,CACR1iD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBqnB,WAAYjW,SACX,UAGUkW,GAAsB,EAAAzN,EAAA,GAAa,CAC9C1iE,KAAM,CACJutB,KAAMlZ,QAERioC,MAAO,CACL/uB,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEX6jB,SAAUzS,SACT,eACI,SAASmW,IACd,MAAMC,GAAS,QAAOR,GACtB,IAAKQ,EAAQ,MAAM,IAAIpgB,MAAM,4CAC7B,MAAO,CACLqgB,cAAeD,EAAOC,cACtBC,SAAUF,EAAOE,SACjBC,WAAYH,EAAOG,WAEvB,CACO,SAASC,EAAcl6D,GAC5B,MAAM85D,GAAS,QAAOR,GACtB,IAAKQ,EAAQ,MAAM,IAAIpgB,MAAM,4CAC7B,MAAMxuD,EAAK8U,EAAQ9U,IAAM,gBAAe,YAClCknE,GAAK,EAAAC,EAAA,IAAmB,kBAC9B,QAAQkH,EAAsB,CAC5BruE,OAEF,MAAMivE,GAAc,SAAW,IAC/B,SAAc,IAAMA,EAAY7wE,OAAQ,KACxC,SAAY,IAAM6wE,EAAY7wE,OAAQ,IACtC,MAAM,iBACJ8wE,EAAgB,sBAChBC,GACEP,EAAOloB,SAASwgB,EAAI,IACnBpyD,EACH2wD,QAAQ,SAAS,KAAMwJ,EAAY7wE,OAAgB0W,EAAQ2wD,OAAOrnE,QAClE4B,OAGF,OADA,SAAgB,IAAM4uE,EAAOQ,WAAWpvE,KACjC,CACLkvE,mBACAG,WAAYT,EAAOS,WACnBF,wBAEJ,CACA,MAAMG,EAAiB,CAACV,EAAQhuC,EAAW2uC,EAAaC,KACtD,IAAIC,EAAgB,CAClB3gE,IAAK,EACLC,KAAM,EACN2yD,MAAO,EACPmB,OAAQ,GAEV,MAAM6M,EAAS,CAAC,CACd1vE,GAAI,GACJ2vE,MAAO,IACFF,KAGP,IAAK,MAAMzvE,KAAM4uE,EAAQ,CACvB,MAAM7tC,EAAWH,EAAUj9B,IAAI3D,GACzB8hB,EAASytD,EAAY5rE,IAAI3D,GACzBylE,EAAS+J,EAAY7rE,IAAI3D,GAC/B,IAAK+gC,IAAajf,IAAW2jD,EAAQ,SACrC,MAAMkK,EAAQ,IACTF,EACH,CAAC1uC,EAAS3iC,OAAQwZ,SAAS63D,EAAc1uC,EAAS3iC,OAAQ,KAAOqnE,EAAOrnE,MAAQwZ,SAASkK,EAAO1jB,MAAO,IAAM,IAE/GsxE,EAAOvsE,KAAK,CACVnD,KACA2vE,UAEFF,EAAgBE,CAClB,CACA,OAAOD,CAAM,EAER,SAASE,EAAajvE,GAC3B,MAAMkvE,GAAe,QAAOzB,EAAkB,MACxC0B,GAAa,SAAS,IAAMD,EAAeA,EAAaC,WAAW1xE,MAAQ,IAAMkwE,IACjFyB,GAAa,QAAI,IACjBnvC,GAAY,QAAS,IAAIr9B,KACzBgsE,GAAc,QAAS,IAAIhsE,KAC3BysE,GAAa,QAAS,IAAIzsE,KAC1BisE,GAAc,QAAS,IAAIjsE,KAC3B0sE,GAAsB,QAAS,IAAI1sE,MACnC,UACJ2qE,EACAh6D,YAAam7D,GACXpB,IACEiC,GAAmB,SAAS,KAChC,MAAMhsE,EAAM,IAAIX,IACVirE,EAAW7tE,EAAM6tE,UAAY,GACnC,IAAK,MAAM2B,KAAW3B,EAASxrE,QAAO4yB,GAAQA,EAAKhoB,SAAS,OAAO,CACjE,MAAOkB,EAAK+zD,GAAUsN,EAAQpoE,MAAM,KACpC,IAAKgoE,EAAW3xE,MAAMwP,SAASkB,KAASihE,EAAW3xE,MAAMwP,SAASi1D,GAAS,SAC3E,MAAMuN,EAAcxvC,EAAUj9B,IAAImL,GAC5BuhE,EAAiBzvC,EAAUj9B,IAAIk/D,GAC/ByN,EAAYf,EAAY5rE,IAAImL,GAC5ByhE,EAAehB,EAAY5rE,IAAIk/D,GAChCuN,GAAgBC,GAAmBC,GAAcC,IACtDrsE,EAAIN,IAAIi/D,EAAQ,CACd9hC,SAAUqvC,EAAYhyE,MACtB0jB,OAAQlK,SAAS04D,EAAUlyE,MAAO,MAEpC8F,EAAIN,IAAIkL,EAAK,CACXiyB,SAAUsvC,EAAejyE,MACzB0jB,QAASlK,SAAS24D,EAAanyE,MAAO,MAE1C,CACA,OAAO8F,CAAG,IAENwrE,GAAS,SAAS,KACtB,MAAMc,EAAmB,IAAI,IAAItc,IAAI,IAAI8b,EAAW3a,UAAUnxD,KAAIykC,GAAKA,EAAEvqC,UAASm3B,MAAK,CAACvsB,EAAGwsB,IAAMxsB,EAAIwsB,IAC/Fo5C,EAAS,GACf,IAAK,MAAMjmC,KAAK6nC,EAAkB,CAChC,MAAMC,EAAQV,EAAW3xE,MAAM4E,QAAOhD,GAAMgwE,EAAWrsE,IAAI3D,IAAK5B,QAAUuqC,IAC1EimC,EAAOzrE,QAAQstE,EACjB,CACA,OAAOnB,EAAeV,EAAQhuC,EAAW2uC,EAAaC,EAAY,IAE9DkB,GAAqB,SAAS,KAC1BjuE,MAAM0f,KAAK8tD,EAAoB5a,UAAUuE,MAAK0B,GAAOA,EAAIl9D,UAE7D0wE,GAAW,SAAS,IACjBY,EAAOtxE,MAAMsxE,EAAOtxE,MAAMyC,OAAS,GAAG8uE,QAEzCZ,GAAa,SAAS,KACnB,CACL,mBAAmB,QAAcD,EAAS1wE,MAAM2Q,MAChD,oBAAoB,QAAc+/D,EAAS1wE,MAAMsjE,OACjD,kBAAkB,QAAcoN,EAAS1wE,MAAM0Q,KAC/C,qBAAqB,QAAcggE,EAAS1wE,MAAMykE,WAC9C6N,EAAmBtyE,WAAQ4L,EAAY,CACzCwb,WAAY,YAIZirD,GAAQ,SAAS,IACdf,EAAOtxE,MAAM6F,MAAM,GAAGC,KAAI,CAAC2G,EAAMkM,KACtC,IAAI,GACF/W,GACE6K,EACJ,MAAM,MACJ8kE,GACED,EAAOtxE,MAAM2Y,GACX7G,EAAOq/D,EAAY5rE,IAAI3D,GACvB+gC,EAAWH,EAAUj9B,IAAI3D,GAC/B,MAAO,CACLA,QACG2vE,EACHz/D,KAAM8C,OAAO9C,EAAK9R,OAClB2iC,SAAUA,EAAS3iC,MACpB,MAGCywE,EAAgB7uE,GACbywE,EAAMryE,MAAM2iB,MAAK6U,GAAQA,EAAK51B,KAAOA,IAExC2wE,GAAS,EAAAxJ,EAAA,IAAmB,gBAC5BuF,GAAY,SAAW,IAC7B,SAAU,KACRA,EAAUtuE,OAAQ,CAAI,KAExB,QAAQgwE,EAAkB,CACxB1nB,SAAU,CAACwgB,EAAIlzD,KACb,IAAI,GACFhU,EAAE,MACF66C,EAAK,SACL9Z,EAAQ,WACR6vC,EAAU,YACVC,EAAW,OACXpL,EAAM,mBACNqL,EAAkB,SAClB7F,GACEj3D,EACJg8D,EAAWpsE,IAAI5D,EAAI66C,GACnBja,EAAUh9B,IAAI5D,EAAI+gC,GAClBwuC,EAAY3rE,IAAI5D,EAAI4wE,GACpBpB,EAAY5rE,IAAI5D,EAAIylE,GACpBqL,GAAsBb,EAAoBrsE,IAAI5D,EAAI8wE,GAClD,MAAM9c,GAAY,QAAwBqa,EAAsBsC,GAAQvV,OAClE2V,EAAgB/c,EAAUjwD,QAAQmjE,GACpC6J,GAAiB,EAAGhB,EAAW3xE,MAAM0F,OAAOitE,EAAe,EAAG/wE,GAAS+vE,EAAW3xE,MAAM+E,KAAKnD,GACjG,MAAM+W,GAAQ,SAAS,IAAM05D,EAAMryE,MAAMguC,WAAUxrC,GAAKA,EAAEZ,KAAOA,MAC3D8+C,GAAS,SAAS,IAAMgxB,EAAW1xE,MAA8B,EAAtBsxE,EAAOtxE,MAAMyC,OAA2B,EAAdkW,EAAM3Y,QAC3E8wE,GAAmB,SAAS,KAChC,MAAMx3D,EAAkC,SAAnBqpB,EAAS3iC,OAAuC,UAAnB2iC,EAAS3iC,MACrD4yE,EAA0C,UAAnBjwC,EAAS3iC,MAChC6yE,EAAwC,WAAnBlwC,EAAS3iC,MAC9B8R,EAAO2gE,EAAYzyE,OAASwyE,EAAWxyE,MACvC8yE,EAAgB,IAAThhE,EAAa,IAAM,KAC1Bq0C,EAAS,CACb,CAACxjB,EAAS3iC,OAAQ,EAClB0gD,OAAQA,EAAO1gD,MACf0K,UAAW,YAAY4O,EAAe,IAAM,QAAQ+tD,EAAOrnE,MAAQ,IAAe,IAAT8R,EAAa,IAAMA,KAAU8gE,GAAwBC,GAAsB,EAAI,KAAKC,KAC7JnwC,SAAUkqC,EAAS7sE,OAAS0xE,EAAW1xE,QAAUkwE,EAAc,WAAa,WACxEoC,EAAmBtyE,WAAQ4L,EAAY,CACzCwb,WAAY,SAGhB,IAAKknD,EAAUtuE,MAAO,OAAOmmD,EAC7B,MAAM3uB,EAAO66C,EAAMryE,MAAM2Y,EAAM3Y,OAC/B,IAAKw3B,EAAM,MAAM,IAAI44B,MAAM,yCAAyCxuD,MACpE,MAAMmwE,EAAUD,EAAiB9xE,MAAMuF,IAAI3D,GAI3C,OAHImwE,IACFv6C,EAAKu6C,EAAQpvC,WAAaovC,EAAQruD,QAE7B,IACFyiC,EACH1yC,OAAQ6F,EAAe,eAAeke,EAAK9mB,WAAW8mB,EAAKitC,YAAcgO,EAAYzyE,MAAQ,GAAGyyE,EAAYzyE,eAAY4L,EACxH+E,KAAMiiE,OAAuBhnE,EAAY,GAAG4rB,EAAK7mB,SACjD2yD,MAAOsP,EAAuB,GAAGp7C,EAAK8rC,eAAY13D,EAClD8E,IAAwB,WAAnBiyB,EAAS3iC,MAAqB,GAAGw3B,EAAK9mB,aAAU9E,EACrD64D,OAA2B,QAAnB9hC,EAAS3iC,MAAkB,GAAGw3B,EAAKitC,gBAAa74D,EACxD2H,MAAQ+F,EAAiEm5D,EAAYzyE,MAAQ,GAAGyyE,EAAYzyE,eAAY4L,EAAjG,eAAe4rB,EAAK7mB,YAAY6mB,EAAK8rC,WAC7D,IAEGyN,GAAwB,SAAS,KAAM,CAC3CrwB,OAAQA,EAAO1gD,MAAQ,MAEzB,MAAO,CACL8wE,mBACAC,wBACArwB,SACD,EAEHswB,WAAYpvE,IACVgwE,EAAW7jB,OAAOnsD,GAClB4gC,EAAUurB,OAAOnsD,GACjBuvE,EAAYpjB,OAAOnsD,GACnBwvE,EAAYrjB,OAAOnsD,GACnBiwE,EAAoB9jB,OAAOnsD,GAC3B+vE,EAAW3xE,MAAQ2xE,EAAW3xE,MAAM4E,QAAOuN,GAAKA,IAAMvQ,GAAG,EAE3D8uE,WACAC,aACAF,gBACA4B,QACApB,aACAS,eAEF,MAAMqB,GAAgB,SAAS,IAAM,CAAC,WAAY,CAChD,wBAAyBxwE,EAAM8tE,eAE3B2C,GAAe,SAAS,KAAM,CAClCtyB,OAAQ+wB,EAAeC,EAAW1xE,WAAQ4L,EAC1C+2B,SAAU8uC,EAAe,gBAAa7lE,EACtCyC,SAAUojE,EAAe,cAAW7lE,MAEtC,MAAO,CACLmnE,gBACAC,eACAvC,gBACA4B,QACApB,aACAgC,UAAWnD,EAEf,C,2CCtQO,MAAMoD,GAAgB,EAAArQ,EAAA,GAAa,KACrC,YACAsN,EAAgB,CACjBE,YAAY,QAEX,WACF,QACU8C,GAAO,UAAmB,CACrChzE,KAAM,OACNoC,MAAO2wE,IACP,KAAA1Y,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM2mE,GAAQ,QAAa7wE,IACrB,cACJwwE,EAAa,cACbtC,EAAa,MACb4B,EAAK,UACLY,GACEzB,EAAajvE,IACX,WACJurE,IACE,UAQJ,OAPA,EAAAqB,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,IAAO8D,EACP,MAAS,CAAC,gBAAiBG,EAAMvF,aAAa7tE,MAAO+yE,EAAc/yE,MAAO8tE,EAAW9tE,MAAOuC,EAAMy4D,OAClG,MAAS,CAACz4D,EAAM2E,QACf,EAAC,QAAa,MAAO,CACtB,MAAS,uBACR,CAACuzD,EAAMzR,kBACH,CACLynB,gBACA4B,QACAe,QAEJ,IC3CWC,GAAe,EAAAxQ,EAAA,GAAa,CACvC/yD,IAAK,CACH4d,KAAMlZ,OACNw0C,QAAS,QAEV,OCHUsqB,GAAyB,EAAAzQ,EAAA,GAAa,CACjDnzD,KAAM8E,WACH,YACA6+D,KACF,iBACUE,GAAgB,UAAmB,CAC9CpzE,KAAM,gBACNoC,MAAO+wE,IACP,KAAA9Y,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAYJ,OAXA,EAAA0iE,EAAA,IAAU,KACR,MAAMqE,KAAa/Y,EAAMzR,SAAWyR,EAAM/qD,MAAQnN,EAAMmN,MACxD,OAAO,QAAanN,EAAMuN,IAAK,CAC7B,MAAS,CAAC,kBAAmBvN,EAAMy4D,OACnC,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,CAACwqB,IAAW,QAAa,MAAO,CAC7C,MAAS,gCACR,CAAC/Y,EAAM/qD,KAAO+qD,EAAM/qD,OAASnN,EAAMmN,KAAM+qD,EAAMzR,gBAClD,IAEG,CAAC,CACV,IC1BWyqB,GAAsB,EAAA5Q,EAAA,GAAa,CAC9Ct/B,SAAU62B,QACVsZ,MAAOtZ,QACPuZ,YAAavZ,QACbwZ,cAAexZ,QACfxT,KAAMpyC,OACN5M,OAAQ4M,QACP,cACI,SAASq/D,EAAoB1zE,EAAMyH,EAAQg/C,GAChD,OAAO,UAAmB,CACxBzmD,OACAoC,MAAOkxE,EAAoB,CACzB7sB,OACAh/C,WAEF,KAAA4yD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMqnE,EAAY,CAChB,aAAAC,CAAc9pE,GACR1H,EAAMqF,SACRqC,EAAG/C,MAAMy4C,gBAAkBp9C,EAAMqF,OAErC,EACA,OAAAosE,CAAQ/pE,GACN,GAAI1H,EAAMqxE,cAAe,CACvB,MAAM,UACJ7zD,EAAS,WACTD,EAAU,YACV9N,EAAW,aACX4N,GACE3V,EACJA,EAAGgqE,yBAA2B,CAC5BtxC,SAAU14B,EAAG/C,MAAMy7B,SACnBjyB,IAAKzG,EAAG/C,MAAMwJ,IACdC,KAAM1G,EAAG/C,MAAMyJ,KACf4C,MAAOtJ,EAAG/C,MAAMqM,MAChBE,OAAQxJ,EAAG/C,MAAMuM,QAEnBxJ,EAAG/C,MAAMy7B,SAAW,WACpB14B,EAAG/C,MAAMwJ,IAAM,GAAGqP,MAClB9V,EAAG/C,MAAMyJ,KAAO,GAAGmP,MACnB7V,EAAG/C,MAAMqM,MAAQ,GAAGvB,MACpB/H,EAAG/C,MAAMuM,OAAS,GAAGmM,KACvB,CACIrd,EAAMoxE,aACR1pE,EAAG/C,MAAMqF,YAAY,UAAW,OAAQ,YAE5C,EACA,YAAAyhE,CAAa/jE,GACX,GAAI1H,EAAMqxE,eAAiB3pE,GAAIgqE,yBAA0B,CACvD,MAAM,SACJtxC,EAAQ,IACRjyB,EAAG,KACHC,EAAI,MACJ4C,EAAK,OACLE,GACExJ,EAAGgqE,gCACAhqE,EAAGgqE,yBACVhqE,EAAG/C,MAAMy7B,SAAWA,GAAY,GAChC14B,EAAG/C,MAAMwJ,IAAMA,GAAO,GACtBzG,EAAG/C,MAAMyJ,KAAOA,GAAQ,GACxB1G,EAAG/C,MAAMqM,MAAQA,GAAS,GAC1BtJ,EAAG/C,MAAMuM,OAASA,GAAU,EAC9B,CACF,GAEF,MAAO,KACL,MAAM3D,EAAMvN,EAAMmxE,MAAQ,KAAkB,KAC5C,OAAO,IAAA3Y,GAAEjrD,EAAK,CACZ3P,KAAMoC,EAAMghC,SAAW,GAAKpjC,EAC5B+zE,KAAM3xE,EAAMghC,YACRhhC,EAAMmxE,WAAQ9nE,EAAY,CAC5Bg7C,KAAMrkD,EAAMqkD,SAEVrkD,EAAMghC,SAAW,CAAC,EAAIuwC,GACzBrZ,EAAMzR,QAAQ,CAErB,GAEJ,CACO,SAASmrB,EAA2Bh0E,EAAM2zE,GAC/C,IAAIltB,EAAOj7C,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,SAC/E,OAAO,UAAmB,CACxBxL,OACAoC,MAAO,CACLqkD,KAAM,CACJl5B,KAAMlZ,OACNw0C,QAASpC,GAEXrjB,SAAU62B,QACVsZ,MAAOtZ,SAET,KAAAI,CAAMj4D,EAAOqT,GACX,IAAI,MACF6kD,GACE7kD,EACJ,MAAM9F,EAAMvN,EAAMmxE,MAAQ,KAAkB,KAC5C,MAAO,KACE,IAAA3Y,GAAEjrD,EAAK,CACZ3P,KAAMoC,EAAMghC,SAAW,GAAKpjC,EAC5B+zE,KAAM3xE,EAAMghC,YAERhhC,EAAMghC,SAAW,CAAC,EAAIuwC,GACzBrZ,EAAMzR,QAEb,GAEJ,CC9Ge,SAAS,IACtB,IAAIorB,EAAsBzoE,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GAC1Fma,EAAIna,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,IAAmBA,UAAU,GACvE,MAAM0oE,EAAevuD,EAAI,QAAU,SAC7BwuD,GAAiB,QAAS,UAAUD,KAC1C,MAAO,CACL,aAAAN,CAAc9pE,GACZA,EAAGsqE,QAAUtqE,EAAGixB,WAChBjxB,EAAGuqE,cAAgB,CACjBptD,WAAYnd,EAAG/C,MAAMkgB,WACrB/Y,SAAUpE,EAAG/C,MAAMmH,SACnB,CAACgmE,GAAepqE,EAAG/C,MAAMmtE,GAE7B,EACA,OAAAI,CAAQxqE,GACN,MAAMyqE,EAAezqE,EAAGuqE,cACxBvqE,EAAG/C,MAAMqF,YAAY,aAAc,OAAQ,aAE3CtC,EAAG/C,MAAMmH,SAAW,SACpB,MAAMmuB,EAAS,GAAGvyB,EAAGqqE,OACrBrqE,EAAG/C,MAAMmtE,GAAgB,IACpBpqE,EAAG2V,aAER3V,EAAG/C,MAAMkgB,WAAastD,EAAattD,WAC/BgtD,GAAuBnqE,EAAGsqE,SAC5BtqE,EAAGsqE,QAAQxkE,UAAUC,IAAIokE,GAE3BjrE,uBAAsB,KACpBc,EAAG/C,MAAMmtE,GAAgB73C,CAAM,GAEnC,EACAwyC,aAAc2F,EACdC,iBAAkBD,EAClB,OAAAX,CAAQ/pE,GACNA,EAAGuqE,cAAgB,CACjBptD,WAAY,GACZ/Y,SAAUpE,EAAG/C,MAAMmH,SACnB,CAACgmE,GAAepqE,EAAG/C,MAAMmtE,IAE3BpqE,EAAG/C,MAAMmH,SAAW,SACpBpE,EAAG/C,MAAMmtE,GAAgB,GAAGpqE,EAAGqqE,OAC1BrqE,EAAG2V,aAERzW,uBAAsB,IAAMc,EAAG/C,MAAMmtE,GAAgB,KACvD,EACArG,eACA6G,iBAAkB7G,GAEpB,SAASA,EAAa/jE,GAChBmqE,GAAuBnqE,EAAGsqE,SAC5BtqE,EAAGsqE,QAAQxkE,UAAUqP,OAAOg1D,GAE9BO,EAAY1qE,EACd,CACA,SAAS0qE,EAAY1qE,GACnB,MAAM6H,EAAO7H,EAAGuqE,cAAcH,GAC9BpqE,EAAG/C,MAAMmH,SAAWpE,EAAGuqE,cAAcnmE,SACzB,MAARyD,IAAc7H,EAAG/C,MAAMmtE,GAAgBviE,UACpC7H,EAAGuqE,aACZ,CACF,C,kCCzDO,MAAMM,GAA6B,EAAAjS,EAAA,GAAa,CACrDvgE,OAAQ,CAACtB,OAAQqD,QAChB,uBACU0wE,GAAoB,UAAmB,CAClD50E,KAAM,oBACNoC,MAAOuyE,IACP,KAAAta,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMqnE,EAAY,CAChB,aAAAC,CAAc9pE,GACZA,EAAG/C,MAAM8tE,cAAgB,OACzB/qE,EAAG/C,MAAM+tE,WAAa,QACxB,EACA,aAAMR,CAAQxqE,EAAIrJ,SACV,IAAIo3D,SAAQhD,GAAW7rD,sBAAsB6rD,WAC7C,IAAIgD,SAAQhD,GAAW7rD,sBAAsB6rD,KACnD/qD,EAAG/C,MAAM+tE,WAAa,GACtB,MAAM,EACJnvD,EAAC,EACDC,EAAC,GACDmvD,EAAE,GACFC,EAAE,MACFhoE,GACEioE,EAAc7yE,EAAMD,OAAQ2H,GAC1BorE,GAAY,OAAQprE,EAAI,CAAC,CAC7BS,UAAW,aAAaob,QAAQC,cAAcmvD,MAAOC,KACrDpsC,QAAS,GACR,CAAC,GAAI,CACN97B,SAAU,IAAME,EAChB4hE,OAAQ,OAEVuG,EAAYrrE,IAAK/D,SAAQ+D,KACvB,OAAQA,EAAI,CAAC,CACX8+B,QAAS,GACR,CACDA,QAAS,EACTvM,OAAQ,KACP,CAAC,GAAI,CACNvvB,SAAU,IAAUE,EACpB4hE,OAAQ,MACR,IAEJsG,EAAUE,SAASld,MAAK,IAAMz3D,KAChC,EACA,YAAAouE,CAAa/kE,GACXA,EAAG/C,MAAMygE,eAAe,iBAC1B,EACA,aAAA6N,CAAcvrE,GACZA,EAAG/C,MAAM8tE,cAAgB,MAC3B,EACA,aAAMhB,CAAQ/pE,EAAIrJ,SACV,IAAIo3D,SAAQhD,GAAW7rD,sBAAsB6rD,KACnD,MAAM,EACJlvC,EAAC,EACDC,EAAC,GACDmvD,EAAE,GACFC,EAAE,MACFhoE,GACEioE,EAAc7yE,EAAMD,OAAQ2H,GAC1BorE,GAAY,OAAQprE,EAAI,CAAC,CAAC,EAAG,CACjCS,UAAW,aAAaob,QAAQC,cAAcmvD,MAAOC,KACrDpsC,QAAS,IACP,CACF97B,SAAU,IAAME,EAChB4hE,OAAQ,OAEVsG,EAAUE,SAASld,MAAK,IAAMz3D,MAC9B00E,EAAYrrE,IAAK/D,SAAQ+D,KACvB,OAAQA,EAAI,CAAC,CAAC,EAAG,CACf8+B,QAAS,EACTvM,OAAQ,IACP,CACDuM,QAAS,IACP,CACF97B,SAAU,IAAUE,EACpB4hE,OAAQ,MACR,GAEN,EACA,YAAAf,CAAa/jE,GACXA,EAAG/C,MAAMygE,eAAe,iBAC1B,GAEF,MAAO,IACEplE,EAAMD,QAAS,QAAa,MAAY,QAAY,CACzD,KAAQ,qBACPwxE,EAAW,CACZ,KAAO,IACLrZ,IAAS,QAAa,KAAY,CACpC,KAAQ,qBACPA,EAEP,IAIF,SAAS6a,EAAYrrE,GACnB,MAAMwrE,EAAMxrE,EAAGvD,cAAc,0DAA0DM,SACvF,OAAOyuE,GAAO,IAAIA,EACpB,CACA,SAASL,EAAc9yE,EAAQ2H,GAC7B,MAAMi6D,GAAY,QAAa5hE,GACzBozE,GAAQ,OAAkBzrE,IACzB8hC,EAASC,GAAWpjC,iBAAiBqB,GAAI01C,gBAAgBh2C,MAAM,KAAK7D,KAAIqM,GAAK/G,WAAW+G,MACxFwjE,EAAYC,GAAgBhtE,iBAAiBqB,GAAIpB,iBAAiB,6BAA6Bc,MAAM,KAC5G,IAAI8lC,EAAUy0B,EAAUvzD,KAAOuzD,EAAU3wD,MAAQ,EAC9B,SAAfoiE,GAA0C,SAAjBC,EAC3BnmC,GAAWy0B,EAAU3wD,MAAQ,EACL,UAAfoiE,GAA2C,UAAjBC,IACnCnmC,GAAWy0B,EAAU3wD,MAAQ,GAE/B,IAAIm8B,EAAUw0B,EAAUxzD,IAAMwzD,EAAUzwD,OAAS,EAC9B,QAAfkiE,GAAyC,QAAjBC,EAC1BlmC,GAAWw0B,EAAUzwD,OAAS,EACN,WAAfkiE,GAA4C,WAAjBC,IACpClmC,GAAWw0B,EAAUzwD,OAAS,GAEhC,MAAMoiE,EAAM3R,EAAU3wD,MAAQmiE,EAAMniE,MAC9BuiE,EAAM5R,EAAUzwD,OAASiiE,EAAMjiE,OAC/BsiE,EAAOloE,KAAKC,IAAI,EAAG+nE,EAAKC,GACxBZ,EAAKW,EAAME,GAAQ,EACnBZ,EAAKW,EAAMC,GAAQ,EAGnBC,EAAMN,EAAMniE,MAAQmiE,EAAMjiE,QAAUlQ,OAAO+pB,WAAa/pB,OAAOuzB,aAC/D3pB,EAAQ6oE,EAAM,IAAOnoE,KAAKE,IAAI,IAAoB,IAAdioE,EAAM,KAAa,GAAK,EAClE,MAAO,CACLlwD,EAAG2pB,GAAW1D,EAAU2pC,EAAM/kE,MAC9BoV,EAAG2pB,GAAW1D,EAAU0pC,EAAMhlE,KAC9BwkE,KACAC,KACAhoE,QAEJ,CC1IO,MAAM8oE,EAAiBpC,EAAoB,iBAAkB,gBAAiB,UAGxEqC,EAA0BrC,EAAoB,4BAC9CsC,EAAuBtC,EAAoB,yBAC3CuC,EAAkBvC,EAAoB,mBACtCwC,EAAmBxC,EAAoB,oBACvCyC,EAAqBzC,EAAoB,uBACzC0C,EAA4B1C,EAAoB,+BAChD2C,EAAqB3C,EAAoB,uBACzC4C,EAA4B5C,EAAoB,+BAChD6C,EAAoB7C,EAAoB,sBACxC8C,EAA2B9C,EAAoB,8BAC/C+C,EAAoB/C,EAAoB,sBACxCgD,EAA2BhD,EAAoB,8BAG/CiD,EAAoB3C,EAA2B,oBAAqB,KACpE4C,EAAqB5C,EAA2B,sBAAuB,EAA0B,IAAI,I,eChB3G,MAAM6C,IAA6B,EAAAnU,EAAA,GAAa,CACrD7qC,SAAUh3B,OACVuiC,SAAU62B,QACVthB,MAAO,CAAClkC,OAAQJ,QAChBshC,KAAM,CAACskB,QAAS5lD,QAChByiE,OAAQ7c,SACP,qBACU8c,IAAoB,SAAiB,EAAjB,CAAwB,CACvD/2E,KAAM,oBACNoC,MAAOy0E,KACP,KAAAxc,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,SACJurB,EAAQ,SACRuL,EAAQ,MACRuV,EAAK,KACLhD,EAAI,OACJmhC,IACE,QAAO10E,GAOX,OANA,SAAgBy1B,EAAU,CACxB8gB,QACAhD,OACAmhC,SACA1zC,aAEK,IAAMk3B,EAAMzR,WACrB,I,eCvBK,SAASmuB,GAAgB50E,GAC9B,MAAO,CACL60E,cAAc,SAAS,KACrB,MAAMnkD,EAAQre,OAAOrS,EAAM80E,aAC3B,OAAOpkD,EAAQ,CACbqkD,cAAe9iE,OAAO,EAAIye,EAAQ,KAAO,UACvCrnB,CAAS,IAGnB,CACO,MAAM2rE,IAAuB,EAAA1U,EAAA,GAAa,CAC/CwU,YAAa,CAAC7iE,OAAQI,QACtBm4D,aAAc,KACdyK,OAAQpd,YACL,aACA,WACF,eACUqd,IAAc,UAAmB,CAC5Ct3E,KAAM,cACNoC,MAAOg1E,KACP,KAAA/c,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJ2qE,GACED,GAAgB50E,IACd,gBACJ8rE,IACE,QAAa9rE,GAYjB,OAXA,EAAA4sE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,eAAgB,CACxB,uBAAwB5sE,EAAMi1E,QAC7Bj1E,EAAMy4D,OACT,MAAS,CAACqT,EAAgBruE,MAAOuC,EAAM2E,QACtC,EAAC,QAAa,MAAO,CACtB,MAAS,sBACT,MAASkwE,EAAap3E,OACrB,MAAOy6D,EAAMid,eAAgBjd,EAAMzR,UAAW,QAAa,MAAO,CACnE,MAAS,CAAC,wBAAyBzmD,EAAMwqE,eACxC,CAACtS,EAAMzR,gBACH,CAAC,CACV,I,eC/CK,MAAM2uB,IAAmB,EAAA9U,EAAA,GAAa,CAC3C+U,QAAS,CACPlqD,KAAM,CAAC0sC,QAASxlD,OAAQJ,QACxBw0C,aAASp9C,GAEXisE,KAAMzd,SACL,WACI,SAAS0d,GAAWv1E,GACzB,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,MAAMgP,GAAiB,SAAS,KAC9B,MAAMH,GAAU,QAAMr1E,GAASA,EAAMvC,MAAQuC,EAAMq1E,QAC7CC,GAAO,QAAMt1E,GAASA,EAAMvC,MAAQuC,EAAMs1E,KAC1CpuE,EAAU,GAChB,IAAgB,IAAZmuE,GAAgC,KAAZA,EACtBnuE,EAAQ1E,KAAK,GAAG5E,mBACX,GAAuB,kBAAZy3E,GAAoC,IAAZA,EACxC,IAAK,MAAM53E,KAASwU,OAAOojE,GAASjuE,MAAM,KACxCF,EAAQ1E,KAAK,WAAW/E,UAEjB63E,IAAoB,IAAZD,IACjBnuE,EAAQ1E,KAAK,aAEf,OAAO0E,CAAO,IAEhB,MAAO,CACLsuE,iBAEJ,C,0BCjBO,MAAMC,IAAgB,EAAAnV,EAAA,GAAa,CACxCgK,SAAUzS,QACV6d,IAAKzjE,OACL0jE,MAAO9d,QACPoS,MAAOh4D,OACPy1B,UAAW,CACTvc,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,aAASp9C,GAEX0jE,MAAOlV,QACP+d,SAAU3jE,OACV4jE,QAAS5jE,OACTkC,QAAS,CACPgX,KAAM1sB,OAGNgoD,QAAS,KAAM,CACblT,UAAMlqC,EACNysE,gBAAYzsE,EACZ+d,eAAW/d,KAGf0sE,MAAO9jE,OACPxO,IAAK,CACH0nB,KAAM,CAAClZ,OAAQxT,QACfgoD,QAAS,IAEXuvB,YAAa/jE,OACbgkE,eAAgBhkE,OAChBikE,OAAQjkE,OACRmuB,SAAUnuB,UACP+iE,SACA,YACAI,SACA,WACF,QACUe,IAAO,UAAmB,CACrCv4E,KAAM,OACNktE,WAAY,CACVsL,UAAS,MAEXp2E,MAAOy1E,KACPxK,MAAO,CACLoL,UAAW54E,IAAS,EACpB64E,KAAM74E,IAAS,EACfwvD,MAAOxvD,IAAS,GAElB,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,uBACJigE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,eACJw1E,GACED,GAAWv1E,GACTumE,GAAK,EAAAC,EAAA,IAAmB,QACxB+P,GAAa,QAAW,IACxB1sC,GAAQ,UACRqK,GAAQ,QAAWl0C,EAAM+sE,MAAQ,UAAY,QAC7ChiC,GAAe,UACfyrC,GAAgB,UAChBC,GAAgB,SAAS,IACtBz2E,EAAMyD,KAA4B,kBAAdzD,EAAMyD,IAAmB,CAClDA,IAAKzD,EAAMyD,IAAIA,IACfyyE,OAAQl2E,EAAMk2E,QAAUl2E,EAAMyD,IAAIyyE,OAClCL,QAAS71E,EAAM61E,SAAW71E,EAAMyD,IAAIoyE,QACpCa,OAAQrkE,OAAOrS,EAAM80E,aAAe90E,EAAMyD,IAAIizE,QAAU,IACtD,CACFjzE,IAAKzD,EAAMyD,IACXyyE,OAAQl2E,EAAMk2E,OACdL,QAAS71E,EAAM61E,QACfa,OAAQrkE,OAAOrS,EAAM80E,aAAe,MAGlCA,GAAc,SAAS,IACpB2B,EAAch5E,MAAMi5E,QAAU3rC,EAAattC,MAAQ+4E,EAAc/4E,OAAS,IAcnF,SAASmC,EAAK+2E,GACZ,KAAI32E,EAAM+sE,QAAS4J,MACf,MAA0BA,GAAmB32E,EAAM+sE,OAAvD,CAEA,GADA74B,EAAMz2C,MAAQ,UACVg5E,EAAch5E,MAAMo4E,QAAS,CAC/B,MAAMe,EAAU,IAAIrwE,MACpBqwE,EAAQnzE,IAAMgzE,EAAch5E,MAAMo4E,QAClCgB,EAAYD,EAAS,KACvB,CACKH,EAAch5E,MAAMgG,MACzB,SAAS,KACPJ,EAAK,YAAawmC,EAAMpsC,OAAO84E,YAAcE,EAAch5E,MAAMgG,KACjEgD,YAAW,KACT,IAAI8/D,EAAG7L,YACP,GAAI7wB,EAAMpsC,OAAO26B,SAAU,CAIzB,GAHKyR,EAAMpsC,MAAMstC,cACf4zB,IAEkB,UAAhBzqB,EAAMz2C,MAAmB,OACxBq3E,EAAYr3E,OAAOo5E,EAAYhtC,EAAMpsC,MAAO,MAC7B,YAAhBy2C,EAAMz2C,OAAqBu0B,GACjC,MACO8iD,EAAYr3E,OAAOo5E,EAAYhtC,EAAMpsC,OAC1Cq5E,GACF,GACA,GAvBgE,CAyBtE,CACA,SAAS9kD,IACHu0C,EAAG7L,cACPoc,IACAD,EAAYhtC,EAAMpsC,OAClBy2C,EAAMz2C,MAAQ,SACd4F,EAAK,OAAQwmC,EAAMpsC,OAAO84E,YAAcE,EAAch5E,MAAMgG,KAC9D,CACA,SAASk7D,IACH4H,EAAG7L,cACPxmB,EAAMz2C,MAAQ,QACd4F,EAAK,QAASwmC,EAAMpsC,OAAO84E,YAAcE,EAAch5E,MAAMgG,KAC/D,CACA,SAASqzE,IACP,MAAMC,EAAMltC,EAAMpsC,MACds5E,IAAKR,EAAW94E,MAAQs5E,EAAIR,YAAcQ,EAAItzE,IACpD,EAvDA,SAAM,IAAMzD,EAAMyD,MAAK,KACrB7D,EAAqB,SAAhBs0C,EAAMz2C,MAAiB,KAE9B,QAAMq3E,GAAa,CAACpuD,EAAK4hD,MAClB5hD,GAAO4hD,GAAUz+B,EAAMpsC,OAC1Bo5E,EAAYhtC,EAAMpsC,MACpB,KAKF,SAAc,IAAMmC,MA6CpB,IAAIo3E,GAAS,EAIb,SAASH,EAAYE,GACnB,IAAIv5C,EAAUp0B,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,IAClF,MAAM6tE,EAAO,KAEX,GADAvwE,aAAaswE,GACTzQ,EAAG7L,YAAa,OACpB,MACE8b,cAAeU,EACfnsC,aAAcosC,GACZJ,EACAG,GAAaC,GACfpsC,EAAattC,MAAQ05E,EACrBX,EAAc/4E,MAAQy5E,GACZH,EAAI3+C,UAA4B,YAAhB8b,EAAMz2C,OAAkC,MAAX+/B,GAE9Cu5C,EAAIR,WAAWnnB,SAAS,SAAW2nB,EAAIR,WAAWpzB,WAAW,yBACtEpY,EAAattC,MAAQ,EACrB+4E,EAAc/4E,MAAQ,GAHtBu5E,EAAQh2E,OAAOyF,WAAWwwE,EAAMz5C,EAIlC,EAEFy5C,GACF,EAvBA,SAAgB,KACdvwE,aAAaswE,EAAM,IAuBrB,MAAMI,GAAiB,SAAS,KAAM,CACpC,oBAAqBp3E,EAAM21E,MAC3B,uBAAwB31E,EAAM21E,UAE1B0B,EAAU,KACd,IAAKZ,EAAch5E,MAAMgG,KAAuB,SAAhBywC,EAAMz2C,MAAkB,OAAO,KAC/D,MAAMs5E,GAAM,QAAa,MAAO,CAC9B,MAAS,CAAC,aAAcK,EAAe35E,OACvC,MAAS,CACP65E,eAAgBt3E,EAAMogC,UAExB,IAAOq2C,EAAch5E,MAAMgG,IAC3B,OAAUgzE,EAAch5E,MAAMy4E,OAC9B,IAAOl2E,EAAM01E,IACb,YAAe11E,EAAMg2E,YACrB,eAAkBh2E,EAAMi2E,eACxB,UAAaj2E,EAAM0nC,UACnB,MAAS1nC,EAAM+1E,MACf,IAAOlsC,EACP,OAAU7X,EACV,QAAW2sC,GACV,MACG4Y,EAAUrf,EAAMqf,YACtB,OAAO,QAAa,KAAiB,CACnC,WAAcv3E,EAAM6kB,WACpB,QAAU,GACT,CACD4hC,QAAS,IAAM,EAAC,QAAe8wB,GAAU,QAAa,UAAW,CAC/D,MAAS,kBACR,CAACA,EAASR,IAAQA,EAAK,CAAC,CAAC,KAAuB,WAAhB7iC,EAAMz2C,WACzC,EAEE+5E,EAAiB,KAAM,QAAa,KAAiB,CACzD,WAAcx3E,EAAM6kB,YACnB,CACD4hC,QAAS,IAAM,CAACgwB,EAAch5E,MAAMo4E,SAA2B,WAAhB3hC,EAAMz2C,QAAsB,QAAa,MAAO,CAC7F,MAAS,CAAC,aAAc,sBAAuB25E,EAAe35E,OAC9D,MAAS,CACP65E,eAAgBt3E,EAAMogC,UAExB,IAAOq2C,EAAch5E,MAAMo4E,QAC3B,IAAO71E,EAAM01E,IACb,YAAe11E,EAAMg2E,YACrB,eAAkBh2E,EAAMi2E,eACxB,UAAaj2E,EAAM0nC,WAClB,SAEC+vC,EAAgB,IACfvf,EAAMwf,aACJ,QAAa,KAAiB,CACnC,WAAc13E,EAAM6kB,WACpB,QAAU,GACT,CACD4hC,QAAS,IAAM,EAAkB,YAAhBvS,EAAMz2C,OAAuC,UAAhBy2C,EAAMz2C,QAAsBy6D,EAAMjL,SAAU,QAAa,MAAO,CAC5G,MAAS,sBACR,CAACiL,EAAMwf,mBAPmB,KAU3BC,EAAU,IACTzf,EAAMjL,OACJ,QAAa,KAAiB,CACnC,WAAcjtD,EAAM6kB,WACpB,QAAU,GACT,CACD4hC,QAAS,IAAM,CAAiB,UAAhBvS,EAAMz2C,QAAqB,QAAa,MAAO,CAC7D,MAAS,gBACR,CAACy6D,EAAMjL,aAPa,KAUrB2qB,EAAa,IACZ53E,EAAM41E,UACJ,QAAa,MAAO,CACzB,MAAS,kBACT,MAAS,CACPiC,gBAAiB,mBAAmB73E,EAAM41E,cAE3C,MANyB,KAQxBkC,GAAW,SAAW,GAC5B,CACE,MAAMp3C,GAAO,QAAMo0C,GAAapuD,IAC1BA,IAEF9f,uBAAsB,KACpBA,uBAAsB,KACpBkxE,EAASr6E,OAAQ,CAAI,GACrB,IAEJijC,IACF,GAEJ,CAyBA,OAxBA,EAAAksC,EAAA,IAAU,KACR,MAAMmL,EAAkB7C,GAAY/H,YAAYntE,GAChD,OAAO,SAAgB,QAAak1E,IAAa,QAAY,CAC3D,MAAS,CAAC,QAAS,CACjB,kBAAmBl1E,EAAMsqE,SACzB,kBAAmBwN,EAASr6E,OAC3B0sE,EAAuB1sE,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OAC7D,MAAS,CAAC,CACRznD,OAAO,QAA8B,SAAhBhR,EAAMgR,MAAmB+5B,EAAattC,MAAQuC,EAAMgR,QACxEo5D,EAAsB3sE,MAAOuC,EAAM2E,QACrCozE,EAAiB,CAClB,YAAejD,EAAYr3E,MAC3B,aAAcuC,EAAM01E,IACpB,KAAQ11E,EAAM01E,IAAM,WAAQrsE,IAC1B,CACF8rE,WAAY,KAAM,QAAa,KAAW,KAAM,EAAC,QAAakC,EAAS,KAAM,OAAO,QAAaG,EAAgB,KAAM,OAAO,QAAaI,EAAY,KAAM,OAAO,QAAaH,EAAe,KAAM,OAAO,QAAaE,EAAS,KAAM,QACzOlxB,QAASyR,EAAMzR,UACb,CAAC,EAAC,QAAkB,aAAc,CACpCnxC,QAAS1V,EACTuU,QAASnU,EAAMmU,SACd,KAAM,CACPwB,MAAM,KACJ,IAEC,CACL4gE,aACA1sC,QACAqK,QACAnJ,eACAyrC,gBAEJ,ICvSWwB,IAAkB,EAAA1X,EAAA,GAAa,CAC1C2X,OAAQ,CAACpgB,QAASxlD,OAAQJ,SACzB,UACI,SAASimE,GAAUl4E,GACxB,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,MAAM2R,GAAgB,SAAS,KAC7B,MAAMF,GAAS,QAAMj4E,GAASA,EAAMvC,MAAQuC,EAAMi4E,OAC5C/wE,EAAU,GAChB,IAAe,IAAX+wE,GAA8B,KAAXA,EACrB/wE,EAAQ1E,KAAK,GAAG5E,kBACX,GAAsB,kBAAXq6E,GAAkC,IAAXA,EACvC,IAAK,MAAMx6E,KAASwU,OAAOgmE,GAAQ7wE,MAAM,KACvCF,EAAQ1E,KAAK,UAAU/E,KAG3B,OAAOyJ,CAAO,IAEhB,MAAO,CACLixE,gBAEJ,CCpBO,MAAMC,IAAqB,EAAA9X,EAAA,GAAa,CAC7C+X,UAAW,CACTltD,KAAM,CAAC9Y,OAAQJ,QACf,SAAAuuD,CAAU5wD,GACR,MAAMnS,EAAQwZ,SAASrH,GACvB,OAAQsH,MAAMzZ,IAAUA,GAAS,GAGjCA,GAAS,EACX,IAED,aACI,SAAS66E,GAAat4E,GAC3B,MAAMu4E,GAAmB,SAAS,KAChC,MAAMF,GAAY,QAAMr4E,GAASA,EAAMvC,MAAQuC,EAAMq4E,UAC/CnxE,EAAU,GAChB,OAAiB,MAAbmxE,GACJnxE,EAAQ1E,KAAK,aAAa61E,KADInxE,CAEhB,IAEhB,MAAO,CACLqxE,mBAEJ,CCPA,MAAMC,GAAmB,CAAC,KAAM,YAAa,UAAW,cAAe,WAC1DC,IAAoB,EAAAnY,EAAA,GAAa,CAC5CgK,SAAUzS,QACV6gB,SAAU7gB,QACVoS,MAAOh4D,OACP0mE,QAAS,CACPxtD,KAAMlZ,OACNw0C,QAAS,UACT+Z,UAAW5wD,GAAK4oE,GAAiBvrE,SAAS2C,IAE5CgpE,SAAU/gB,QACVghB,gBAAiB,CACf1tD,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEX/hB,KAAMmzB,QACNihB,SAAUjhB,QACV3mD,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEX5c,MAAO53B,OACP8mE,MAAO9mE,UACJ+lE,SACA,YACAI,QACAhD,QACAtE,EAAa,CACdvjE,IAAK,eAEJ,WACF,YACUyrE,IAAW,UAAmB,CACzCp7E,KAAM,WACNoC,MAAOy4E,KACP,KAAAxgB,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,uBACJigE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,cACJm4E,GACED,GAAUl4E,IACR,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,IACT,aACJsrE,IACE,QAAatrE,IACX,WACJurE,IACE,UACE0N,GAAa,WAAcj5E,EAAM44E,WAAY1gB,EAAMghB,gBACnDC,GAAgB,SAAS,IAAMliE,SAAS5E,OAAOrS,EAAMkR,SAA6B,cAAlBlR,EAAM24E,QAA0BtmE,OAAOrS,EAAMkR,QAAU,IAAwB,gBAAlBlR,EAAM24E,QAA4B,EAAI,IAAwB,YAAlB34E,EAAM24E,QAAwB,GAAK,GAAI,MAChNE,GAAkB,SAAS,IAAMI,EAAWx7E,MAAQwZ,SAAS5E,OAAOrS,EAAM64E,kBAAsC,cAAlB74E,EAAM24E,QAA0BtmE,OAAOrS,EAAM64E,iBAAmB,IAAwB,gBAAlB74E,EAAM24E,QAA4B,EAAI,IAAwB,YAAlB34E,EAAM24E,QAAwB,EAAI,GAAI,IAAM,IA6ElQ,OA5EA,SAAgB,CACdS,KAAM,CACJC,QAAS,WAGb,EAAAzM,EAAA,IAAU,KACR,MAAM0M,KAAct5E,EAAM+4E,QAAS7gB,EAAM6gB,OACnCQ,KAAcrhB,EAAMruB,QAAS7pC,EAAM6pC,OACnCqvC,EAAYhhB,EAAMghB,cAExB,OADAD,EAAWx7E,SAAWuC,EAAM44E,WAAYM,IACjC,QAAal5E,EAAMuN,IAAK,CAC7B,MAAS,CAAC,YAAa,CACrB,sBAAuBvN,EAAMsqE,SAC7B,sBAAuBtqE,EAAM04E,SAC7B,kBAAmB14E,EAAM0kC,KACzB,sBAAuB1kC,EAAM84E,SAC7B,CAAC,sBAAsB94E,EAAM24E,YAAY,GACxCxO,EAAuB1sE,MAAO06E,EAAc16E,MAAO86E,EAAiB96E,MAAO+3E,EAAe/3E,MAAO6tE,EAAa7tE,MAAO8tE,EAAW9tE,MAAOuC,EAAMy4D,OAChJ,MAAS,CAAC2R,EAAsB3sE,MAAOuC,EAAM2E,QAC5C,CACD8hD,QAAS,IAAM,CAAC8yB,IAAY,QAAa,MAAO,CAC9C,IAAO,QACP,MAAS,oBACR,CAAErhB,EAAMruB,OAIA,QAAa8qC,GAAmB,CACzC,IAAO,iBACP,UAAa30E,EAAM6pC,MACnB,SAAY,CACVssC,KAAM,CACJR,OAAO,EACPlyE,IAAKzD,EAAM6pC,SAGdquB,EAAMruB,QAbU,QAAassC,GAAM,CACpC,IAAO,YACP,OAAS,EACT,IAAOn2E,EAAM6pC,OACZ,SASgB,QAAa8qC,GAAmB,CACjD,SAAY,CACV6E,MAAO,CACLtoE,QAAQ,QAAcioE,EAAc17E,UAGvC,CACDgpD,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,qBACT,MAAS,CACPv1C,QAAQ,QAAcioE,EAAc17E,SAErC,CAACy6D,EAAMjvC,UAAW,QAAa,MAAO,CACvC,MAAS,sBACR,CAACivC,EAAMjvC,cAAeqwD,IAAY,QAAatI,EAAe,CAC/D,IAAO,QACP,KAAQhxE,EAAM+4E,OACb,CACD5rE,KAAM+qD,EAAM6gB,QACV7gB,EAAMzR,YAAayR,EAAMlwC,SAAU,QAAa,MAAO,CACzD,MAAS,qBACR,CAACkwC,EAAMlwC,mBACR,QAAa2sD,GAAmB,CAClC,SAAY,CACV6E,MAAO,CACLtoE,QAAQ,QAAc2nE,EAAgBp7E,UAGzC,CACDgpD,QAAS,IAAM,EAAC,QAAa8tB,EAAmB,KAAM,CACpD9tB,QAAS,IAAM,CAACwyB,EAAWx7E,QAAS,QAAa,MAAO,CACtD,MAAS,uBACT,MAAS,CACPyT,QAAQ,QAAc2nE,EAAgBp7E,SAEvC,CAACy7E,YAGR,IAEG,CACLC,gBACAN,kBAEJ,I,0BC7JK,MAAMY,IAAkB,EAAAnZ,EAAA,GAAa,CAC1CoZ,aAAc,CACZvuD,KAAMlZ,QAER0nE,gBAAiB,CACfxuD,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,MAEV,UACI,SAASmzB,GAAU55E,GACxB,IAAI+V,EAAO3M,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChF,MAAM,UACJywE,GACE9jE,EACJ,IAAI+jE,EAAiB,EACjBC,EAAuB,EAC3B,MAAMh6E,GAAS,QAAI,MACbi6E,GAAgB,QAAW,GAC3BC,GAAc,QAAW,GACzBC,GAAmB,QAAW,GAC9BC,GAAiB,SAAW,GAC5BC,GAAgB,SAAW,GAC3BT,GAAkB,SAAS,IACxBtnE,OAAOrS,EAAM25E,mBAOhBU,GAAc,SAAS,KACpB,SAAOV,EAAgBl8E,MAAQu8E,EAAcv8E,OAASk8E,EAAgBl8E,OAAS,KAElFs0B,EAAW,KACf,MAAMpG,EAAW5rB,EAAOtC,MACxB,IAAKkuB,GAAYkuD,IAAcA,EAAUp8E,MAAO,OAChDq8E,EAAiBE,EAAcv8E,MAC/Bu8E,EAAcv8E,MAAQ,WAAYkuB,EAAWA,EAAS2uD,YAAc3uD,EAAS5d,UAC7E,MAAMwsE,EAAsB5uD,aAAoB6uD,OAASr8E,SAASiS,gBAAgBqqE,aAAe9uD,EAAS8uD,aACtGV,IAAyBQ,GAI7BH,EAAc38E,MAAQu8E,EAAcv8E,MAAQq8E,EAC5CI,EAAiBz8E,MAAQ6N,KAAKuE,IAAImqE,EAAcv8E,MAAQk8E,EAAgBl8E,QAJtEs8E,EAAuBQ,CAIqD,EAkChF,OAhCA,QAAMH,GAAe,KACnBH,EAAYx8E,MAAQw8E,EAAYx8E,OAASu8E,EAAcv8E,KAAK,KAE9D,QAAM08E,GAAgB,KACpBF,EAAYx8E,MAAQ,CAAC,KAEvB,SAAU,MACR,SAAM,IAAMuC,EAAM05E,eAAcA,IAC9B,MAAMpW,EAAYoW,EAAev7E,SAASgG,cAAcu1E,GAAgB14E,OACnEsiE,EAIDA,IAAcvjE,EAAOtC,QACzBsC,EAAOtC,OAAOsG,oBAAoB,SAAUguB,GAC5ChyB,EAAOtC,MAAQ6lE,EACfvjE,EAAOtC,MAAMqG,iBAAiB,SAAUiuB,EAAU,CAChDQ,SAAS,MAPT,SAAY,4CAA4CmnD,IAQxD,GACD,CACDhW,WAAW,GACX,KAEJ,SAAgB,KACd3jE,EAAOtC,OAAOsG,oBAAoB,SAAUguB,EAAS,IAKvD8nD,IAAa,QAAMA,EAAW9nD,EAAU,CACtC2xC,WAAW,IAEN,CACLiW,kBACAK,gBACAE,mBACAC,iBACAE,cAIAD,gBACAH,cAEJ,CC1FO,SAASS,KACd,MAAM5C,GAAW,SAAW,IAC5B,SAAU,KACR92E,OAAO4F,uBAAsB,KAC3BkxE,EAASr6E,OAAQ,CAAI,GACrB,IAEJ,MAAMk9E,GAAgB,SAAS,IAAO7C,EAASr6E,WAE3C4L,EAFmD,CACrDwb,WAAY,qBAEd,MAAO,CACL81D,gBACA7C,UAAU,QAASA,GAEvB,C,eCLO,MAAM8C,IAAmB,EAAAta,EAAA,GAAa,CAC3CjF,eAAgBppD,OAChB+3D,WAAY,CACV7+C,KAAM0sC,QACNpR,SAAS,GAEXzhD,SAAU,CACRmmB,KAAMlZ,OACNw0C,QAAS,MACT+Z,UAAW/iE,GAAS,CAAC,MAAO,UAAUwP,SAASxP,OAE9Cg7E,QACA1K,OACA0L,KACHvoE,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEV,WACUo0B,IAAU,UAAmB,CACxCj9E,KAAM,UACNoC,MAAO46E,KACP3P,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM4wE,GAAc,UACd7nC,GAAW,QAAgBjzC,EAAO,cAClCq7D,GAAiB,SAAS,KAC9B,MAAMj3C,EAAW,IAAImvC,IAAIvzD,EAAMq7D,gBAAgBj0D,MAAM,MAAQ,IAC7D,MAAO,CACLm/B,KAAMniB,EAASzlB,IAAI,QACnBo8E,UAAW32D,EAASzlB,IAAI,cACxBq8E,SAAU52D,EAASzlB,IAAI,YACvB+5E,SAAUt0D,EAASzlB,IAAI,YACvBs8E,QAAS72D,EAASzlB,IAAI,WACtBu8E,UAAW92D,EAASzlB,IAAI,cAEzB,IAEGk7E,GAAY,SAAS,KACzB,MAAMz1D,EAAWi3C,EAAe59D,MAChC,OAAO2mB,EAASmiB,MAAQniB,EAAS22D,WAAa32D,EAAS42D,UAAY52D,EAASs0D,UAAYt0D,EAAS62D,SAAW72D,EAAS82D,YAEpHjoC,EAASx1C,KAAK,KAEX,cACJu8E,EAAa,gBACbL,EAAe,cACfS,EAAa,YACbC,GACET,GAAU55E,EAAO,CACnB65E,cAEIsB,GAAU,SAAS,IAAM9f,EAAe59D,MAAM8oC,MAAQ80B,EAAe59D,MAAMs9E,YAC3EK,GAAc,SAAS,IAAMp7E,EAAM04E,UAAYrd,EAAe59D,MAAMi7E,WAAard,EAAe59D,MAAMu9E,SAAWX,EAAY58E,MAAQ,EAA0B,IAAtB48E,EAAY58E,SACrJ49E,GAAS,SAAS,IAAMr7E,EAAM0kC,MAAQ22B,EAAe59D,MAAMs9E,YAAc9nC,EAASx1C,OAAS49D,EAAe59D,MAAMw9E,UAAY5f,EAAe59D,MAAMu9E,SAAWhB,EAAcv8E,MAAQ,EAA4B,IAAxBu8E,EAAcv8E,SACpM+oC,GAAU,SAAS,IAAM60B,EAAe59D,MAAMy9E,UAAY7f,EAAe59D,MAAMu9E,SAAW,EAAIX,EAAY58E,MAAQ48E,EAAY58E,WAAQ4L,IACtI6H,GAAS,SAAS,KACtB,GAAImqD,EAAe59D,MAAM8oC,MAAQ80B,EAAe59D,MAAMu9E,SAAU,OAAO,EACvE,MAAM9pE,EAAS4pE,EAAYr9E,OAAO07E,eAAiB,EAC7CN,EAAkBiC,EAAYr9E,OAAOo7E,iBAAmB,EAC9D,OAAKsC,EAAQ19E,MACNu8E,EAAcv8E,MAAQk8E,EAAgBl8E,OAAS49D,EAAe59D,MAAMs9E,UAAY7pE,EAAS2nE,EAAkB3nE,EADvFA,EAAS2nE,CACoF,KAE1H,SAAe,SAAS,MAAQ74E,EAAMq7D,kBAAiB,MACrD,SAAY,KACN8f,EAAQ19E,MACN49D,EAAe59D,MAAMu9E,SACvB/nC,EAASx1C,MAAQu8E,EAAcv8E,MAAQk8E,EAAgBl8E,MAEvDw1C,EAASx1C,MAAQ28E,EAAc38E,OAASu8E,EAAcv8E,MAAQk8E,EAAgBl8E,MAGhFw1C,EAASx1C,OAAQ,CACnB,GACA,IAEJ,MAAM,cACJk9E,GACED,MACE,iBACJnM,GACEF,EAAc,CAChBhvE,GAAIW,EAAMpC,KACVs8C,OAAO,SAAS,IAAMjjC,SAASjX,EAAMk6C,MAAO,MAC5C9Z,UAAU,QAAMpgC,EAAO,YACvBiwE,WAAY/+D,EACZg/D,aAAa,aAAW7mE,GACxBy7D,OAAQ7xB,EACRq3B,UAAU,QAAMtqE,EAAO,cAoBzB,OAlBA,EAAA4sE,EAAA,IAAU,KACR,MAAM0O,EAAetC,GAAS7L,YAAYntE,GAC1C,OAAO,QAAag5E,IAAU,QAAY,CACxC,IAAO8B,EACP,MAAS,CAAC,YAAa,CACrB,oBAAwC,WAAnB96E,EAAMgF,UAC1BhF,EAAMy4D,OACT,MAAS,CAAC,IACL8V,EAAiB9wE,MACpB,4BAA6B+oC,EAAQ/oC,MACrCyT,YAAQ7H,KACLsxE,EAAcl9E,OAChBuC,EAAM2E,QACR22E,EAAc,CACf,SAAYF,EAAY39E,MACxB,KAAQ49E,EAAO59E,QACby6D,EAAM,IAEL,CAAC,CACV,IC5HI,GAAmB,CAAC,KAAM,UAAW,cAAe,WAM7CqjB,IAAmB,EAAAjb,EAAA,GAAa,CAC3CqY,QAAS,CACPxtD,KAAMlZ,OACNw0C,QAAS,UACT+Z,UAAW5wD,GAAK,GAAiB3C,SAAS2C,KAE3C,WACI,SAAS4rE,GAAWx7E,GACzB,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,MAAMiV,GAAiB,SAAS,IACvB,GAAG79E,cAAiBoC,EAAM24E,YAEnC,MAAO,CACL8C,iBAEJ,CCnBO,MAAMC,GAAkB,CAAC,WAAY,OAAQ,QAAS,WAAY,OAAQ,SAC1E,SAASC,GAAYC,EAAah+E,GACvC,OAAO,QAAa,KAAW,KAAM,CAACg+E,IAAe,QAAa,OAAQ,CACxE,IAAO,UACP,MAAS,GAAGh+E,cACX,OAAO,QAAa,OAAQ,CAC7B,IAAO,WACP,MAAS,GAAGA,eACX,OACL,CACO,MAAMi+E,IAAmB,EAAAvb,EAAA,GAAa,CAC3C2J,MAAOh4D,OACPonE,QAAS,CACPluD,KAAMlZ,OACNw0C,QAAS,WACT+Z,UAAW5wD,GAAK8rE,GAAgBzuE,SAAS2C,KAE1C,WACI,SAASksE,GAAW97E,GACzB,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,MAAMuV,GAAiB,SAAS,KAC9B,MAAM,QACJ1C,IACE,QAAMr5E,GACV,MAAO,GAAGpC,cAAiBy7E,GAAS,KAEhC,aACJ2C,EAAY,YACZC,IACE,UAAS,SAAS,KACpB,MAAM,QACJ5C,EAAO,MACPpP,IACE,QAAMjqE,GACV,MAAO,CACL,CAAC,CAAC,WAAY,QAAQiN,SAASosE,GAAW,aAAe,QAASpP,EACnE,KAEH,MAAO,CACL+R,eACAC,cACAF,iBAEJ,CChCO,MAAMG,IAAqB,EAAA5b,EAAA,GAAa,CAC7C6b,UAAWlqE,OACXmqE,QAASvkB,WACNmgB,SACA,YACAuD,QACAnD,QACAhD,QACAtE,QACA,aACA+K,MACF,aACUQ,IAAY,UAAmB,CAC1Cz+E,KAAM,YACNoC,MAAOk8E,KACP,KAAAjkB,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,eACJy7E,GACED,GAAWx7E,IACT,cACJm4E,GACED,GAAUl4E,IACR,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,IACf,SAAgB,CACdo5E,KAAM,CACJloE,OAAQ,OACRirE,WAAW,QAAMn8E,EAAO,aACxBiqE,OAAO,QAAMjqE,EAAO,SACpB24E,SAAS,QAAM34E,EAAO,WACtB0kC,MAAM,EACN20C,SAAS,QAAMr5E,EAAO,eAG1B,EAAA4sE,EAAA,IAAU,KACD,QAAa5sE,EAAMuN,IAAK,CAC7B,MAAS,CAAC,cAAe,CACvB,uBAAwBvN,EAAMo8E,SAC7B9Q,EAAa7tE,MAAO06E,EAAc16E,MAAOg+E,EAAeh+E,MAAO86E,EAAiB96E,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACtH,MAASz4D,EAAM2E,OACduzD,IAEP,IChEWokB,IAAiB,EAAAhc,EAAA,GAAa,CACzC0J,WAAY,CACV7+C,KAAM,KACNs7B,aAASp9C,GAEXkzE,SAAU1kB,QACV2kB,UAAW,CAAC3kB,QAAS5lD,QACrB1G,IAAK8G,OACLoqE,cAAexqE,OACf+uB,SAAU62B,SACT,SACU6kB,IAAqB,EAAApc,EAAA,GAAa,CAC7C7iE,MAAO,KACPujC,SAAU62B,QACV4kB,cAAexqE,QACd,cAII,SAAS0qE,GAAa38E,EAAO48E,GAClC,IAAIhlB,IAAWxuD,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,KAAmBA,UAAU,GAC9E,MAAMm9D,GAAK,EAAAC,EAAA,IAAmB,gBAC9B,IAAKD,EACH,MAAM,IAAI1Y,MAAM,oFAElB,MAAMxuD,GAAK,WACX,QAAQgC,OAAOm+D,IAAI,GAAGod,EAAUhrC,kBAAmBvyC,GACnD,MAAM8xE,GAAQ,QAAOyL,EAAW,MAChC,IAAKzL,EAAO,CACV,IAAKvZ,EAAU,OAAOuZ,EACtB,MAAM,IAAItjB,MAAM,2DAA2D+uB,EAAUhrC,cACvF,CACA,MAAMn0C,GAAQ,QAAMuC,EAAO,SACrBghC,GAAW,SAAS,OAASmwC,EAAMnwC,SAASvjC,QAASuC,EAAMghC,YACjEmwC,EAAMprB,SAAS,CACb1mD,KACA5B,QACAujC,YACCulC,IACH,SAAgB,KACd4K,EAAM1C,WAAWpvE,EAAG,IAEtB,MAAMw9E,GAAa,SAAS,IACnB1L,EAAM0L,WAAWx9E,KAEpBy9E,GAAU,SAAS,IAChB3L,EAAMrB,MAAMryE,MAAM,GAAG4B,KAAOA,IAE/B09E,GAAS,SAAS,IACf5L,EAAMrB,MAAMryE,MAAM0zE,EAAMrB,MAAMryE,MAAMyC,OAAS,GAAGb,KAAOA,IAE1Do9E,GAAgB,SAAS,IAAMI,EAAWp/E,OAAS,CAAC0zE,EAAMsL,cAAch/E,MAAOuC,EAAMy8E,iBAQ3F,OAPA,QAAMI,GAAYp/E,IAChB8oE,EAAGljE,KAAK,iBAAkB,CACxB5F,SACA,GACD,CACDw8D,MAAO,SAEF,CACL56D,KACAw9E,aACAC,UACAC,SACA96C,OAAQ,IAAMkvC,EAAM6L,OAAO39E,GAAKw9E,EAAWp/E,OAC3Cu/E,OAAQv/E,GAAS0zE,EAAM6L,OAAO39E,EAAI5B,GAClCg/E,gBACAh/E,QACAujC,WACAmwC,QAEJ,CACO,SAAS8L,GAASj9E,EAAO48E,GAC9B,IAAIliB,GAAc,EAClB,MAAMoV,GAAQ,QAAS,IACjBoN,GAAW,QAAgBl9E,EAAO,aAAc,IAAI4P,GAC/C,MAALA,EAAkB,GACfutE,GAAOrN,GAAO,QAAYlgE,MAChCA,IACD,MAAMwtE,EAAMC,GAAUvN,EAAOlgE,GAC7B,OAAO5P,EAAMu8E,SAAWa,EAAMA,EAAI,EAAE,IAEhCE,GAAU,EAAA9W,EAAA,IAAmB,YACnC,SAASzgB,EAAS9wB,EAAMsxC,GAEtB,MAAMgX,EAAYtoD,EACZz0B,EAAMa,OAAOm+D,IAAI,GAAGod,EAAUhrC,kBAC9BntC,GAAW,QAAwBjE,EAAK88E,GAAS7iB,OACjDrkD,EAAQ3R,EAASrB,QAAQmjE,GACD,OAA1B,QAAMgX,EAAU9/E,SAClB8/E,EAAU9/E,MAAQ2Y,EAClBmnE,EAAUC,iBAAkB,GAE1BpnE,GAAS,EACX05D,EAAM3sE,OAAOiT,EAAO,EAAGmnE,GAEvBzN,EAAMttE,KAAK+6E,EAEf,CACA,SAAS9O,EAAWpvE,GAClB,GAAIq7D,EAAa,OAMjB+iB,IACA,MAAMrnE,EAAQ05D,EAAMrkC,WAAUxW,GAAQA,EAAK51B,KAAOA,IAClDywE,EAAM3sE,OAAOiT,EAAO,EACtB,CAGA,SAASqnE,IACP,MAAMxoD,EAAO66C,EAAM1vD,MAAK6U,IAASA,EAAK+L,WAClC/L,GAA4B,UAApBj1B,EAAMw8E,YAA0BU,EAASz/E,MAAMyC,SACzDg9E,EAASz/E,MAAQ,CAACw3B,EAAK51B,IAE3B,CAeA,SAAS29E,EAAO39E,EAAI5B,GAClB,MAAMw3B,EAAO66C,EAAM1vD,MAAK6U,GAAQA,EAAK51B,KAAOA,IAC5C,IAAI5B,IAASw3B,GAAM+L,SACnB,GAAIhhC,EAAMu8E,SAAU,CAClB,MAAMmB,EAAgBR,EAASz/E,MAAM6F,QAC/B8S,EAAQsnE,EAAcjyC,WAAU77B,GAAKA,IAAMvQ,IAC3Cw9E,GAAczmE,EAMpB,GALA3Y,EAAQA,IAAUo/E,EAKdA,GAAc78E,EAAMw8E,WAAakB,EAAcx9E,QAAU,EAAG,OAIhE,IAAK28E,GAA2B,MAAb78E,EAAMuL,KAAemyE,EAAcx9E,OAAS,EAAIF,EAAMuL,IAAK,OAC1E6K,EAAQ,GAAK3Y,EAAOigF,EAAcl7E,KAAKnD,GAAa+W,GAAS,IAAM3Y,GAAOigF,EAAcv6E,OAAOiT,EAAO,GAC1G8mE,EAASz/E,MAAQigF,CACnB,KAAO,CACL,MAAMb,EAAaK,EAASz/E,MAAMwP,SAAS5N,GAC3C,GAAIW,EAAMw8E,WAAaK,EAAY,OACnCK,EAASz/E,MAAQA,IAAUo/E,EAAa,CAACx9E,GAAM,EACjD,CACF,CACA,SAASqlB,EAAKuV,GAGZ,GADIj6B,EAAMu8E,WAAU,SAAY,2DAC3BW,EAASz/E,MAAMyC,OAGb,CACL,MAAMy9E,EAAYT,EAASz/E,MAAM,GAC3BmgF,EAAe9N,EAAMrkC,WAAUxrC,GAAKA,EAAEZ,KAAOs+E,IACnD,IAAI/3D,GAAYg4D,EAAe3jD,GAAU61C,EAAM5vE,OAC3C29E,EAAU/N,EAAMlqD,GACpB,MAAOi4D,EAAQ78C,UAAYpb,IAAag4D,EACtCh4D,GAAYA,EAAWqU,GAAU61C,EAAM5vE,OACvC29E,EAAU/N,EAAMlqD,GAElB,GAAIi4D,EAAQ78C,SAAU,OACtBk8C,EAASz/E,MAAQ,CAACqyE,EAAMlqD,GAAUvmB,GACpC,KAd4B,CAC1B,MAAM41B,EAAO66C,EAAM1vD,MAAK6U,IAASA,EAAK+L,WACtC/L,IAASioD,EAASz/E,MAAQ,CAACw3B,EAAK51B,IAClC,CAYF,EAzDA,SAAU,KACRo+E,GAAqB,KAEvB,SAAgB,KACd/iB,GAAc,CAAI,KAEpB,SAAU,KAER,IAAK,IAAIz6D,EAAI,EAAGA,EAAI6vE,EAAM5vE,OAAQD,IAC5B6vE,EAAM7vE,GAAGu9E,kBACX1N,EAAM7vE,GAAGxC,MAAQwC,EAErB,IA8CF,MAAMi0C,EAAQ,CACZ6R,WACA0oB,aACAyO,WACAF,SACAh8C,UAAU,QAAMhhC,EAAO,YACvBwO,KAAM,IAAMkW,EAAKorD,EAAM5vE,OAAS,GAChC0B,KAAM,IAAM8iB,EAAK,GACjBm4D,WAAYx9E,GAAM69E,EAASz/E,MAAMwP,SAAS5N,GAC1Co9E,eAAe,SAAS,IAAMz8E,EAAMy8E,gBACpC3M,OAAO,SAAS,IAAMA,IACtBgO,aAAcrgF,GAASqgF,GAAahO,EAAOryE,IAG7C,OADA,QAAQm/E,EAAW1oC,GACZA,CACT,CACA,SAAS4pC,GAAahO,EAAOryE,GAC3B,MAAMsgF,EAAMZ,GAAOrN,EAAO,CAACryE,IAC3B,OAAKsgF,EAAI79E,OACF4vE,EAAMrkC,WAAUxW,GAAQA,EAAK51B,KAAO0+E,EAAI,MADtB,CAE3B,CACA,SAASZ,GAAOrN,EAAO9F,GACrB,MAAM+T,EAAM,GAUZ,OATA/T,EAAWrmE,SAAQlG,IACjB,MAAMw3B,EAAO66C,EAAM1vD,MAAK6U,IAAQ,QAAUx3B,EAAOw3B,EAAKx3B,SAChDugF,EAAclO,EAAMryE,GACP,MAAfw3B,GAAMx3B,MACRsgF,EAAIv7E,KAAKyyB,EAAK51B,IACU,MAAf2+E,GACTD,EAAIv7E,KAAKw7E,EAAY3+E,GACvB,IAEK0+E,CACT,CACA,SAASV,GAAUvN,EAAOiO,GACxB,MAAMrpB,EAAS,GAQf,OAPAqpB,EAAIp6E,SAAQtE,IACV,MAAM4+E,EAAYnO,EAAMrkC,WAAUxW,GAAQA,EAAK51B,KAAOA,IACtD,IAAK4+E,EAAW,CACd,MAAMhpD,EAAO66C,EAAMmO,GACnBvpB,EAAOlyD,KAAmB,MAAdyyB,EAAKx3B,MAAgBw3B,EAAKx3B,MAAQwgF,EAChD,KAEKvpB,CACT,CCxNO,MAAMwpB,GAAmB78E,OAAOm+D,IAAI,wBAC9B2e,IAAsB,EAAA7d,EAAA,GAAa,IAC3C4b,QACAI,MACF,cACU8B,IAAa,UAAmB,CAC3CxgF,KAAM,aACNoC,MAAOm+E,KACPlT,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,WACJ2yE,EAAU,KACVj7E,EAAI,KACJ4M,EAAI,OACJwuE,EAAM,SACNE,GACED,GAASj9E,EAAOk+E,IAiBpB,OAhBA,EAAAtR,EAAA,IAAU,KACR,MAAMyR,EAAgBhC,GAAUlP,YAAYntE,GAC5C,OAAO,QAAaq8E,IAAW,QAAY,CACzC,MAAS,CAAC,eAAgBr8E,EAAMy4D,QAC/B4lB,EAAe,CAChB,MAASr+E,EAAM2E,QACb,CACF8hD,QAAS,IAAM,CAACyR,EAAMzR,UAAU,CAC9Bo2B,aACAj7E,OACA4M,OACAwuE,SACAE,eAEF,IAEG,CACLt7E,OACA4M,OACAwuE,SAEJ,I,eCjDF,MAAMsB,GAAkB,CAAC,UAAW,QAAS,UAAW,QAAS,WAEpDC,IAAgB,EAAAje,EAAA,GAAa,CACxC/wD,KAAM,CACJ4b,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,YAEV,QACI,SAAS+3B,GAAQx+E,GACtB,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,OAAO,SAAiB,KACtB,IAAIiY,EACAC,EASJ,OARI,QAASJ,GAAiBt+E,EAAMuP,MAClCkvE,EAAc,GAAG7gF,WAAcoC,EAAMuP,OAC5BvP,EAAMuP,OACfmvE,EAAa,CACX1tE,OAAO,QAAchR,EAAMuP,MAC3B2B,QAAQ,QAAclR,EAAMuP,QAGzB,CACLkvE,cACAC,aACD,GAEL,CCfO,MAAMC,IAAiB,EAAAre,EAAA,GAAa,CACzC2J,MAAOh4D,OACP+uB,SAAU62B,QACVxhB,MAAOwhB,QACP1J,IAAK0J,QACL+mB,KAAM,UACH,YACAL,QACAzN,EAAa,CACdvjE,IAAK,UAEJ,WACF,SACUsxE,IAAQ,UAAmB,CACtCjhF,KAAM,QACNoC,MAAO2+E,KACP,KAAA1mB,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM40E,GAAW,WACX,aACJxT,IACE,QAAatrE,IACX,SACJ++E,IACE,UAAQ,SAAS,IAAMD,EAASrhF,OAASuC,EAAM4+E,SAC7C,YACJH,GACED,GAAQx+E,IACN,iBACJg/E,EAAgB,gBAChBC,IACE,UAAa,QAAMj/E,EAAO,UA4B9B,OA3BA,EAAA4sE,EAAA,IAAU,KACR,MAAMsS,EAAYhnB,EAAMzR,YACpBy4B,IACFJ,EAASrhF,OAAQ,QAAiByhF,GAAW78E,QAAO2G,GAAQA,EAAKmiB,OAAS,MAAQniB,EAAKvE,UAAqC,kBAAlBuE,EAAKvE,WAAuB,IAAIA,UAE5I,MAAM06E,KAAcz5B,EAAM/zB,UAAW+zB,EAAM05B,aAC3C,OAAO,QAAaL,EAASthF,MAAM4oD,UAAW,CAC5C,IAAOrmD,EAAMuN,IACb,KAAQwxE,EAASthF,MAAMmhF,KACvB,MAAS,CAAC,SAAU,cAAetT,EAAa7tE,MAAOghF,EAAYhhF,MAAOuhF,EAAiBvhF,MAAO,CAChG,oBAAqB0hF,EACrB,mBAAoBn/E,EAAMghC,SAC1B,gBAAiBhhC,EAAMq2C,MACvB,cAAer2C,EAAMmuD,KACpBnuD,EAAMy4D,OACT,MAAS,CAAEgmB,EAAYhhF,WAInB4L,EAJ2B,CAC7Bg2E,UAAU,QAAcr/E,EAAMuP,MAC9B2B,QAAQ,QAAclR,EAAMuP,MAC5ByB,OAAO,QAAchR,EAAMuP,OACd0vE,EAAgBxhF,MAAOuC,EAAM2E,OAC5C,KAAQw6E,EAAW,cAAW91E,EAC9B,eAAgB81E,EAChB,SAAYA,EAAWn/E,EAAMghC,UAAY,EAAI,OAAI33B,GAChD,CACDo9C,QAAS,IAAM,CAACy4B,IAChB,IAEG,CAAC,CACV,ICzEK,SAASI,GAAwBz4E,EAAUsN,GAChD,MAAMorE,GAAkB,UAClB5I,GAAiB,SAAW,GAClC,GAAI,KAAuB,CACzB,MAAMhkE,EAAW,IAAI6sE,sBAAqBtsE,IACxCrM,IAAWqM,EAASP,GACpBgkE,EAAel5E,QAAUyV,EAAQkN,MAAKq/D,GAASA,EAAM9I,gBAAe,GACnExiE,IACH,SAAgB,KACdxB,EAASwC,YAAY,KAEvB,QAAMoqE,GAAiB,CAACt9B,EAAUurB,KAC5BA,IACF76D,EAASiB,UAAU45D,GACnBmJ,EAAel5E,OAAQ,GAErBwkD,GAAUtvC,EAASe,QAAQuuC,EAAS,GACvC,CACDgY,MAAO,QAEX,CACA,MAAO,CACLslB,kBACA5I,iBAEJ,CCdO,MAAM+I,IAA6B,EAAApf,EAAA,GAAa,CACrDqf,QAAS1tE,OACTg4D,MAAOh4D,OACP2tE,cAAe,CAAC/nB,QAAS5lD,QACzB+3D,WAAY,CACV7+C,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXxe,OAAQ,CACN9c,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXz1C,MAAO,CACLma,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,OAER,YACA83B,QACAzN,EAAa,CACdvjE,IAAK,YAEJ,WACF,qBACUsyE,IAAoB,UAAmB,CAClDjiF,KAAM,oBACNoC,MAAO0/E,KACP,KAAAznB,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM41E,EAAwB,GACxBC,EAAgB,EAAIz0E,KAAKK,GAAKm0E,EAC9BvsC,GAAO,WACP,aACJ+3B,IACE,QAAatrE,IACX,YACJy+E,EAAW,WACXC,GACEF,GAAQx+E,IACN,iBACJg/E,EAAgB,gBAChBC,IACE,UAAa,QAAMj/E,EAAO,WAE5Bg/E,iBAAkBgB,EAClBf,gBAAiBgB,IACf,UAAa,QAAMjgF,EAAO,aACxB,gBACJu/E,EAAe,eACf5I,GACE2I,MACE,UACJ/R,EAAS,YACTh6D,GACE+5D,IACE4S,GAAkB,SAAS,IAAM50E,KAAKC,IAAI,EAAGD,KAAKE,IAAI,IAAK3C,WAAW7I,EAAMgqE,gBAC5Eh5D,GAAQ,SAAS,IAAMqB,OAAOrS,EAAMgR,SACpCzB,GAAO,SAAS,IAEbmvE,EAAWjhF,MAAQ4U,OAAOrS,EAAMuP,MAAQgE,EAAY9V,MAAQ8V,EAAY9V,MAAMuT,MAAQ1F,KAAKC,IAAIyF,EAAMvT,MAAO,MAE/G0iF,GAAW,SAAS,IAAML,GAAyB,EAAI9uE,EAAMvT,MAAQ8R,EAAK9R,OAAS,IACnF2iF,GAAc,SAAS,IAAMpvE,EAAMvT,MAAQ8R,EAAK9R,MAAQ0iF,EAAS1iF,QACjE4iF,GAAmB,SAAS,KAAM,SAAe,IAAMH,EAAgBziF,OAAS,IAAMsiF,KAiD5F,OAhDA,SAAY,KACVR,EAAgB9hF,MAAQ81C,EAAK91C,MAC7B8vE,EAAU9vE,MAAQ81C,EAAK91C,KAAK,KAE9B,EAAAmvE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,IAAOgmC,EACP,MAAS,CAAC,sBAAuB,CAC/B,uCAAwCvzC,EAAM4/E,cAC9C,+BAAgCjJ,EAAel5E,MAC/C,sCAA+D,mBAAxBuC,EAAM4/E,eAC5CtU,EAAa7tE,MAAOghF,EAAYhhF,MAAOuhF,EAAiBvhF,MAAOuC,EAAMy4D,OACxE,MAAS,CAACimB,EAAWjhF,MAAOwhF,EAAgBxhF,MAAOuC,EAAM2E,OACzD,KAAQ,cACR,gBAAiB,IACjB,gBAAiB,MACjB,gBAAiB3E,EAAM4/E,mBAAgBv2E,EAAY62E,EAAgBziF,OAClE,CACDgpD,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,CACPt+C,UAAW,wBAAwBkK,OAAOrS,EAAMioC,gBAElD,MAAS,6BACT,QAAW,OAAOk4C,EAAS1iF,SAAS0iF,EAAS1iF,SAC5C,EAAC,QAAa,SAAU,CACzB,MAAS,CAAC,gCAAiCuiF,EAAqBviF,OAChE,MAASwiF,EAAoBxiF,MAC7B,KAAQ,cACR,GAAM,MACN,GAAM,MACN,EAAKqiF,EACL,eAAgBM,EAAY3iF,MAC5B,mBAAoBsiF,EACpB,oBAAqB,GACpB,OAAO,QAAa,SAAU,CAC/B,MAAS,+BACT,KAAQ,cACR,GAAM,MACN,GAAM,MACN,EAAKD,EACL,eAAgBM,EAAY3iF,MAC5B,mBAAoBsiF,EACpB,oBAAqBM,EAAiB5iF,OACrC,QAASy6D,EAAMzR,UAAW,QAAa,MAAO,CAC/C,MAAS,gCACR,CAACyR,EAAMzR,QAAQ,CAChBhpD,MAAOyiF,EAAgBziF,eAGpB,CAAC,CACV,I,eC5HF,MAAM6iF,GAAc,CAClB7hC,OAAQ,SACRtwC,IAAK,SACL+zD,OAAQ,MACR9zD,KAAM,QACN2yD,MAAO,QAEIwf,IAAoB,EAAAjgB,EAAA,GAAa,CAC5Ct7D,SAAUiN,QACT,YACI,SAASuuE,GAAYxgF,GAC1B,IAAIygF,EAAWr3E,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,IAAmBA,UAAU,GAC1E6wB,EAAS7wB,UAAUlJ,OAAS,EAAIkJ,UAAU,QAAKC,EACnD,MAAM,MACJw3D,IACE,UACE6f,GAAiB,SAAS,KAC9B,IAAK1gF,EAAMgF,SAAU,MAAO,CAAC,EAC7B,MAAM,KACJqF,EAAI,MACJw1D,IACE,SAAY7/D,EAAMgF,SAASoC,MAAM,KAAKlH,OAAS,EAAIF,EAAMgF,SAAW,GAAGhF,EAAMgF,kBAAmB67D,EAAMpjE,OAC1G,SAASiiE,EAAUr1D,GACjB,OAAO4vB,EAASA,EAAO5vB,GAAQ,CACjC,CACA,MAAMu5C,EAAS,CAAC,EAuBhB,MAtBa,WAATv5C,IACEo2E,EAAU78B,EAAO08B,GAAYj2E,IAAS,eAAeq1D,EAAUr1D,QAAgBu5C,EAAOv5C,GAAQ,GAEtF,WAAVw1D,EACE4gB,EAAU78B,EAAO08B,GAAYzgB,IAAU,eAAeH,EAAUG,QAAiBjc,EAAOic,GAAS,GAExF,WAATx1D,EAAmBu5C,EAAOz1C,IAAMy1C,EAAOx1C,KAAO,MAChDw1C,EAAO,CACLz1C,IAAK,OACL+zD,OAAQ,OACR9zD,KAAM,MACN2yD,MAAO,OACP12D,IAAS,MAEbu5C,EAAOz7C,UAAY,CACjBgG,IAAK,mBACL+zD,OAAQ,mBACR9zD,KAAM,mBACN2yD,MAAO,mBACPtiB,OAAQ,yBACRp0C,IAEGu5C,CAAM,IAEf,MAAO,CACL88B,iBAEJ,CCzCO,MAAMC,IAA2B,EAAArgB,EAAA,GAAa,CACnDgK,SAAUzS,QACViN,OAAQ,CACN35C,KAAM0sC,QACNpR,SAAS,GAEXk5B,QAAS1tE,OACT2uE,UAAW,CAACvuE,OAAQJ,QACpB4uE,YAAa,CACX11D,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXq6B,YAAa7uE,OACb8uE,cAAe,CAAC1uE,OAAQJ,QACxB8vB,UAAW81B,QACXoS,MAAOh4D,OACPf,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXm5B,cAAe/nB,QACftsD,IAAK,CACH4f,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXujB,WAAY,CACV7+C,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXjgB,QAAS,CAACn0B,OAAQJ,QAClBwrD,QAAS5F,QACTmpB,OAAQnpB,QACRopB,QAASppB,QACTqpB,WAAYrpB,YACT,YACA0oB,GAAkB,CACnBv7E,SAAU,WAETowE,QACAtE,QACA,WACF,mBACUqQ,IAAkB,UAAmB,CAChDvjF,KAAM,kBACNoC,MAAO2gF,KACP1V,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMmB,GAAW,QAAgBrL,EAAO,eAClC,MACJ6gE,EAAK,WACL0K,IACE,WACE,aACJD,IACE,QAAatrE,IACX,eACJ0gF,GACEF,GAAYxgF,IACV,iBACJg/E,EAAgB,gBAChBC,IACE,SAAaj/E,EAAO,UAClB,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,SAAS,IAAMpqE,EAAM2/E,SAAW3/E,EAAMiqE,UAE3DE,uBAAwBiX,EACxBhX,sBAAuBiX,IACrB,UAAmB,SAAS,IAAMrhF,EAAM8gF,aAAe9gF,EAAM2/E,SAAW3/E,EAAMiqE,UAEhFE,uBAAwBmX,EACxBlX,sBAAuBmX,IACrB,SAAmBvhF,EAAO,UACxB,eACJw1E,GACED,GAAWv1E,IACT,gBACJu/E,EAAe,eACf5I,GACE2I,KACE/zE,GAAM,SAAS,IAAM1C,WAAW7I,EAAMuL,OACtC2F,GAAS,SAAS,IAAMrI,WAAW7I,EAAMkR,UACzCswE,GAAmB,SAAS,KAAM,QAAM34E,WAAW7I,EAAM6gF,aAAet1E,EAAI9N,MAAQ,IAAK,EAAG,OAC5FyiF,GAAkB,SAAS,KAAM,QAAMr3E,WAAWwC,EAAS5N,OAAS8N,EAAI9N,MAAQ,IAAK,EAAG,OACxFgkF,GAAa,SAAS,IAAM5gB,EAAMpjE,QAAUuC,EAAMy9D,UAClD54C,GAAa,SAAS,IAAM7kB,EAAM4/E,cAAgB,kBAAoB,uBACtE8B,EAA2B,MAAc1gF,OAAO2F,aAAa,2BAA2B4F,QAC9F,SAASo1E,EAAY5+E,GACnB,IAAKw8E,EAAgB9hF,MAAO,OAC5B,MAAM,KACJ2Q,EAAI,MACJ2yD,EAAK,MACL/vD,GACEuuE,EAAgB9hF,MAAMmQ,wBACpBnQ,EAAQgkF,EAAWhkF,MAAQuT,EAAQjO,EAAE4jC,SAAWo6B,EAAQ/vD,GAASjO,EAAE4jC,QAAUv4B,EACnF/C,EAAS5N,MAAQ6N,KAAK8lC,MAAM3zC,EAAQuT,EAAQzF,EAAI9N,MAClD,CAuEA,OAtEA,EAAAmvE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,IAAOgyE,EACP,MAAS,CAAC,oBAAqB,CAC7B,8BAA+Bv/E,EAAMsqE,SACrC,4BAA6BtqE,EAAM8kE,QAAU6R,EAAel5E,MAC5D,6BAA8BgkF,EAAWhkF,MACzC,6BAA8BuC,EAAMq1E,QACpC,iCAAkCr1E,EAAMkhF,WACxC,6BAA8BlhF,EAAMihF,SACnCzL,EAAe/3E,MAAO6tE,EAAa7tE,MAAO8tE,EAAW9tE,MAAOuC,EAAMy4D,OACrE,MAAS,CAAC,CACRyJ,OAA2B,WAAnBliE,EAAMgF,SAAwB,OAAIqE,EAC1C8E,IAAwB,QAAnBnO,EAAMgF,SAAqB,OAAIqE,EACpC6H,OAAQlR,EAAM8kE,QAAS,QAAc5zD,EAAOzT,OAAS,EACrD,8BAA8B,QAAcyT,EAAOzT,UAC/CuC,EAAMsqE,SAAWoW,EAAejjF,MAAQ,CAAC,GAC5CuC,EAAM2E,OACT,KAAQ,cACR,cAAe3E,EAAM8kE,OAAS,QAAU,OACxC,gBAAiB,IACjB,gBAAiB9kE,EAAMuL,IACvB,gBAAiBvL,EAAM4/E,mBAAgBv2E,EAAY62E,EAAgBziF,MACnE,QAAWuC,EAAM+hC,WAAa4/C,GAC7B,CACDl7B,QAAS,IAAM,CAACzmD,EAAMghF,SAAU,QAAa,MAAO,CAClD,IAAO,SACP,MAAS,CAAC,4BAA6BhC,EAAiBvhF,OACxD,MAAS,IACJwhF,EAAgBxhF,MACnB,CAACgkF,EAAWhkF,MAAQ,OAAS,UAAU,SAAeyT,EAAOzT,OAC7DmkF,UAAW,IAAG,QAAc1wE,EAAOzT,MAAQ,YAC3C+oC,QAAS39B,WAAW7I,EAAM+gF,eAC1B5yE,IAAK,eAAc,QAAc+C,EAAOzT,MAAQ,MAChDuT,OAAO,QAAc,IAAMwwE,EAAiB/jF,MAAO,KACnD,iCAAiC,QAAcyT,EAAOzT,OAASgkF,EAAWhkF,MAAQ,GAAK,MAExF,OAAO,QAAa,MAAO,CAC5B,MAAS,CAAC,gCAAkCikF,OAA0Dr4E,EAA/B8gE,EAAuB1sE,OAC9F,MAAS,CAAC2sE,EAAsB3sE,MAAO,CACrC+oC,QAAS39B,WAAW7I,EAAM4gF,WAC1B5vE,MAAOhR,EAAMghF,OAAS,OAAI33E,KAE3B,OAAO,QAAa,MAAO,CAC5B,MAAS,CAAC,4BAA8Bq4E,OAAsDr4E,EAA3B+3E,EAAmB3jF,OACtF,MAAS,CAAC4jF,EAAkB5jF,MAAO,CACjC+oC,QAAS39B,WAAW7I,EAAM+gF,eAC1B/vE,OAAO,QAAcwwE,EAAiB/jF,MAAO,QAE9C,OAAO,QAAa,KAAY,CACjC,KAAQonB,EAAWpnB,OAClB,CACDgpD,QAAS,IAAM,CAAEzmD,EAAM4/E,eAKZ,QAAa,MAAO,CAC7B,MAAS,oCACR,CAAC,CAAC,OAAQ,SAASr8E,KAAIs+E,IAAO,QAAa,MAAO,CACnD,IAAOA,EACP,MAAS,CAAC,mCAAoCA,EAAMH,OAAmDr4E,EAAxBi4E,EAAgB7jF,OAC/F,MAAS8jF,EAAe9jF,OACvB,WAXoC,QAAa,MAAO,CACzD,MAAS,CAAC,iCAAmCikF,OAAmDr4E,EAAxBi4E,EAAgB7jF,OACxF,MAAS,CAAC8jF,EAAe9jF,MAAO,CAC9BuT,OAAO,QAAckvE,EAAgBziF,MAAO,QAE7C,SAODy6D,EAAMzR,UAAW,QAAa,MAAO,CACvC,MAAS,8BACR,CAACyR,EAAMzR,QAAQ,CAChBhpD,MAAOyiF,EAAgBziF,MACvByyD,OAAQsxB,EAAiB/jF,eAGtB,CAAC,CACV,ICxLWqkF,IAAkB,EAAAxhB,EAAA,GAAa,CAC1CyhB,QAAS,CAAClqB,QAAS5lD,SAClB,UACI,SAAS+vE,GAAUhiF,GACxB,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,MAAMyb,GAAgB,SAAS,KAAM,CACnC,CAAC,GAAGrkF,cAAkBoC,EAAM+hF,YAE9B,MAAO,CACLE,gBAEJ,CACO,SAASC,GAAWliF,EAAOkK,GAChC,IAAI,MACFguD,GACEhuD,EACJ,OAAO,QAAa,MAAO,CACzB,MAAS,GAAGlK,EAAMpC,gBACjB,CAACs6D,EAAMzR,UAAU,CAClBwjB,MAAOjqE,EAAMiqE,MACbh3B,SAAUjzC,EAAM8kE,WACZ,QAAaqc,GAAiB,CAClC,SAAYnhF,EAAMsqE,SAClB,OAAUtqE,EAAM8kE,OAChB,MAAS9kE,EAAMiqE,MACf,OAAU,IACV,eAAiB,GAChB,OACL,CC/BA,MAAMkY,GAAiB,CAAC,SAAU,WAAY,QAAS,WAAY,UAEtDC,IAAoB,EAAA9hB,EAAA,GAAa,CAC5ClgC,SAAU,CACRjV,KAAMlZ,OACNuuD,UAAqC5wD,GAAKuyE,GAAel1E,SAAS2C,KAEnE,YACI,SAASyyE,GAAYriF,GAC1B,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,MAAM8b,GAAkB,SAAS,IACxBtiF,EAAMogC,SAAW,GAAGxiC,MAASoC,EAAMogC,gBAAa/2B,IAEzD,MAAO,CACLi5E,kBAEJ,C,eCdO,SAASC,GAAcpqB,EAAM6kB,IAClC,SAAM,IAAM7kB,EAAKllB,UAAUx1C,QAAOw1C,IAC5BklB,EAAKqqB,OAAO/kF,OAASw1C,GAAY+pC,IACnC,SAAS,KACPA,GAAO,EAAK,GAEhB,GACC,CACDtZ,WAAW,GAEf,C,eCcO,MAAM+e,IAAgB,EAAAniB,EAAA,GAAa,CACxCwE,OAAQ,CACN35C,KAAM0sC,QACNpR,aAASp9C,GAEXq5E,YAAazwE,OACbkqE,UAAWlqE,OACX0wE,OAAQ,CACNx3D,KAAM,KACNs7B,QAASy3B,IAEXx5C,KAAMmzB,QACN+mB,KAAM,CAAC/mB,QAAS5lD,OAAQ/T,SAAUO,QAClCmkF,YAAa,MACbC,WAAY,MACZxe,MAAOxM,QACPirB,SAAUjrB,QACVkrB,KAAMlrB,QACNmrB,QAASnrB,QACTorB,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEXt5C,KAAM8E,UACH+lE,SACA,YACAuD,SACA,aACAnD,QACAsE,QACAoF,QACAvB,QACA6B,QACAhN,SACA,cACAmJ,QACAzN,EAAa,CACdvjE,IAAK,eAEJ,aACAsuE,GAAiB,CAClBxC,QAAS,cAEV,QACUD,IAAO,UAAmB,CACrCx7E,KAAM,OACNoC,MAAOyiF,KACPxX,MAAO,CACL,iBAAkBvkD,IAAO,GAE3B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,cACJm4E,GACED,GAAUl4E,IACR,eACJy7E,GACED,GAAWx7E,IACT,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,cACJiiF,GACED,GAAUhiF,IACR,eACJ0gF,GACEF,GAAYxgF,IACV,gBACJsiF,GACED,GAAYriF,IACV,eACJw1E,GACED,GAAWv1E,IACT,YACJy+E,EAAW,WACXC,GACEF,GAAQx+E,GACNmxE,EAAQwL,GAAa38E,EAAOA,EAAM2iF,QAAQ,GAC1CxqB,GAAO,SAAQn4D,EAAO0lD,GACtBzS,GAAW,SAAS,SACH5pC,IAAjBrJ,EAAM8kE,OACD9kE,EAAM8kE,OAEX3M,EAAKqqB,OAAO/kF,MACP06D,EAAKllB,UAAUx1C,MAEjB0zE,GAAO0L,WAAWp/E,QAErBwsE,GAAQ,SAAS,IAAMh3B,EAASx1C,MAAQuC,EAAM0iF,aAAe1iF,EAAMiqE,MAAQjqE,EAAMiqE,QACjFiZ,GAAe,SAAS,KAC5B,MAAMC,EAAYhS,GAAO0L,WAAWp/E,SAAW06D,EAAKqqB,OAAO/kF,OAAS06D,EAAKllB,UAAUx1C,SAAW0zE,GAAShZ,EAAKllB,UAAUx1C,MACtH,MAAO,CACLwsE,MAAOkZ,EAAYlZ,EAAMxsE,OAASuC,EAAMm8E,UAAYn8E,EAAMm8E,UAC1D9C,QAASr5E,EAAMq5E,QAChB,KAEG,aACJ2C,EAAY,YACZC,EAAW,eACXF,GACED,GAAWoH,GACTE,GAAa,SAAS,IAAMjS,GAAOnwC,SAASvjC,OAASuC,EAAMghC,WAC3DqiD,GAAa,SAAS,IACD,aAAlBrjF,EAAMq5E,WAA4Br5E,EAAMghC,UAAYhhC,EAAM0kC,MAAQ1kC,EAAMi4E,UAE3EqL,GAAY,SAAS,KACzB,QAAoBj6E,IAAhBrJ,EAAMvC,OAA8C,kBAAhBuC,EAAMvC,MAC9C,OAAOgB,OAAOuB,EAAMvC,SAAWuC,EAAMvC,MAAQ6kD,KAAK+M,UAAUrvD,EAAMvC,MAAO,KAAM,GAAKuC,EAAMvC,KAAK,IAEjG,SAASk0B,EAAQ5uB,GACXqgF,EAAW3lF,OAAS06D,EAAKqqB,OAAO/kF,QAAUsF,EAAE85B,SAAW95B,EAAE65B,SAAW75B,EAAE25B,UAAyB,IAAb35B,EAAE8oB,QAAiC,WAAjB65B,EAAM3lD,UAC9Go4D,EAAKhB,WAAWp0D,GAChBouE,GAAOlvC,SACT,CAoFA,OAnFAsgD,GAAcpqB,EAAMgZ,GAAO6L,SAC3B,EAAApQ,EAAA,IAAU,KACR,MAAM2W,EAAMprB,EAAKqqB,OAAO/kF,MAAQ,IAAMuC,EAAMuN,IACtCi2E,KAAgBxjF,EAAM4iF,cAAe1qB,EAAMjvC,SAC3Cw6D,KAAezjF,EAAM6iF,aAAc3qB,EAAMlwC,QACzC07D,KAAa1jF,EAAM4+E,OAAuB,IAAf5+E,EAAM4+E,MACvC,OAAO,SAAe,QAAa2E,GAAK,QAAY,CAClD,KAAgB,MAARA,OAAcl6E,EAAY,SAClC,MAAS,CAAC,QAAS8nE,GAAOsL,cAAch/E,MAAO,CAC7C,gBAAiBw1C,EAASx1C,MAC1B,eAAgBuC,EAAMqkE,MACtB,kBAAmB+e,EAAW3lF,MAC9B,kBAAmB4lF,EAAW5lF,MAC9B,cAAeuC,EAAM0kC,KACrB,gBAAiB1kC,EAAM4+E,KACvB,iBAAkB5+E,EAAM+hF,QACxB,kBAAmB/hF,EAAM8iF,SACzB,cAAe9iF,EAAM+iF,KACrB,iBAAkB/iF,EAAMgjF,SACvB1X,EAAa7tE,MAAO06E,EAAc16E,MAAOu+E,EAAav+E,MAAOg+E,EAAeh+E,MAAO86E,EAAiB96E,MAAOwkF,EAAcxkF,MAAO6kF,EAAgB7kF,MAAO+3E,EAAe/3E,MAAOghF,EAAYhhF,MAAOs+E,EAAet+E,MAAOuC,EAAMy4D,OAC/N,MAAS,CAACwjB,EAAYx+E,MAAOquE,EAAgBruE,MAAOijF,EAAejjF,MAAOihF,EAAWjhF,MAAOuC,EAAM2E,OAClG,cAAa3E,EAAM+hF,cAAiB14E,EACpC,SAAY+5E,EAAW3lF,YAAS4L,EAChC,SAAYrJ,EAAM+hF,SAAW/hF,EAAM8iF,UAAY,OAAIz5E,EACnD,QAAWsoB,EACX,MAAS2xD,EAAU7lF,OAClB06D,EAAKwrB,WAAY,CAClBl9B,QAAS,IAAM,CAACk1B,IAAY,EAAM,UAAW37E,EAAM4+E,MAAQ4E,IAAc,QAAa,OAAQ,CAC5F,IAAO,UACP,MAAS,kBACR,CAAEtrB,EAAMjvC,SAGA,QAAa0rD,GAAmB,CACzC,IAAO,mBACP,UAAa30E,EAAM4iF,YACnB,SAAY,CACV/D,MAAO,CACLD,KAAM5+E,EAAM4iF,eAGf1qB,EAAMjvC,UAXY,QAAa41D,GAAO,CACvC,IAAO,eACP,KAAQ7+E,EAAM4iF,aACb,SAQkB,QAAa,OAAQ,CACxC,MAAS,iBACT,oBAAqB,IACpB,EAAE1qB,EAAMzR,SAAWi9B,GAAU,QAAa7E,GAAO,CAClD,IAAO,eACP,KAAQ7+E,EAAM4+E,MACb,OAAQ,QAAajK,GAAmB,CACzC,IAAO,mBACP,UAAa+O,EACb,SAAY,CACV7E,MAAO,CACLD,KAAM5+E,EAAM4+E,QAGf,CACDn4B,QAAS,IAAM,CAACyR,EAAMzR,aAAezmD,EAAMmN,WACtCnN,EAAM4+E,MAAQ6E,IAAa,QAAa,OAAQ,CACrD,IAAO,SACP,MAAS,iBACR,CAAEvrB,EAAMlwC,QAGA,QAAa2sD,GAAmB,CACzC,IAAO,kBACP,UAAa30E,EAAM6iF,WACnB,SAAY,CACVhE,MAAO,CACLD,KAAM5+E,EAAM6iF,cAGf3qB,EAAMlwC,SAXW,QAAa62D,GAAO,CACtC,IAAO,cACP,KAAQ7+E,EAAM6iF,YACb,UAQmB7iF,EAAM+hF,UAAW,QAAa,OAAQ,CAC1D,IAAO,SACP,MAAS,iBACR,CAAC7pB,EAAM0rB,aAAc,QAAa/D,GAAmB,CACtD,MAAkC,mBAAlB7/E,EAAM+hF,aAAwB14E,EAAYrJ,EAAM+hF,QAChE,eAAiB,EACjB,MAAS,KACR,WACD,CAAC,CAAC,MAASqB,EAAW3lF,OAASuC,EAAMijF,OAAQ,GAAI,CACnDxkC,SAAUz+C,EAAM4+E,QACd,IAEC,CACLzN,QAEJ,IC1OW0S,IAA0B,EAAAvjB,EAAA,GAAa,IAC/CmiB,GAAc,CACf7D,KAAM,QACNvF,QAAS,UAEV,kBACUyK,IAAiB,UAAmB,CAC/ClmF,KAAM,iBACNoC,MAAO6jF,KACP,KAAA5rB,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAIJ,OAHA,EAAA0iE,EAAA,IAAU,KAAM,QAAawM,IAAM,QAAYp5E,EAAO,CACpD,MAAS,CAAC,wBACRk4D,KACG,CAAC,CACV,ICjBW6rB,IAAe,UAAmB,CAC7CnmF,KAAM,eACNoC,MAAO+wE,IACP,KAAA9Y,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAIJ,OAHA,EAAA0iE,EAAA,IAAU,KAAM,QAAaoE,GAAe,QAAYhxE,EAAO,CAC7D,MAAS,oBACPk4D,KACG,CAAC,CACV,ICXK,SAAS8rB,GAAuBC,GACrC,IAAI12E,EAAMnE,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,MAC1ExL,EAAOwL,UAAUlJ,OAAS,EAAIkJ,UAAU,QAAKC,EACjD,OAAO,UAAmB,CACxBzL,KAAMA,IAAQ,SAAW,QAASqmF,EAAM37E,QAAQ,MAAO,OACvDtI,MAAO,CACLuN,IAAK,CACH4d,KAAMlZ,OACNw0C,QAASl5C,OAER,UAEL,KAAA0qD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAO,KACE,IAAAsuD,GAAEx4D,EAAMuN,IAAK,CAClBkrD,MAAO,CAACwrB,EAAOjkF,EAAMy4D,OACrB9zD,MAAO3E,EAAM2E,OACZuzD,EAAMzR,YAEb,GAEJ,CC1BO,MAAMy9B,GAAcF,GAAuB,iBCuB5CG,GAAe,CAAC,UAAW,OAAQ,UAAW,SACvCC,IAAkB,EAAA9jB,EAAA,GAAa,CAC1C2X,OAAQ,CACN9sD,KAAM,CAAC0sC,QAAS5lD,QAChBuuD,UAAW95C,GACa,mBAARA,GAAqB,CAAC,MAAO,MAAO,SAAU,SAASzZ,SAASyZ,IAGlF29D,YAAapyE,OACbqyE,SAAUzsB,QACV0sB,UAAW,CACTp5D,KAAM,MACNs7B,QAAS,UAEX+9B,WAAY,CACVr5D,KAAMlZ,OACNw0C,QAAS,kBAEXm4B,KAAM,CACJzzD,KAAM,CAAC0sC,QAAS5lD,OAAQ/T,SAAUO,QAClCgoD,QAAS,MAEXujB,WAAY,CACV7+C,KAAM0sC,QACNpR,SAAS,GAEXg+B,UAAW5sB,QACXkhB,MAAO9mE,OACP9E,KAAM8E,OACNkZ,KAAM,CACJA,KAAMlZ,OACNuuD,UAAW95C,GAAOy9D,GAAal3E,SAASyZ,QAEvC,YACA60D,SACA,aACAnD,QACAmI,QACA6B,QACAhN,QACAtE,QACA,aACA+K,GAAiB,CAClBxC,QAAS,UAEV,UACUqL,IAAS,UAAmB,CACvC9mF,KAAM,SACNoC,MAAOokF,KACPnZ,MAAO,CACL,cAAeloE,IAAK,EACpB,oBAAqBtF,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM+oC,GAAW,QAAgBjzC,EAAO,cAClC4+E,GAAO,SAAS,KACpB,IAAmB,IAAf5+E,EAAM4+E,KACV,OAAK5+E,EAAMmrB,KACJnrB,EAAM4+E,MAAQ,IAAI5+E,EAAMmrB,OADPnrB,EAAM4+E,IACO,IAEjCsE,GAAe,SAAS,KAAM,CAClCjZ,MAAOjqE,EAAMiqE,OAASjqE,EAAMmrB,KAC5BkuD,QAASr5E,EAAMq5E,aAEX,aACJ/N,IACE,QAAatrE,IACX,aACJg8E,EAAY,YACZC,EAAW,eACXF,GACED,GAAWoH,IACT,eACJzH,GACED,GAAWx7E,IACT,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,eACJ0gF,GACEF,GAAYxgF,IACV,gBACJsiF,GACED,GAAYriF,IACV,eACJw1E,GACED,GAAWv1E,IACT,iBACJg/E,EAAgB,gBAChBC,IACE,UAAa,QAAMj/E,EAAO,iBACxB,EACJ8C,IACE,UACE6hF,GAAa,SAAS,KAAM,CAChC,aAAc7hF,EAAE9C,EAAMwkF,YACtB,OAAA7yD,CAAQ5uB,GACNkwC,EAASx1C,OAAQ,EACjB4F,EAAK,cAAeN,EACtB,MAEF,MAAO,KACL,MAAMygF,KAAgBtrB,EAAMjvC,UAAW21D,EAAKnhF,OACtC67E,KAAcphB,EAAM6gB,QAAS/4E,EAAM+4E,OACnC6L,KAAc1sB,EAAMiM,QAASnkE,EAAMskF,UACzC,OAAOrxC,EAASx1C,QAAS,QAAauC,EAAMuN,IAAK,CAC/C,MAAS,CAAC,UAAWvN,EAAMi4E,QAAU,CACnC,oBAAqBj4E,EAAMi4E,OAC3B,CAAC,oBAAoC,IAAjBj4E,EAAMi4E,OAAkB,QAAUj4E,EAAMi4E,WAAW,GACtE,CACD,qBAAsBj4E,EAAMykF,WAC3BnZ,EAAa7tE,MAAOu+E,EAAav+E,MAAOg+E,EAAeh+E,MAAO86E,EAAiB96E,MAAO6kF,EAAgB7kF,MAAO+3E,EAAe/3E,MAAOs+E,EAAet+E,MAAOuC,EAAMy4D,OAClK,MAAS,CAACwjB,EAAYx+E,MAAOquE,EAAgBruE,MAAOijF,EAAejjF,MAAOuC,EAAM2E,OAChF,KAAQ,SACP,CACD8hD,QAAS,IAAM,CAACk1B,IAAY,EAAO,WAAY37E,EAAMi4E,SAAU,QAAa,MAAO,CACjF,IAAO,SACP,MAAS,CAAC,kBAAmB+G,EAAiBvhF,OAC9C,MAASwhF,EAAgBxhF,OACxB,MAAO+lF,IAAc,QAAa,MAAO,CAC1C,IAAO,UACP,MAAS,oBACR,CAAEtrB,EAAMjvC,SAKA,QAAa0rD,GAAmB,CACzC,IAAO,mBACP,UAAaiK,EAAKnhF,MAClB,SAAY,CACVohF,MAAO,CACLlG,QAAS34E,EAAM24E,QACfiG,KAAMA,EAAKnhF,MACX8R,KAAMvP,EAAMykF,UAAY,GAAK,MAGhCvsB,EAAMjvC,UAfY,QAAa41D,GAAO,CACvC,IAAO,eACP,QAAW7+E,EAAM24E,QACjB,KAAQiG,EAAKnhF,MACb,KAAQuC,EAAMykF,UAAY,GAAK,IAC9B,SAUkB,QAAa,MAAO,CACvC,MAAS,oBACR,CAACnL,IAAY,QAAa4K,GAAa,CACxC,IAAO,SACN,CACDz9B,QAAS,IAAM,CAACyR,EAAM6gB,WAAa/4E,EAAM+4E,SACvC7gB,EAAM/qD,UAAYnN,EAAMmN,KAAM+qD,EAAMzR,cAAeyR,EAAMlwC,SAAU,QAAa,MAAO,CACzF,IAAO,SACP,MAAS,mBACR,CAACkwC,EAAMlwC,WAAY48D,IAAY,QAAa,MAAO,CACpD,IAAO,QACP,MAAS,kBACR,CAAE1sB,EAAMiM,OAKmB,QAAawQ,GAAmB,CAC5D,IAAO,iBACP,SAAY,CACVyE,KAAM,CACJwF,KAAM5+E,EAAMukF,UACZh1E,KAAM,UACN8pE,QAAS,UAGZ,CACD5yB,QAAS,IAAM,CAACyR,EAAMiM,QAAQ,CAC5BnkE,MAAO2kF,EAAWlnF,YAhBH,QAAa27E,IAAM,QAAY,CAChD,IAAO,YACP,KAAQp5E,EAAMukF,UACd,KAAQ,UACR,QAAW,QACVI,EAAWlnF,OAAQ,UActB,CAEN,ICxLWonF,IAAmB,EAAAvkB,EAAA,GAAa,CAC3CjqB,MAAOwhB,QACP1J,IAAK0J,QACL+mB,KAAM,MACN/0C,MAAO53B,OACP9E,KAAM8E,UACH+lE,SACA,YACAuD,QACAnG,QACAmJ,QACAzN,QACA,aACA+K,GAAiB,CAClBxC,QAAS,UAEV,WACUyL,IAAU,UAAmB,CACxClnF,KAAM,UACNoC,MAAO6kF,KACP,KAAA5sB,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,cACJm4E,GACED,GAAUl4E,IACR,aACJg8E,EAAY,YACZC,EAAW,eACXF,GACED,GAAW97E,IACT,eACJy7E,GACED,GAAWx7E,IACT,eACJw1E,GACED,GAAWv1E,IACT,YACJy+E,EAAW,WACXC,GACEF,GAAQx+E,GA+BZ,OA9BA,EAAA4sE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,WAAY,CACpB,kBAAmBvN,EAAMq2C,MACzB,gBAAiBr2C,EAAMmuD,KACtBmd,EAAa7tE,MAAO06E,EAAc16E,MAAOu+E,EAAav+E,MAAOg+E,EAAeh+E,MAAO+3E,EAAe/3E,MAAOghF,EAAYhhF,MAAOs+E,EAAet+E,MAAOuC,EAAMy4D,OAC3J,MAAS,CAACwjB,EAAYx+E,MAAOihF,EAAWjhF,MAAOuC,EAAM2E,QACpD,CACD8hD,QAAS,IAAM,CAAEyR,EAAMzR,SAQC,QAAakuB,GAAmB,CACtD,IAAO,mBACP,SAAY,CACVwB,KAAM,CACJR,OAAO,EACPlyE,IAAKzD,EAAM6pC,OAEbg1C,MAAO,CACLD,KAAM5+E,EAAM4+E,QAGf,CACDn4B,QAAS,IAAM,CAACyR,EAAMzR,aApBSzmD,EAAM6pC,OAAQ,QAAassC,GAAM,CAChE,IAAO,QACP,IAAOn2E,EAAM6pC,MACb,IAAO,GACP,OAAS,GACR,MAAQ7pC,EAAM4+E,MAAO,QAAaC,GAAO,CAC1C,IAAO,OACP,KAAQ7+E,EAAM4+E,MACb,MAAQ5+E,EAAMmN,KAabwuE,IAAY,EAAO,iBAElB,CAAC,CACV,ICtFWoJ,IAAkB,EAAAzkB,EAAA,GAAa,CAC1CnzD,KAAM8E,OACN0f,SAAS,cACN,aACA,WACF,UACUqzD,IAAS,UAAmB,CACvCpnF,KAAM,SACNoC,MAAO+kF,KACP,KAAA9sB,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAQJ,OAPA,EAAA0iE,EAAA,IAAU,KAAM,QAAa,QAAS,CACpC,MAAS,CAAC,UAAW,CACnB,uBAAwB5sE,EAAM2xB,SAC7B3xB,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,QAAW3E,EAAM2xB,SAChB,CAAC3xB,EAAMmN,KAAM+qD,EAAMzR,gBACf,CAAC,CACV,IChBWw+B,GAA+B5jF,OAAOm+D,IAAI,mCAC1C0lB,IAAiC,EAAA5kB,EAAA,GAAa,CACzD2J,MAAOh4D,OACP+uB,SAAU,CACR7V,KAAM0sC,QACNpR,QAAS,MAEX0+B,eAAgBlzE,OAChBg7C,MAAO4K,QACPx4D,GAAI4S,OACJgjE,OAAQpd,QACRutB,UAAW,MACXC,SAAU,MACVpC,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEX81B,SAAU,CACRpxD,KAAM0sC,QACNpR,QAAS,MAEX7oD,KAAMqU,OACN6wE,SAAU,CACR33D,KAAM0sC,QACNpR,QAAS,MAEXujB,WAAY,KACZ7+C,KAAMlZ,OACNqzE,gBAAiB,CACfn6D,KAAMjtB,SACNuoD,QAAS,UAER,YACA80B,SACA,WACF,yBACUgK,IAAkC,EAAAjlB,EAAA,GAAa,IACvD4kB,GAA+B,CAChCC,eAAgB,uBAEjB,0BACUK,IAAyB,UAAmB,CACvD5nF,KAAM,yBACNoC,MAAOulF,KACPta,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM8/D,GAAa,QAAgBhqE,EAAO,cACpCopE,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,6BAA6B+pE,MAC7DxrE,GAAO,SAAS,IAAMoC,EAAMpC,MAAQyB,EAAG5B,QACvCgoF,EAAiB,IAAIlyB,IAsC3B,OArCA,QAAQ0xB,GAA8B,CACpCjb,aACA0b,YAAa,KACXD,EAAe9hF,SAAQgjD,GAAMA,KAAK,EAEpCg/B,cAAe5hB,IACb0hB,EAAeh4E,IAAIs2D,IACnB,SAAe,KACb0hB,EAAej6B,OAAOuY,EAAG,GACzB,KAGN,SAAgB,CACd,CAAC/jE,EAAMmlF,gBAAiB,CACtBlb,OAAO,QAAMjqE,EAAO,SACpBghC,UAAU,QAAMhhC,EAAO,YACvB24E,SAAS,QAAM34E,EAAO,WACtBitD,OAAO,QAAMjtD,EAAO,SACpBi1E,QAAQ,QAAMj1E,EAAO,UACrBgqE,aACAuS,UAAU,SAAS,MAAQv8E,EAAMu8E,UAA8B,MAAlBv8E,EAAMu8E,UAAoBz6E,MAAMC,QAAQioE,EAAWvsE,SAChGG,OACAwnF,WAAW,QAAMplF,EAAO,aACxBqlF,UAAU,QAAMrlF,EAAO,YACvB8iF,UAAU,QAAM9iF,EAAO,YACvBijF,QAAQ,QAAMjjF,EAAO,UACrBmrB,MAAM,QAAMnrB,EAAO,QACnBslF,iBAAiB,QAAMtlF,EAAO,uBAGlC,EAAA4sE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,4BAA6B,CACrC,oCAAqC5sE,EAAMi1E,QAC1Cj1E,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,KAAuB,UAAf3E,EAAMmrB,KAAmB,kBAAe9hB,GAC/C,CAAC6uD,EAAMzR,gBACH,CAAC,CACV,IC5FWm/B,IAA6B,EAAAtlB,EAAA,GAAa,CACrDhpD,MAAOrF,OACPkqE,UAAWlqE,OACX4zE,UAAW,KACXC,WAAY,KACZroF,MAAO,SACJ,YACAynF,MACF,qBACI,SAASa,GAAoB/lF,GAClC,MAAMmxE,GAAQ,QAAO8T,QAA8B57E,IAC7C,eACJoyE,GACED,GAAWx7E,GACTgqE,GAAa,QAAgBhqE,EAAO,cACpC6lF,GAAY,SAAS,SAA0Bx8E,IAApBrJ,EAAM6lF,UAA0B7lF,EAAM6lF,eAA4Bx8E,IAAhBrJ,EAAMvC,OAAsBuC,EAAMvC,QAC/GqoF,GAAa,SAAS,SAA2Bz8E,IAArBrJ,EAAM8lF,YAA2B9lF,EAAM8lF,aACnEE,GAAa,SAAS,MAAQhmF,EAAMu8E,UAA8B,MAAlBv8E,EAAMu8E,UAAoBz6E,MAAMC,QAAQioE,EAAWvsE,SACnG4tE,GAAQ,QAAS,CACrB,GAAAroE,GACE,MAAM0jB,EAAMyqD,EAAQA,EAAMnH,WAAWvsE,MAAQusE,EAAWvsE,MACxD,OAAOuoF,EAAWvoF,OAAQ,QAAYipB,GAAKuyC,MAAKrpD,GAAK5P,EAAMslF,gBAAgB11E,EAAGi2E,EAAUpoF,SAAUuC,EAAMslF,gBAAgB5+D,EAAKm/D,EAAUpoF,MACzI,EACA,GAAAwF,CAAIyjB,GACF,GAAI1mB,EAAM8iF,SAAU,OACpB,MAAMruB,EAAe/tC,EAAMm/D,EAAUpoF,MAAQqoF,EAAWroF,MACxD,IAAIwoF,EAASxxB,EACTuxB,EAAWvoF,QACbwoF,EAASv/D,EAAM,KAAI,QAAYsjD,EAAWvsE,OAAQg3D,IAAgB,QAAYuV,EAAWvsE,OAAO4E,QAAO4yB,IAASj1B,EAAMslF,gBAAgBrwD,EAAM4wD,EAAUpoF,UAEpJ0zE,EACFA,EAAMnH,WAAWvsE,MAAQwoF,EAEzBjc,EAAWvsE,MAAQwoF,CAEvB,KAEI,iBACJjH,EAAgB,gBAChBC,IACE,UAAa,SAAS,KACxB,IAAIj/E,EAAMitD,QAASjtD,EAAMghC,SACzB,OAAOqqC,EAAM5tE,MAAQuC,EAAMiqE,MAAQjqE,EAAMm8E,SAAS,MAE9C,uBACJhS,EAAsB,sBACtBC,IACE,UAAmB,SAAS,KACvBiB,EAAM5tE,OAAUuC,EAAMitD,OAAUjtD,EAAMghC,SAAyBhhC,EAAMm8E,UAApBn8E,EAAMiqE,SAE1D2U,GAAO,SAAS,IAAMvT,EAAM5tE,MAAQuC,EAAMqlF,SAAWrlF,EAAMolF,YACjE,MAAO,CACLjU,QACAsK,iBACAoK,YACAC,aACAza,QACA2T,mBACAC,kBACA9U,yBACAC,wBACAwU,OAEJ,CACO,MAAMsH,IAAoB,UAAmB,CAClDtoF,KAAM,oBACNktE,WAAY,CACVqb,OAAM,MAER7sB,cAAc,EACdt5D,MAAO4lF,KACP3a,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,MACJinE,EAAK,eACLsK,EAAc,KACdmD,EAAI,MACJvT,EAAK,iBACL2T,EAAgB,gBAChBC,EAAe,uBACf9U,EAAsB,sBACtBC,EAAqB,UACrByb,GACEE,GAAoB/lF,GAClBopE,GAAM,UACNzC,GAAY,SAAW,GACvByf,GAAiB,SAAW,GAC5BC,GAAQ,UACRhnF,GAAK,SAAS,IAAMW,EAAMX,IAAM,SAAS+pE,MACzCkd,GAAgB,SAAS,KAAOtmF,EAAMghC,WAAahhC,EAAM8iF,WAM/D,SAAS3b,EAAQpkE,GACVujF,EAAc7oF,QACnBkpE,EAAUlpE,OAAQ,GACkC,KAAhD,QAAgBsF,EAAEhD,OAAQ,oBAC5BqmF,EAAe3oF,OAAQ,GAE3B,CACA,SAAS2pE,IACPT,EAAUlpE,OAAQ,EAClB2oF,EAAe3oF,OAAQ,CACzB,CACA,SAAS8oF,EAAaxjF,GACpBA,EAAE0rB,iBACJ,CACA,SAAS+3D,EAAQzjF,GACVujF,EAAc7oF,OASfuC,EAAM8iF,UAAY3R,IACpB,SAAS,IAAMA,EAAMuU,gBAEvBra,EAAM5tE,MAAQsF,EAAEhD,OAAO0mF,SAXjBJ,EAAM5oF,QAIR4oF,EAAM5oF,MAAMgpF,QAAUpb,EAAM5tE,MAQlC,CAkEA,OAnGA0zE,GAAOwU,eAAc,KACfU,EAAM5oF,QACR4oF,EAAM5oF,MAAMgpF,QAAUpb,EAAM5tE,MAC9B,KA+BF,EAAAmvE,EAAA,IAAU,KACR,MAAMt1D,EAAQ4gD,EAAM5gD,MAAQ4gD,EAAM5gD,MAAM,CACtCA,MAAOtX,EAAMsX,MACbtX,MAAO,CACLw/D,IAAKngE,EAAG5B,SAEPuC,EAAMsX,OACJovE,EAAWC,IAAc,QAAiBjhC,GAC3CkhC,GAAY,QAAa,SAAS,QAAY,CAClD,IAAOP,EACP,QAAWhb,EAAM5tE,MACjB,WAAcuC,EAAMghC,SACpB,GAAM3hC,EAAG5B,MACT,OAAU2pE,EACV,QAAWD,EACX,QAAWqf,EACX,kBAAmBxmF,EAAMghC,SACzB,aAAchhC,EAAMsX,MACpB,KAAQtX,EAAMmrB,KACd,MAAS06D,EAAUpoF,MACnB,KAAQuC,EAAMpC,KACd,eAA+B,aAAfoC,EAAMmrB,KAAsBkgD,EAAM5tE,WAAQ4L,GACzDs9E,GAAa,MAChB,OAAO,QAAa,OAAO,QAAY,CACrC,MAAS,CAAC,sBAAuB,CAC/B,6BAA8Btb,EAAM5tE,MACpC,gCAAiCuC,EAAMghC,SACvC,6BAA8BhhC,EAAMitD,MACpC,+BAAgC0Z,EAAUlpE,MAC1C,qCAAsC2oF,EAAe3oF,MACrD,8BAA+BuC,EAAMi1E,QACpCwG,EAAeh+E,MAAOuC,EAAMy4D,QAC9BiuB,EAAW,CACZ,MAAS1mF,EAAM2E,QACb,EAAC,QAAa,MAAO,CACvB,MAAS,CAAC,+BAAgCq6E,EAAiBvhF,OAC3D,MAASwhF,EAAgBxhF,OACxB,CAACy6D,EAAMzR,UAAU,CAClB0jB,yBACAC,2BACE,SAAgB,QAAa,MAAO,CACtC,MAAS,CAAC,+BACT,CAAClS,EAAMmuB,QAAQ,CAChBhb,QACA2T,mBACAC,kBACA9U,yBACAC,wBACAwc,YACAhI,KAAMA,EAAKnhF,MACXuC,MAAO,CACLmnE,UACAC,SACA/nE,GAAIA,EAAG5B,WAEL,QAAa,KAAW,KAAM,CAACmhF,EAAKnhF,QAAS,QAAaohF,GAAO,CACrE,IAAO,OACP,KAAQD,EAAKnhF,OACZ,MAAOmpF,MAAe,CAAC,EAAC,QAAkB,UAAW5mF,EAAMijF,QAAU,EAAEjjF,EAAMghC,WAAahhC,EAAM8iF,SAAU,KAAM,CAAC,SAAU,gBAAiBxrE,IAAS,QAAa0tE,GAAQ,CAC3K,IAAO3lF,EAAG5B,MACV,QAAW8oF,GACV,CACD9/B,QAAS,IAAM,CAACnvC,MACd,IAEC,CACLqvD,YACA0f,QAEJ,IC/MWQ,IAAwB,EAAAvmB,EAAA,GAAa,CAChDsf,cAAe/nB,QACfivB,kBAAmB,CACjB37D,KAAM,MACNs7B,QAAS,6BAERm/B,GAA2B,CAC5BR,UAAW,eACXC,SAAU,iBAEX,gBACU0B,IAAe,UAAmB,CAC7CnpF,KAAM,eACNoC,MAAO6mF,KACP5b,MAAO,CACL,oBAAqBxtE,IAAS,EAC9B,uBAAwBA,IAAS,GAEnC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM01E,GAAgB,QAAgB5/E,EAAO,iBACvCqrE,GAAQ,QAAgBrrE,EAAO,cACrC,SAASgnF,EAASp3E,GACZgwE,EAAcniF,QAChBmiF,EAAcniF,OAAQ,EAE1B,CACA,MAAM2nF,GAAY,SAAS,IAClBxF,EAAcniF,MAAQuC,EAAM8mF,kBAAoB9mF,EAAMolF,YAEzDC,GAAW,SAAS,IACjBzF,EAAcniF,MAAQuC,EAAM8mF,kBAAoB9mF,EAAMqlF,WAe/D,OAbA,EAAAzY,EAAA,IAAU,KACR,MAAMqa,GAAe,QAAKf,GAAkB/Y,YAAYntE,GAAQ,CAAC,eACjE,OAAO,QAAakmF,IAAmB,QAAYe,EAAc,CAC/D,WAAc5b,EAAM5tE,MACpB,sBAAuB,CAAC2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAAQ4Z,GACxD,MAAS,CAAC,iBAAkBhnF,EAAMy4D,OAClC,MAASz4D,EAAM2E,MACf,KAAQ,WACR,UAAaygF,EAAU3nF,MACvB,SAAY4nF,EAAS5nF,MACrB,eAAgBmiF,EAAcniF,MAAQ,aAAU4L,IAC9C6uD,EAAM,IAEL,CAAC,CACV,I,yBCxDK,SAASgvB,GAAuBh9E,GACrC,IAAI,gBACFi9E,EAAe,iBACfC,EAAgB,MAChBvmB,EAAK,aACL9pD,GACE7M,EACJ,MAAMm9E,EAAgBC,GAAcvwE,EAAcqwE,GAC5C/7B,EAAiBk8B,GAAkBxwE,EAAc8pD,EAAOumB,GACxDI,EAAeF,GAAcvwE,EAAcowE,GAC3CM,EAAwBC,GAAkB3wE,EAAcowE,GACxDQ,EAAkC,GAAfH,EACzB,OAAIn8B,EAAiBo8B,EACZA,EAAwBE,EACtBt8B,EAAiBg8B,EAAgBI,EAAwBD,EAC3DC,EAAwBJ,EAAgBG,EAAeG,EAEzDt8B,CACT,CACO,SAASu8B,GAAwBv0E,GACtC,IAAI,gBACF8zE,EAAe,iBACfC,EAAgB,aAChBrwE,GACE1D,EACJ,MAAMw0E,EAAsBP,GAAcvwE,EAAcqwE,GAClDU,EAAyBJ,GAAkB3wE,EAAcowE,GACzDY,EAAqBT,GAAcvwE,EAAcowE,GACvD,OAAOW,EAAyBD,EAAsB,EAAIE,EAAqB,CACjF,CACO,SAASC,GAAcjxE,EAAc5K,GAC1C,MAAM3L,EAAMuW,EAAe,cAAgB,eAC3C,OAAO5K,IAAU3L,IAAQ,CAC3B,CACO,SAASynF,GAAclxE,EAAc5K,GAC1C,MAAM3L,EAAMuW,EAAe,cAAgB,eAC3C,OAAO5K,IAAU3L,IAAQ,CAC3B,CACO,SAAS+mF,GAAkBxwE,EAAcY,EAAKxL,GACnD,IAAKA,EACH,OAAO,EAET,MAAM,WACJ8B,EAAU,YACVwB,EAAW,YACXy4E,GACE/7E,EACJ,OAAI4K,EACKY,EAAMuwE,EAAcz4E,EAAcxB,EAAaA,EAEjD9B,EAAQ4B,SACjB,CACO,SAASu5E,GAAcvwE,EAAc5K,GAC1C,MAAM3L,EAAMuW,EAAe,cAAgB,eAC3C,OAAO5K,IAAU3L,IAAQ,CAC3B,CACO,SAASknF,GAAkB3wE,EAAc5K,GAC9C,MAAM3L,EAAMuW,EAAe,aAAe,YAC1C,OAAO5K,IAAU3L,IAAQ,CAC3B,CCzCO,MAAM2nF,GAAoB9mF,OAAOm+D,IAAI,yBAC/B4oB,IAAuB,EAAA9nB,EAAA,GAAa,CAC/C+nB,aAAcxwB,QACdpzC,UAAW,CACT0G,KAAMlZ,OACNw0C,QAAS,cAEXk8B,OAAQ,CACNx3D,KAAM,KACNs7B,QAAS0hC,IAEXG,SAAU,CACRn9D,KAAM,MACNs7B,QAAS,SAEX8hC,SAAU,CACRp9D,KAAM,MACNs7B,QAAS,SAEX+hC,WAAY,CACVr9D,KAAM,CAAC0sC,QAAS5lD,QAChBuuD,UAAW5wD,GAAkB,mBAANA,GAAmB,CAAC,SAAU,UAAW,UAAU3C,SAAS2C,QAElF,aACA,SAAiB,CAClB64E,OAAQ,UAEP3X,OACAwL,GAAe,CAChBG,cAAe,gCAEhB,eACUiM,IAAc,UAAmB,CAC5C9qF,KAAM,cACNoC,MAAOooF,KACPnd,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,MACJ22D,IACE,WACE,eACJ8nB,EAAc,OACdF,IACE,SAAWzoF,GACTmxE,EAAQ8L,GAASj9E,EAAOA,EAAM2iF,QAC9BiG,GAAgB,SAAW,GAC3BC,GAAe,QAAW,GAC1BxB,GAAgB,QAAW,GAC3ByB,GAAc,QAAW,GACzB/xE,GAAe,SAAS,IAA0B,eAApB/W,EAAMykB,aAExC8oD,UAAWwb,EACXx1E,YAAay1E,GACX1b,KAEFC,UAAW0b,EAAU,YACrB11E,GACE+5D,IACE4b,GAAO,WACPC,GAAc,SAAS,KACpB,CACLrf,UAAWif,EAAarhF,GACxBgD,SAAU,IACV8hE,OAAQ,mBAGN4c,GAAqB,SAAS,IAC7BjY,EAAM+L,SAASz/E,MAAMyC,OACnBixE,EAAMrB,MAAMryE,MAAMguC,WAAUxW,GAAQA,EAAK51B,KAAO8xE,EAAM+L,SAASz/E,MAAM,MADlC,IAGtC4rF,GAAoB,SAAS,IAC5BlY,EAAM+L,SAASz/E,MAAMyC,OACnBixE,EAAMrB,MAAMryE,MAAMguC,WAAUxW,GAAQA,EAAK51B,KAAO8xE,EAAM+L,SAASz/E,MAAM0zE,EAAM+L,SAASz/E,MAAMyC,OAAS,MADhE,IAG5C,GAAI,KAAY,CACd,IAAI8jE,GAAS,GACb,SAAM,IAAM,CAACmN,EAAM+L,SAASz/E,MAAOurF,EAAcvrF,MAAO8V,EAAY9V,MAAOsZ,EAAatZ,SAAQ,KAC9FqJ,qBAAqBk9D,GACrBA,EAAQp9D,uBAAsB,KAC5B,GAAIoiF,EAAcvrF,OAAS8V,EAAY9V,MAAO,CAC5C,MAAMq0E,EAAe/6D,EAAatZ,MAAQ,QAAU,SACpD4pF,EAAc5pF,MAAQurF,EAAcvrF,MAAMq0E,GAC1CgX,EAAYrrF,MAAQ8V,EAAY9V,MAAMq0E,GACtC8W,EAAcnrF,MAAQ4pF,EAAc5pF,MAAQ,EAAIqrF,EAAYrrF,KAC9D,CACA,GAAI2rF,EAAmB3rF,OAAS,GAAKwrF,EAAWvhF,GAAI,CAElD,MAAMy/E,EAAkB8B,EAAWvhF,GAAGjD,SAAS4kF,EAAkB5rF,OACjE6rF,EAAiBnC,EAAiBnnF,EAAMqoF,aAC1C,IACA,GAEN,CACA,MAAM1hB,GAAY,SAAW,GAC7B,SAAS2iB,EAAiB7kF,EAAUg6C,GAClC,IAAI1+C,EAAS,EAEXA,EADE0+C,EACOmpC,GAAwB,CAC/BR,iBAAkB2B,EAAarhF,GAC/BqP,aAAcA,EAAatZ,MAC3B0pF,gBAAiB1iF,IAGVyiF,GAAuB,CAC9BE,iBAAkB2B,EAAarhF,GAC/BqP,aAAcA,EAAatZ,MAC3BojE,MAAOA,EAAMpjE,MACb0pF,gBAAiB1iF,IAGrBqmD,EAAiB/qD,EACnB,CACA,SAAS+qD,EAAiBjS,GACxB,IAAK,OAAekwC,EAAarhF,GAAI,OACrC,MAAMsU,EAAasrE,GAAcvwE,EAAatZ,MAAOsrF,EAAarhF,IAC5D2jD,EAAiBk8B,GAAkBxwE,EAAatZ,MAAOojE,EAAMpjE,MAAOsrF,EAAarhF,IACjF6hF,EAAavB,GAAcjxE,EAAatZ,MAAOsrF,EAAarhF,IAClE,KAAI6hF,GAAcvtE,GAElB1Q,KAAKuE,IAAIgpC,EAAcwS,GAAkB,IAFzC,CAGA,GAAIt0C,EAAatZ,OAASojE,EAAMpjE,OAASsrF,EAAarhF,GAAI,CACxD,MAAM,YACJwgF,EACAz4E,YAAa+5E,GACXT,EAAarhF,GACjBmxC,EAAcqvC,EAAcsB,EAAiB3wC,CAC/C,CACI9hC,EAAatZ,MACfyrF,EAAKO,WAAW5wC,EAAaswC,EAAY1rF,OAEzCyrF,EAAKrwC,EAAaswC,EAAY1rF,MAXmB,CAarD,CACA,SAASs0B,EAAShvB,GAChB,MAAM,UACJgL,EAAS,WACTE,GACElL,EAAEhD,OACN8oF,EAAaprF,MAAQsZ,EAAatZ,MAAQwQ,EAAaF,CACzD,CACA,SAASw5D,EAAUxkE,GAEjB,GADA4jE,EAAUlpE,OAAQ,EACbmrF,EAAcnrF,OAAUwrF,EAAWvhF,GAIxC,IAAK,MAAMA,KAAM3E,EAAEopB,eACjB,IAAK,MAAM8I,KAAQg0D,EAAWvhF,GAAGjD,SAC/B,GAAIwwB,IAASvtB,EAEX,YADA4hF,EAAiBr0D,EAKzB,CACA,SAASuyC,EAAWzkE,GAClB4jE,EAAUlpE,OAAQ,CACpB,CAGA,IAAIisF,GAAmB,EACvB,SAASviB,EAAQpkE,GACV2mF,GAAqB/iB,EAAUlpE,OAAWsF,EAAE4mF,eAAiBV,EAAWvhF,IAAIsF,SAASjK,EAAE4mF,gBAAiBpd,IAC7Gmd,GAAmB,CACrB,CACA,SAASE,IACPF,GAAmB,CACrB,CACA,SAASpd,EAAUvpE,GAEjB,SAAS8mF,EAAQ7kF,GACfjC,EAAEioB,iBACFuhD,EAAMvnE,EACR,CAJKikF,EAAWvhF,KAKZqP,EAAatZ,MACD,eAAVsF,EAAEvC,IACJqpF,EAAQhpB,EAAMpjE,MAAQ,OAAS,QACZ,cAAVsF,EAAEvC,KACXqpF,EAAQhpB,EAAMpjE,MAAQ,OAAS,QAGnB,cAAVsF,EAAEvC,IACJqpF,EAAQ,QACW,YAAV9mF,EAAEvC,KACXqpF,EAAQ,QAGE,SAAV9mF,EAAEvC,IACJqpF,EAAQ,SACW,QAAV9mF,EAAEvC,KACXqpF,EAAQ,QAEZ,CACA,SAAStd,EAAMvnE,GACb,IAAKikF,EAAWvhF,GAAI,OACpB,IAAIA,EACJ,GAAK1C,EAGE,GAAiB,SAAbA,GAET,GADA0C,EAAKuhF,EAAWvhF,GAAGvD,cAAc,WAAWwK,oBACvCjH,EAAI,OAAO6kE,EAAM,cACjB,GAAiB,SAAbvnE,GAET,GADA0C,EAAKuhF,EAAWvhF,GAAGvD,cAAc,WAAWoK,wBACvC7G,EAAI,OAAO6kE,EAAM,YACA,UAAbvnE,EACT0C,EAAKuhF,EAAWvhF,GAAGoiF,kBACG,SAAb9kF,IACT0C,EAAKuhF,EAAWvhF,GAAGqiF,sBAZN,CACb,MAAMC,GAAY,QAAkBf,EAAWvhF,IAC/CA,EAAKsiF,EAAU,EACjB,CAWItiF,GACFA,EAAG6kE,MAAM,CACP0d,eAAe,GAGrB,CACA,SAASp+E,EAAS7G,GAChB,MAAMyf,EAAY1N,EAAatZ,OAASojE,EAAMpjE,OAAS,EAAI,EACrDysF,GAA2B,SAAbllF,GAAuByf,EAAYA,GAAa4iE,EAAc5pF,MAClF,IAAIo7C,EAAcgwC,EAAaprF,MAAQysF,EAGvC,GAAInzE,EAAatZ,OAASojE,EAAMpjE,OAASsrF,EAAarhF,GAAI,CACxD,MAAM,YACJwgF,EACAz4E,YAAa+5E,GACXT,EAAarhF,GACjBmxC,GAAeqvC,EAAcsB,CAC/B,CACA1+B,EAAiBjS,EACnB,CACA,MAAMsxC,GAAY,SAAS,KAAM,CAC/BvoF,KAAMuvE,EAAMvvE,KACZ4M,KAAM2iE,EAAM3iE,KACZwuE,OAAQ7L,EAAM6L,OACdH,WAAY1L,EAAM0L,eAEduN,GAAa,SAAS,KAC1B,OAAQpqF,EAAMwoF,YAEZ,IAAK,SACH,OAAO,EAGT,IAAK,UACH,OAAQC,EAAOhrF,MAIjB,KAAK,EACH,OAAOmrF,EAAcnrF,OAAS6N,KAAKuE,IAAIg5E,EAAaprF,OAAS,EAG/D,IAAK,SACH,OAAOgrF,EAAOhrF,OAASmrF,EAAcnrF,OAAS6N,KAAKuE,IAAIg5E,EAAaprF,OAAS,EAK/E,QACE,OAAQgrF,EAAOhrF,QAAUmrF,EAAcnrF,OAAS6N,KAAKuE,IAAIg5E,EAAaprF,OAAS,GACnF,IAEI4sF,GAAU,SAAS,IAEhB/+E,KAAKuE,IAAIg5E,EAAaprF,OAAS,IAElC6sF,GAAU,SAAS,KACvB,IAAKvB,EAAatrF,MAAO,OAAO,EAChC,MAAM8rF,EAAavB,GAAcjxE,EAAatZ,MAAOsrF,EAAarhF,IAC5D6iF,EAAatC,GAAclxE,EAAatZ,MAAOsrF,EAAarhF,IAC5D8iF,EAAgBjB,EAAagB,EAGnC,OAAOC,EAAgBl/E,KAAKuE,IAAIg5E,EAAaprF,OAAS,CAAC,IA+CzD,OA7CA,EAAAmvE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,gBAAiB,CACzB,2BAA4BwJ,EAAatZ,MACzC,6BAA8B2sF,EAAW3sF,MACzC,gCAAiCmrF,EAAcnrF,OAC9CkrF,EAAelrF,MAAOuC,EAAMy4D,OAC/B,MAASz4D,EAAM2E,MACf,SAAYgiE,EAAUlpE,OAAS0zE,EAAM+L,SAASz/E,MAAMyC,QAAU,EAAI,EAClE,QAAWinE,GACV,CACD1gB,QAAS,IAAM,CAAC2jC,EAAW3sF,QAAS,QAAa,MAAO,CACtD,IAAO,OACP,MAAS,CAAC,sBAAuB,CAC/B,iCAAkC4sF,EAAQ5sF,QAE5C,YAAemsF,EACf,QAAW,IAAMS,EAAQ5sF,OAASoO,EAAS,SAC1C,CAACqsD,EAAM1pD,OAAO27E,EAAU1sF,SAAU,QAAao2E,EAAiB,KAAM,CACvEptB,QAAS,IAAM,EAAC,QAAao4B,GAAO,CAClC,KAAQhe,EAAMpjE,MAAQuC,EAAMsoF,SAAWtoF,EAAMuoF,UAC5C,YACC,QAAa,MAAO,CACxB,IAAO,YACP,IAAOQ,EACP,MAAS,2BACT,SAAYh3D,GACX,EAAC,QAAa,MAAO,CACtB,IAAOk3D,EACP,MAAS,yBACT,UAAa1hB,EACb,WAAcC,EACd,UAAa8E,GACZ,CAACpU,EAAMzR,UAAU0jC,EAAU1sF,WAAY2sF,EAAW3sF,QAAS,QAAa,MAAO,CAChF,IAAO,OACP,MAAS,CAAC,sBAAuB,CAC/B,iCAAkC6sF,EAAQ7sF,QAE5C,YAAemsF,EACf,QAAW,IAAMU,EAAQ7sF,OAASoO,EAAS,SAC1C,CAACqsD,EAAMt2D,OAAOuoF,EAAU1sF,SAAU,QAAao2E,EAAiB,KAAM,CACvEptB,QAAS,IAAM,EAAC,QAAao4B,GAAO,CAClC,KAAQhe,EAAMpjE,MAAQuC,EAAMuoF,SAAWvoF,EAAMsoF,UAC5C,gBAGA,CACLpL,SAAU/L,EAAM+L,SAChBrxE,WACAg9E,eACAtc,QACA8d,UACAC,UAEJ,IClVWG,GAAmBppF,OAAOm+D,IAAI,wBAC9BkrB,IAAsB,EAAApqB,EAAA,GAAa,CAC9CjgD,OAAQw3C,QACRx1D,OAAQw1D,QACRytB,gBAAiB,CACfn6D,KAAMjtB,SACNuoD,QAAS,SAER2hC,SACA,YACA9L,GAAe,CAChBG,cAAe,wBAEd3L,QACA,aACA+K,GAAiB,CAClBxC,QAAS,WAEV,cACUsR,IAAa,UAAmB,CAC3C/sF,KAAM,aACNoC,MAAO0qF,KACPzf,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,WACJ68E,EAAU,OACVG,EAAM,KACNp7E,EAAI,KACJ4M,EAAI,SACJ0uE,GACED,GAASj9E,EAAOyqF,IA0BpB,OAzBA,SAAgB,CACdG,MAAO,CACL3gB,OAAO,QAAMjqE,EAAO,SACpBghC,UAAU,QAAMhhC,EAAO,YACvBqC,QAAQ,QAAMrC,EAAO,UACrBq5E,SAAS,QAAMr5E,EAAO,eAG1B,EAAA4sE,EAAA,IAAU,KACR,MAAMie,EAAkBnC,GAAYvb,YAAYntE,GAChD,OAAO,QAAa0oF,IAAa,QAAYmC,EAAiB,CAC5D,MAAS,CAAC,eAAgB,CACxB,uBAAwB7qF,EAAMqgB,QAC7BirD,EAAa7tE,MAAOuC,EAAMy4D,OAC7B,MAASz4D,EAAM2E,QACb,CACF8hD,QAAS,IAAM,CAACyR,EAAMzR,UAAU,CAC9Bo2B,aACAG,SACAp7E,OACA4M,OACA0uE,SAAUA,EAASz/E,UAErB,IAEG,CAAC,CACV,ICnDWqtF,IAAiB,EAAAxqB,EAAA,GAAa,CACzCxI,YAAa7lD,OACb84E,aAAc94E,OACd4wE,WAAY,MACZyB,SAAUzsB,QACV0sB,UAAW,CACTp5D,KAAM,MACNs7B,QAAS,WAEX+9B,WAAY,CACVr5D,KAAMlZ,OACNw0C,QAAS,kBAEX/e,UAAWmwB,QACXx1D,OAAQw1D,QACRmzB,WAAY,CACV7/D,KAAMlZ,OACNw0C,QAAS,aAEXnvC,MAAOugD,QACPM,KAAM,CACJhtC,KAAM0sC,QACNpR,aAASp9C,GAEX4hF,KAAMpzB,QACNqzB,cAAej5E,OACf2wE,YAAa,MACbK,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEXt5C,KAAM8E,OACN+3D,WAAY,CACV7+C,KAAM0sC,QACNpR,SAAS,GAEX90B,SAAS,UACTytD,aAAa,aACVpH,SACA,YACAuD,QACAnD,QACAsE,QACAtH,SACA,cACAmJ,QACAzN,EAAa,CACdvjE,IAAK,aAEJ,aACAsuE,GAAiB,CAClBxC,QAAS,WAEV,SACUuR,IAAQ,UAAmB,CACtChtF,KAAM,QACNktE,WAAY,CACVqb,OAAM,MAERnmF,MAAO8qF,KACP7f,MAAO,CACL,cAAeloE,IAAK,EACpB,oBAAqBtF,IAAS,EAC9B,iBAAkBipB,IAAO,EACzB4rB,MAAOvvC,IAAK,GAEd,KAAAk1D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,EACJpH,IACE,WACE,cACJq1E,GACED,GAAUl4E,IACR,aACJg8E,EAAY,YACZC,EAAW,eACXF,GACED,GAAW97E,IACT,eACJy7E,GACED,GAAWx7E,IACT,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,IACT,YACJy+E,GACED,GAAQx+E,IACN,aACJsrE,IACE,QAAatrE,GACXizC,GAAW,QAAgBjzC,EAAO,cAClCmxE,EAAQwL,GAAa38E,EAAOyqF,IAAkB,GAC9CtyB,GAAO,SAAQn4D,EAAO0lD,GACtB88B,GAAS,SAAS,KAAqB,IAAfxiF,EAAMm4D,MAAkBA,EAAKqqB,OAAO/kF,QAC5Dm+E,GAAc,SAAS,KAAO57E,EAAMghC,WAA2B,IAAfhhC,EAAMm4D,SAAqBgZ,GAASnxE,EAAMm4D,MAAQA,EAAKyjB,YAAYn+E,SACnHknF,GAAa,SAAS,KAAM,CAChC,aAAc7hF,EAAE9C,EAAMwkF,YACtB,OAAA7yD,CAAQ5uB,GACNA,EAAEioB,iBACFjoB,EAAE0rB,kBACFwkB,EAASx1C,OAAQ,EACjB4F,EAAK,cAAeN,EACtB,MAEF,SAAS4uB,EAAQ5uB,GACfM,EAAK,QAASN,GACT64E,EAAYn+E,QACjB06D,EAAKhB,WAAWp0D,GAChBouE,GAAOlvC,SACT,CACA,SAASkpD,EAAUpoF,GACH,UAAVA,EAAEvC,KAA6B,MAAVuC,EAAEvC,MACzBuC,EAAEioB,iBACF2G,EAAQ5uB,GAEZ,CACA,MAAO,KACL,MAAMwgF,EAAMprB,EAAKqqB,OAAO/kF,MAAQ,IAAMuC,EAAMuN,IACtC69E,KAAoBprF,EAAM6iF,aAAc7iF,EAAM+qF,cAC9CtH,KAAe2H,IAAkBlzB,EAAMlwC,QACvC48D,KAAc1sB,EAAMiM,QAASnkE,EAAMskF,UACnC+G,KAAenzB,EAAM71D,SAAUrC,EAAMqC,SAAW8uE,EAChDma,KAAqBtrF,EAAM4iF,cAAe5iF,EAAMkrF,eAChD1H,KAAgB8H,IAAmBpzB,EAAMjvC,SACzCsiE,GAAYpa,GAASA,EAAM0L,WAAWp/E,MAC5C,OAAOw1C,EAASx1C,QAAS,SAAgB,QAAa8lF,GAAK,QAAY,CACrE,MAAS,CAAC,SAAU,CAClB,mBAAoBvjF,EAAMghC,SAC1B,gBAAiBhhC,EAAMsX,MACvB,eAAgBskE,EAAYn+E,MAC5B,iBAAkB4tF,EAClB,eAAgBrrF,EAAMirF,MACrB3f,EAAa7tE,MAAO06E,EAAc16E,MAAO8tF,EAAWvP,EAAav+E,WAAQ4L,EAAWoyE,EAAeh+E,MAAO86E,EAAiB96E,MAAO+3E,EAAe/3E,MAAOghF,EAAYhhF,MAAOs+E,EAAet+E,MAAO0zE,GAAOsL,cAAch/E,MAAOuC,EAAMy4D,OACtO,MAAS,CAAC8yB,EAAWtP,EAAYx+E,WAAQ4L,EAAWrJ,EAAM2E,OAC1D,SAAY3E,EAAMghC,eAAY33B,EAC9B,UAAarJ,EAAM0nC,UACnB,SAAYk0C,EAAYn+E,MAAQ,OAAI4L,EACpC,QAAWsoB,EACX,UAAaiqD,EAAYn+E,QAAU+kF,EAAO/kF,OAAS0tF,GAClDhzB,EAAKwrB,WAAY,CAClBl9B,QAAS,IAAM,CAACk1B,GAAYC,EAAYn+E,MAAO,UAAW4tF,IAAa,QAAa7W,EAAoB,CACtG,IAAO,UACN,CACD/tB,QAAS,IAAM,EAAC,SAAgB,QAAa,MAAO,CAClD,MAAS,kBACR,CAAEyR,EAAM71D,QAGA,QAAasyE,GAAmB,CACzC,IAAO,kBACP,UAAa30E,EAAMgrF,WACnB,SAAY,CACVnM,MAAO,CACLD,KAAM5+E,EAAMgrF,cAGf9yB,EAAM71D,SAXW,QAAaw8E,GAAO,CACtC,IAAO,cACP,KAAQ7+E,EAAMgrF,YACb,QAQiB,CAAC,CAAC,KAAQ7Z,EAAM0L,WAAWp/E,YAC7C+lF,IAAc,QAAa,MAAO,CACpC,IAAO,UACP,MAAS,mBACR,CAAEtrB,EAAMjvC,SAQE,QAAa0rD,GAAmB,CAC3C,IAAO,mBACP,UAAa2W,EACb,SAAY,CACVxG,QAAS,CACPj7C,MAAO7pC,EAAMkrF,cACb70C,OAAO,GAETwoC,MAAO,CACLD,KAAM5+E,EAAM4iF,YACZvsC,OAAO,KAGV6hB,EAAMjvC,UArBY,QAAa,KAAW,KAAM,CAACjpB,EAAM4iF,cAAe,QAAa/D,GAAO,CAC3F,IAAO,eACP,KAAQ7+E,EAAM4iF,YACd,OAAS,GACR,MAAO5iF,EAAMkrF,gBAAiB,QAAapG,GAAS,CACrD,IAAO,iBACP,MAAS9kF,EAAMkrF,cACf,OAAS,GACR,WAakB,QAAa,MAAO,CACvC,MAAS,kBACT,oBAAqB,IACpB,CAAChzB,EAAMzR,UAAU,CAClBo2B,WAAY1L,GAAO0L,WAAWp/E,MAC9Bg/E,cAAetL,GAAOsL,cAAch/E,MACpCu/E,OAAQ7L,GAAO6L,OACf/6C,OAAQkvC,GAAOlvC,OACfxkC,MAAO0zE,GAAO1zE,MAAMA,MACpBujC,SAAUhhC,EAAMghC,YACZhhC,EAAMmN,OAAQs2E,IAAa,QAAa,MAAO,CACnD,IAAO,SACP,MAAS,kBACR,CAAEvrB,EAAMlwC,QAQE,QAAa2sD,GAAmB,CAC3C,IAAO,kBACP,UAAayW,EACb,SAAY,CACVtG,QAAS,CACP32B,KAAK,EACLtkB,MAAO7pC,EAAM+qF,cAEflM,MAAO,CACL1wB,KAAK,EACLywB,KAAM5+E,EAAM6iF,cAGf3qB,EAAMlwC,SArBW,QAAa,KAAW,KAAM,CAAChoB,EAAM6iF,aAAc,QAAahE,GAAO,CACzF,IAAO,cACP,KAAO,EACP,KAAQ7+E,EAAM6iF,YACb,MAAO7iF,EAAM+qF,eAAgB,QAAajG,GAAS,CACpD,IAAO,gBACP,KAAO,EACP,MAAS9kF,EAAM+qF,cACd,UAaiBnG,IAAY,QAAa,UAAU,QAAY,CACjE,IAAO,QACP,MAAS,gBACT,KAAQ,SACR,cAAe,cACdD,EAAWlnF,OAAQ,CAAEy6D,EAAMiM,OAInB,QAAawQ,GAAmB,CACzC,IAAO,iBACP,SAAY,CACVkK,MAAO,CACLD,KAAM5+E,EAAMukF,UACZh1E,KAAM,aAGT2oD,EAAMiM,QAZ6B,QAAa0a,GAAO,CACxD,IAAO,aACP,KAAQ7+E,EAAMukF,UACd,KAAQ,WACP,WASD,CAAC,EAAC,QAAkB,UAAW3I,EAAYn+E,OAASuC,EAAMijF,OAAQ,OAAO,CAEjF,ICzQsB5hF,OAAOm+D,IAAI,iBAS5B,MAAMgsB,GAAUnqF,OAAOm+D,IAAI,gBAC3B,SAASisB,KACd,MAAM3+E,GAAS,QAAO0+E,GAAS,CAC7BhI,YAAY,SAAW,GACvBkI,iBAAkB,IAAM,OAEpBp1E,EAAO,CACXktE,YAAY,SAAW,GACvBkI,iBAAkBjuF,IACZA,IAAO6Y,EAAKktE,WAAW/lF,MAAQA,EAAK,GAI5C,OADA,QAAQ+tF,GAASl1E,GACVxJ,CACT,CACO,SAAS6+E,KACd,OAAO,QAAOH,GAAS,KACzB,CC5BO,MAAMI,GAA4BpP,IACvC,MAAMqP,EAAW,CACfC,SAAU5hF,IACR,IAAI,GACF7K,EAAE,MACF5B,EAAK,UACLsuF,GACE7hF,EAKJ,OAJA7K,GAAK,QAAMA,GAIPm9E,IAAc/+E,GAA4B,IAAnBsuF,EAAUx8E,MAAcw8E,EAAUptF,IAAIU,KAC7D5B,EACFsuF,EAAUt+E,IAAIpO,GAEd0sF,EAAUvgC,OAAOnsD,IAJ0D0sF,CAM7D,EAElB99C,GAAI,CAACr+B,EAAGnL,EAAUyK,KAChB,IAAIjM,EAAM,IAAIswD,IACd,GAAS,MAAL3jD,EACF,IAAK,MAAMvQ,KAAM,QAAYuQ,GAC3B3M,EAAM4oF,EAASC,SAAS,CACtBzsF,KACA5B,OAAO,EACPsuF,UAAW,IAAIx4B,IAAItwD,GACnBwB,WACAyK,YAIN,OAAOjM,CAAG,EAEZirC,IAAKt+B,GACI9N,MAAM0f,KAAK5R,IAGtB,OAAOi8E,CAAQ,EAEJG,GAAkCxP,IAC7C,MAAMyP,EAAiBL,GAA0BpP,GAC3CqP,EAAW,CACfC,SAAUz4E,IACR,IAAI,UACF04E,EAAS,GACT1sF,KACG6qE,GACD72D,EACJhU,GAAK,QAAMA,GACX,MAAM6sF,EAAiBH,EAAUptF,IAAIU,GAAM,IAAIk0D,IAAI,CAACl0D,IAAO,IAAIk0D,IAC/D,OAAO04B,EAAeH,SAAS,IAC1B5hB,EACH7qE,KACA0sF,UAAWG,GACX,EAEJj+C,GAAI,CAACr+B,EAAGnL,EAAUyK,KAChB,IAAIjM,EAAM,IAAIswD,IACd,GAAS,MAAL3jD,EAAW,CACb,MAAMwtE,GAAM,QAAYxtE,GACpBwtE,EAAIl9E,SACN+C,EAAMgpF,EAAeh+C,GAAGmvC,EAAI95E,MAAM,EAAG,GAAImB,EAAUyK,GAEvD,CACA,OAAOjM,CAAG,EAEZirC,IAAK,CAACt+B,EAAGnL,EAAUyK,IACV+8E,EAAe/9C,IAAIt+B,EAAGnL,EAAUyK,IAG3C,OAAO28E,CAAQ,EAEJM,GAAqB3P,IAChC,MAAMyP,EAAiBL,GAA0BpP,GAC3CqP,EAAW,CACfC,SAAUM,IACR,IAAI,GACF/sF,EAAE,UACF0sF,EAAS,SACTtnF,KACGylE,GACDkiB,EAEJ,OADA/sF,GAAK,QAAMA,GACPoF,EAAS9F,IAAIU,GAAY0sF,EACtBE,EAAeH,SAAS,CAC7BzsF,KACA0sF,YACAtnF,cACGylE,GACH,EAEJj8B,GAAIg+C,EAAeh+C,GACnBC,IAAK+9C,EAAe/9C,KAEtB,OAAO29C,CAAQ,EAEJQ,GAA2B7P,IACtC,MAAMyP,EAAiBD,GAAgCxP,GACjDqP,EAAW,CACfC,SAAUQ,IACR,IAAI,GACFjtF,EAAE,UACF0sF,EAAS,SACTtnF,KACGylE,GACDoiB,EAEJ,OADAjtF,GAAK,QAAMA,GACPoF,EAAS9F,IAAIU,GAAY0sF,EACtBE,EAAeH,SAAS,CAC7BzsF,KACA0sF,YACAtnF,cACGylE,GACH,EAEJj8B,GAAIg+C,EAAeh+C,GACnBC,IAAK+9C,EAAe/9C,KAEtB,OAAO29C,CAAQ,EC5HJU,GAAqB,CAChCC,KAAMtiF,IACJ,IAAI,GACF7K,EAAE,MACF5B,EAAK,OACLgvF,EAAM,QACNv9E,GACEhF,EACJ,GAAIzM,EAAO,CACT,MAAMivF,EAAY,IAAIn5B,IACtBm5B,EAAUj/E,IAAIpO,GACd,IAAIyN,EAASoC,EAAQlM,IAAI3D,GACzB,MAAiB,MAAVyN,EACL4/E,EAAUj/E,IAAIX,GACdA,EAASoC,EAAQlM,IAAI8J,GAEvB,OAAO4/E,CACT,CAEE,OADAD,EAAOjhC,OAAOnsD,GACPotF,CACT,EAEFzP,OAAQ,IAAM,MAEH2P,GAAuB,CAClCH,KAAMn5E,IACJ,IAAI,GACFhU,EAAE,MACF5B,EAAK,OACLgvF,EAAM,QACNv9E,GACEmE,EACJ,GAAI5V,EAAO,CACT,IAAIqP,EAASoC,EAAQlM,IAAI3D,GACzBotF,EAAOh/E,IAAIpO,GACX,MAAiB,MAAVyN,GAAkBA,IAAWzN,EAClCotF,EAAOh/E,IAAIX,GACXA,EAASoC,EAAQlM,IAAI8J,GAEvB,OAAO2/E,CACT,CAGA,OAFEA,EAAOjhC,OAAOnsD,GAETotF,CAAM,EAEfzP,OAAQ,IAAM,MAEH4P,GAAmB,CAC9BJ,KAAMG,GAAqBH,KAC3BxP,OAAQoP,IACN,IAAI,GACF/sF,EAAE,MACF5B,EAAK,OACLgvF,EAAM,QACNv9E,GACEk9E,EACJ,IAAK3uF,EAAO,OAAOgvF,EACnB,MAAM9pE,EAAO,GACb,IAAI7V,EAASoC,EAAQlM,IAAI3D,GACzB,MAAiB,MAAVyN,EACL6V,EAAKngB,KAAKsK,GACVA,EAASoC,EAAQlM,IAAI8J,GAEvB,OAAO,IAAIymD,IAAI5wC,EAAK,GC5DXkqE,GAA4BrQ,IACvC,MAAMqP,EAAW,CACf7O,OAAQ9yE,IACN,IAAI,GACF7K,EAAE,MACF5B,EAAK,SACLy/E,GACEhzE,EAKJ,GAJA7K,GAAK,QAAMA,GAIPm9E,IAAc/+E,EAAO,CACvB,MAAMoF,EAAKf,MAAM0f,KAAK07D,EAAShqE,WAAWygD,QAAO,CAACypB,EAAK/pE,KACrD,IAAK7S,EAAK/C,GAAS4V,EAEnB,MADc,OAAV5V,GAAgB2/E,EAAI56E,KAAKhC,GACtB48E,CAAG,GACT,IACH,GAAkB,IAAdv6E,EAAG3C,QAAgB2C,EAAG,KAAOxD,EAAI,OAAO69E,CAC9C,CAEA,OADAA,EAASj6E,IAAI5D,EAAI5B,EAAQ,KAAO,OACzBy/E,CAAQ,EAEjBjvC,GAAI,CAACr+B,EAAGnL,EAAUyK,KAChB,IAAI3L,EAAM,IAAIX,IACd,IAAK,MAAMvD,KAAMuQ,GAAK,GACpBrM,EAAMsoF,EAAS7O,OAAO,CACpB39E,KACA5B,OAAO,EACPy/E,SAAU,IAAIt6E,IAAIW,GAClBkB,WACAyK,YAGJ,OAAO3L,CAAG,EAEZ2qC,IAAKt+B,IACH,MAAMwtE,EAAM,GACZ,IAAK,MAAO58E,EAAK/C,KAAUmS,EAAEsD,UACb,OAAVzV,GAAgB2/E,EAAI56E,KAAKhC,GAE/B,OAAO48E,CAAG,GAGd,OAAOyO,CAAQ,EAEJiB,GAAkCtQ,IAC7C,MAAMyP,EAAiBY,GAA0BrQ,GAC3CqP,EAAW,CACf7O,OAAQoP,IACN,IAAI,SACFlP,EAAQ,GACR79E,KACG6qE,GACDkiB,EACJ/sF,GAAK,QAAMA,GACX,MAAM6sF,EAAiBhP,EAASv+E,IAAIU,GAAM,IAAIuD,IAAI,CAAC,CAACvD,EAAI69E,EAASl6E,IAAI3D,MAAS,IAAIuD,IAClF,OAAOqpF,EAAejP,OAAO,IACxB9S,EACH7qE,KACA69E,SAAUgP,GACV,EAEJj+C,GAAI,CAACr+B,EAAGnL,EAAUyK,KAChB,IAAI3L,EAAM,IAAIX,IAId,OAHIgN,GAAG1P,SACLqD,EAAM0oF,EAAeh+C,GAAGr+B,EAAEtM,MAAM,EAAG,GAAImB,EAAUyK,IAE5C3L,CAAG,EAEZ2qC,IAAK,CAACt+B,EAAGnL,EAAUyK,IACV+8E,EAAe/9C,IAAIt+B,EAAGnL,EAAUyK,IAG3C,OAAO28E,CAAQ,EAEJkB,GAAqBvQ,IAChC,MAAMyP,EAAiBY,GAA0BrQ,GAC3CqP,EAAW,CACf7O,OAAQsP,IACN,IAAI,GACFjtF,EAAE,SACF69E,EAAQ,SACRz4E,KACGylE,GACDoiB,EAEJ,OADAjtF,GAAK,QAAMA,GACPoF,EAAS9F,IAAIU,GAAY69E,EACtB+O,EAAejP,OAAO,CAC3B39E,KACA69E,WACAz4E,cACGylE,GACH,EAEJj8B,GAAIg+C,EAAeh+C,GACnBC,IAAK+9C,EAAe/9C,KAEtB,OAAO29C,CAAQ,EAEJmB,GAA2BxQ,IACtC,MAAMyP,EAAiBa,GAAgCtQ,GACjDqP,EAAW,CACf7O,OAAQiQ,IACN,IAAI,GACF5tF,EAAE,SACF69E,EAAQ,SACRz4E,KACGylE,GACD+iB,EAEJ,OADA5tF,GAAK,QAAMA,GACPoF,EAAS9F,IAAIU,GAAY69E,EACtB+O,EAAejP,OAAO,CAC3B39E,KACA69E,WACAz4E,cACGylE,GACH,EAEJj8B,GAAIg+C,EAAeh+C,GACnBC,IAAK+9C,EAAe/9C,KAEtB,OAAO29C,CAAQ,EAEJqB,GAAwB1Q,IACnC,MAAMqP,EAAW,CACf7O,OAAQmQ,IACN,IAAI,GACF9tF,EAAE,MACF5B,EAAK,SACLy/E,EAAQ,SACRz4E,EAAQ,QACRyK,GACEi+E,EACJ9tF,GAAK,QAAMA,GACX,MAAM+tF,EAAW,IAAIxqF,IAAIs6E,GACnBpN,EAAQ,CAACzwE,GACf,MAAOywE,EAAM5vE,OAAQ,CACnB,MAAM+0B,EAAO66C,EAAMljE,QACnBswE,EAASj6E,KAAI,QAAMgyB,GAAOx3B,EAAQ,KAAO,OACrCgH,EAAS9F,IAAIs2B,IACf66C,EAAMttE,QAAQiC,EAASzB,IAAIiyB,GAE/B,CACA,IAAInoB,GAAS,QAAMoC,EAAQlM,IAAI3D,IAC/B,MAAOyN,EAAQ,CACb,MAAMugF,EAAc5oF,EAASzB,IAAI8J,GAC3BwgF,EAAgBD,EAAY1jC,OAAM4jC,GAAoC,OAA7BrQ,EAASl6E,KAAI,QAAMuqF,MAC5DC,EAAeH,EAAY1jC,OAAM4jC,IAAQrQ,EAASv+E,KAAI,QAAM4uF,KAAsC,QAA7BrQ,EAASl6E,KAAI,QAAMuqF,MAC9FrQ,EAASj6E,IAAI6J,EAAQwgF,EAAgB,KAAOE,EAAe,MAAQ,iBACnE1gF,GAAS,QAAMoC,EAAQlM,IAAI8J,GAC7B,CAIA,GAAI0vE,IAAc/+E,EAAO,CACvB,MAAMoF,EAAKf,MAAM0f,KAAK07D,EAAShqE,WAAWygD,QAAO,CAACypB,EAAKqQ,KACrD,IAAKjtF,EAAK/C,GAASgwF,EAEnB,MADc,OAAVhwF,GAAgB2/E,EAAI56E,KAAKhC,GACtB48E,CAAG,GACT,IACH,GAAkB,IAAdv6E,EAAG3C,OAAc,OAAOktF,CAC9B,CACA,OAAOlQ,CAAQ,EAEjBjvC,GAAI,CAACr+B,EAAGnL,EAAUyK,KAChB,IAAI3L,EAAM,IAAIX,IACd,IAAK,MAAMvD,KAAMuQ,GAAK,GACpBrM,EAAMsoF,EAAS7O,OAAO,CACpB39E,KACA5B,OAAO,EACPy/E,SAAU,IAAIt6E,IAAIW,GAClBkB,WACAyK,YAGJ,OAAO3L,CAAG,EAEZ2qC,IAAK,CAACt+B,EAAGnL,KACP,MAAM24E,EAAM,GACZ,IAAK,MAAO58E,EAAK/C,KAAUmS,EAAEsD,UACb,OAAVzV,GAAmBgH,EAAS9F,IAAI6B,IAAM48E,EAAI56E,KAAKhC,GAErD,OAAO48E,CAAG,GAGd,OAAOyO,CAAQ,ECtLJ6B,GAAgBrsF,OAAOm+D,IAAI,kBAC3BmuB,GAAc,CACzBtuF,IAAI,UACJk0C,KAAM,CACJwS,SAAU,IAAM,KAChB0oB,WAAY,IAAM,KAClBv/D,SAAS,QAAI,IAAItM,KACjB6B,UAAU,QAAI,IAAI7B,KAClB4pF,KAAM,IAAM,KACZoB,aAAc,IAAM,KACpB9B,SAAU,IAAM,KAChB9O,OAAQ,IAAM,KACd6Q,aAAa,SAAI,GACjBC,YAAY,SAAI,GAChBrB,QAAQ,QAAI,IAAIl5B,KAChBw4B,WAAW,QAAI,IAAIx4B,KACnB2pB,UAAU,QAAI,IAAIt6E,KAClBmrF,gBAAgB,QAAI,IACpBC,QAAS,IAAM,KAGNC,IAAkB,EAAA3tB,EAAA,GAAa,CAC1CutB,YAAah2B,QACbi2B,WAAYj2B,QACZq2B,eAAgB,CAACj8E,OAAQ/T,SAAUO,QACnC0vF,eAAgB,CAACl8E,OAAQ/T,SAAUO,QACnC2vF,aAAc,CAACn8E,OAAQxT,QACvBguF,OAAQ,KACRV,UAAW,KACX7O,SAAU,KACVV,UAAW3kB,SACV,UACUw2B,GAAYruF,IACvB,IAAI06D,GAAc,EAClB,MAAMj2D,GAAW,QAAI,IAAI7B,KACnBsM,GAAU,QAAI,IAAItM,KAClB6pF,GAAS,QAAgBzsF,EAAO,SAAUA,EAAMysF,QAAQ78E,GAAK,IAAI2jD,IAAI3jD,KAAIA,GAAK,IAAIA,EAAE8kD,YACpFw5B,GAAiB,SAAS,KAC9B,GAAoC,kBAAzBluF,EAAMkuF,eAA6B,OAAOluF,EAAMkuF,eAC3D,GAAoC,oBAAzBluF,EAAMkuF,eAA+B,OAAOluF,EAAMkuF,eAAeluF,EAAMw8E,WAClF,OAAQx8E,EAAMkuF,gBACZ,IAAK,OACH,OAAO/B,GAAmBnsF,EAAMw8E,WAClC,IAAK,cACH,OAAO6P,GAAyBrsF,EAAMw8E,WACxC,IAAK,cACH,OAAOoP,GAA0B5rF,EAAMw8E,WACzC,IAAK,qBACL,QACE,OAAOwP,GAAgChsF,EAAMw8E,WACjD,IAEI2R,GAAiB,SAAS,KAC9B,GAAoC,kBAAzBnuF,EAAMmuF,eAA6B,OAAOnuF,EAAMmuF,eAC3D,GAAoC,oBAAzBnuF,EAAMmuF,eAA+B,OAAOnuF,EAAMmuF,eAAenuF,EAAMw8E,WAClF,OAAQx8E,EAAMmuF,gBACZ,IAAK,cACH,OAAOnB,GAAyBhtF,EAAMw8E,WACxC,IAAK,OACH,OAAOuQ,GAAmB/sF,EAAMw8E,WAClC,IAAK,cACH,OAAOqQ,GAA0B7sF,EAAMw8E,WACzC,IAAK,qBACH,OAAOsQ,GAAgC9sF,EAAMw8E,WAC/C,IAAK,UACL,QACE,OAAO0Q,GAAsBltF,EAAMw8E,WACvC,IAEI4R,GAAe,SAAS,KAC5B,GAAkC,kBAAvBpuF,EAAMouF,aAA2B,OAAOpuF,EAAMouF,aACzD,OAAQpuF,EAAMouF,cACZ,IAAK,OACH,OAAOxB,GACT,IAAK,SACH,OAAOL,GACT,IAAK,WACL,QACE,OAAOI,GACX,IAEIZ,GAAY,QAAgB/rF,EAAO,YAAaA,EAAM+rF,WAAWn8E,GAAKs+E,EAAezwF,MAAMwwC,GAAGr+B,EAAGnL,EAAShH,MAAOyR,EAAQzR,SAAQmS,GAAKs+E,EAAezwF,MAAMywC,IAAIt+B,EAAGnL,EAAShH,MAAOyR,EAAQzR,SAC1Ly/E,GAAW,QAAgBl9E,EAAO,WAAYA,EAAMk9E,UAAUttE,GAAKu+E,EAAe1wF,MAAMwwC,GAAGr+B,EAAGnL,EAAShH,MAAOyR,EAAQzR,SAAQmS,GAAKu+E,EAAe1wF,MAAMywC,IAAIt+B,EAAGnL,EAAShH,MAAOyR,EAAQzR,SAI7L,SAASuwF,EAAQ3uF,GACf,MAAMsjB,EAAO,GACb,IAAI7V,EAASzN,EACb,MAAiB,MAAVyN,EACL6V,EAAKjM,QAAQ5J,GACbA,EAASoC,EAAQzR,MAAMuF,IAAI8J,GAE7B,OAAO6V,CACT,EAXA,SAAgB,KACd+3C,GAAc,CAAI,IAWpB,MAAM6L,GAAK,EAAAC,EAAA,IAAmB,UACxB8nB,EAAU,IAAI/6B,IACd/kC,EAAS,CACbnvB,IAAI,UACJk0C,KAAM,CACJk5C,SACAoB,aAAa,QAAM7tF,EAAO,eAC1B8tF,YAAY,QAAM9tF,EAAO,cACzB+rF,YACA7O,WACA6Q,gBAAgB,SAAS,KACvB,MAAM3Q,EAAM,GACZ,IAAK,MAAO58E,EAAK/C,KAAUy/E,EAASz/E,MAAMyV,UAC1B,OAAVzV,GAAgB2/E,EAAI56E,KAAKhC,GAE/B,OAAO48E,CAAG,IAEZr3B,SAAU,CAAC1mD,EAAIkvF,EAAUC,KACvB,GAAIF,EAAQ3vF,IAAIU,GAAhB,CACE,MAAMsjB,EAAOqrE,EAAQ3uF,GAAIkE,IAAI0O,QAAQ1J,KAAK,QACpCkmF,EAAUT,EAAQO,GAAU37B,OAAOvzD,GAAIkE,IAAI0O,QAAQ1J,KAAK,SAC9D,SAAa,sCAAsCoa,QAAW8rE,IAIhE,MADEH,EAAQ7gF,IAAIpO,GAEdkvF,GAAYlvF,IAAOkvF,GAAYr/E,EAAQzR,MAAMwF,IAAI5D,EAAIkvF,GACrDC,GAAW/pF,EAAShH,MAAMwF,IAAI5D,EAAI,IAClB,MAAZkvF,GACF9pF,EAAShH,MAAMwF,IAAIsrF,EAAU,IAAK9pF,EAAShH,MAAMuF,IAAIurF,IAAa,GAAKlvF,GACzE,EAEFovE,WAAYpvE,IACV,GAAIq7D,EAAa,OACjB4zB,EAAQ9iC,OAAOnsD,GACfoF,EAAShH,MAAM+tD,OAAOnsD,GACtB,MAAMyN,EAASoC,EAAQzR,MAAMuF,IAAI3D,GACjC,GAAIyN,EAAQ,CACV,MAAMsoD,EAAO3wD,EAAShH,MAAMuF,IAAI8J,IAAW,GAC3CrI,EAAShH,MAAMwF,IAAI6J,EAAQsoD,EAAK/yD,QAAO0M,GAASA,IAAU1P,IAC5D,CACA6P,EAAQzR,MAAM+tD,OAAOnsD,EAAG,EAE1BmtF,KAAM,CAACntF,EAAI5B,EAAOiY,KAChB6wD,EAAGljE,KAAK,aAAc,CACpBhE,KACA5B,QACAklB,KAAMqrE,EAAQ3uF,GACdqW,UAEF,MAAMg3E,EAAY0B,EAAa3wF,MAAM+uF,KAAK,CACxCntF,KACA5B,QACAgvF,OAAQ,IAAIl5B,IAAIk5B,EAAOhvF,OACvBgH,SAAUA,EAAShH,MACnByR,QAASA,EAAQzR,MACjBiY,UAEFg3E,IAAcD,EAAOhvF,MAAQivF,EAAU,EAEzCkB,aAAc,CAACvuF,EAAI5B,EAAOiY,KACxB,MAAMg3E,EAAY0B,EAAa3wF,MAAMu/E,OAAO,CAC1C39E,KACA5B,QACAy/E,SAAU,IAAIt6E,IAAIs6E,EAASz/E,OAC3BgvF,OAAQ,IAAIl5B,IAAIk5B,EAAOhvF,OACvBgH,SAAUA,EAAShH,MACnByR,QAASA,EAAQzR,MACjBiY,UAEFg3E,IAAcD,EAAOhvF,MAAQivF,EAAU,EAEzC1P,OAAQ,CAAC39E,EAAI5B,EAAOiY,KAClB6wD,EAAGljE,KAAK,eAAgB,CACtBhE,KACA5B,QACAklB,KAAMqrE,EAAQ3uF,GACdqW,UAEF,MAAMg5E,EAAcP,EAAe1wF,MAAMu/E,OAAO,CAC9C39E,KACA5B,QACAy/E,SAAU,IAAIt6E,IAAIs6E,EAASz/E,OAC3BgH,SAAUA,EAAShH,MACnByR,QAASA,EAAQzR,MACjBiY,UAEFg5E,IAAgBxR,EAASz/E,MAAQixF,GACjClgE,EAAO+kB,KAAKq6C,aAAavuF,EAAI5B,EAAOiY,EAAM,EAE5Co2E,SAAU,CAACzsF,EAAI5B,EAAOiY,KACpB,IAAK1V,EAAM6tF,YACT,OAAOr/D,EAAO+kB,KAAKypC,OAAO39E,GAAI,EAAMqW,GAEtC6wD,EAAGljE,KAAK,iBAAkB,CACxBhE,KACA5B,QACAklB,KAAMqrE,EAAQ3uF,GACdqW,UAEF,MAAMi5E,EAAeT,EAAezwF,MAAMquF,SAAS,CACjDzsF,KACA5B,QACAsuF,UAAW,IAAIx4B,IAAIw4B,EAAUtuF,OAC7BgH,SAAUA,EAAShH,MACnByR,QAASA,EAAQzR,MACjBiY,UAEFi5E,IAAiB5C,EAAUtuF,MAAQkxF,EAAa,EAElDlqF,WACAyK,UACA8+E,YAIJ,OADA,QAAQN,GAAel/D,GAChBA,EAAO+kB,IAAI,EAEPq7C,GAAgB,CAACvvF,EAAImvF,KAChC,MAAM1hF,GAAS,QAAO4gF,GAAeC,IAC/BkB,EAAYxtF,QAAO,WACnBytF,GAAa,SAAS,SAAmBzlF,IAAbhK,EAAG5B,MAAsB4B,EAAG5B,MAAQoxF,IAChE55D,EAAO,IACRnoB,EACHzN,GAAIyvF,EACJtC,KAAM,CAACA,EAAMzpF,IAAM+J,EAAOymC,KAAKi5C,KAAKsC,EAAWrxF,MAAO+uF,EAAMzpF,GAC5D6qF,aAAc,CAACpB,EAAMzpF,IAAM+J,EAAOymC,KAAKq6C,aAAakB,EAAWrxF,MAAO+uF,EAAMzpF,GAC5EgsF,QAAQ,SAAS,IAAMjiF,EAAOymC,KAAKk5C,OAAOhvF,MAAMkB,IAAImwF,EAAWrxF,SAC/DqP,QAAQ,SAAS,IAAMA,EAAOymC,KAAKrkC,QAAQzR,MAAMuF,IAAI8rF,EAAWrxF,SAChEquF,SAAU,CAACC,EAAWhpF,IAAM+J,EAAOymC,KAAKu4C,SAASgD,EAAWrxF,MAAOsuF,EAAWhpF,GAC9EisF,aAAa,SAAS,IAAMliF,EAAOymC,KAAKw4C,UAAUtuF,MAAMkB,KAAI,QAAMmwF,EAAWrxF,UAC7Eu/E,OAAQ,CAACE,EAAUn6E,IAAM+J,EAAOymC,KAAKypC,OAAO8R,EAAWrxF,MAAOy/E,EAAUn6E,GACxE85E,YAAY,SAAS,IAAkE,OAA5D/vE,EAAOymC,KAAK2pC,SAASz/E,MAAMuF,KAAI,QAAM8rF,EAAWrxF,UAC3EwxF,iBAAiB,SAAS,IAA2D,kBAArDniF,EAAOymC,KAAK2pC,SAASz/E,MAAMuF,IAAI8rF,EAAWrxF,SAC1EyxF,QAAQ,SAAS,KAAOpiF,EAAOymC,KAAK9uC,SAAShH,MAAMuF,IAAI8rF,EAAWrxF,SAClE0xF,iBAAkBriF,EAAOqiF,kBAO3B,OALCriF,EAAOqiF,kBAAoBriF,EAAOymC,KAAKwS,SAAS+oC,EAAWrxF,MAAOqP,EAAOzN,GAAG5B,MAAO+wF,IACpF,SAAgB,MACb1hF,EAAOqiF,kBAAoBriF,EAAOymC,KAAKk7B,WAAWqgB,EAAWrxF,MAAM,IAEtE+wF,IAAW,QAAQd,GAAez4D,GAC3BA,CAAI,EAEAm6D,GAA0B,KACrC,MAAMtiF,GAAS,QAAO4gF,GAAeC,KACrC,QAAQD,GAAe,IAClB5gF,EACHqiF,kBAAkB,GAClB,EC9OEE,IAAsB,EAAAC,EAAA,IAAgB,CAC1C1xF,KAAM,sBACN,KAAAq6D,CAAMz8C,EAAGtR,GACP,IAAI,MACFguD,GACEhuD,EAEJ,OADAklF,KACO,IAAMl3B,EAAMzR,WACrB,IAEW8oC,IAAsB,EAAAjvB,EAAA,GAAa,CAE9CoiB,YAAazwE,OACbkqE,UAAWlqE,OACXg4D,MAAOh4D,OACPu9E,aAAc,CACZrkE,KAAM,MACNs7B,QAAS,aAEXgpC,WAAY,CACVtkE,KAAM,MACNs7B,QAAS,WAEXm8B,YAAa,MACbC,WAAY,MACZ6M,MAAO73B,QACP83B,SAAU93B,QACVkhB,MAAO9mE,OACPxU,MAAO,SACJ,YACAqzE,KACF,cACU8e,IAAa,UAAmB,CAC3ChyF,KAAM,aACNoC,MAAOuvF,KACP,KAAAt3B,CAAMj4D,EAAOqT,GACX,IAAI,MACF6kD,GACE7kD,EACJ,MAAM,OACJ07E,EAAM,KACNvC,EACAntF,GAAIwwF,GACFjB,IAAc,QAAM5uF,EAAO,UAAU,GACnCX,GAAK,SAAS,IAAM,oBAAoB4S,OAAO49E,EAAIpyF,WACnD23D,EAAOu2B,MACP,SACJ7T,GACE4C,KACJ,SAAS/oD,EAAQ5uB,GACfA,EAAE0rB,kBACF+9D,GAAMuC,EAAOtxF,MAAOsF,EACtB,CACA,MAAMijE,GAAiB,SAAS,KAAM,CACpCr0C,UACA8mC,MAAO,uBACPp5D,GAAIA,EAAG5B,UAEHqyF,GAAa,SAAS,IAAMf,EAAOtxF,MAAQuC,EAAMwvF,aAAexvF,EAAMyvF,aACtEM,GAAoB,SAAS,KAAM,CACvCC,UAAW,CACTlrB,OAAQiqB,EAAOtxF,MACfilF,YAAa1iF,EAAM0iF,YACnBvG,UAAWn8E,EAAMm8E,UACjBlS,MAAOjqE,EAAMiqE,MACb2Y,YAAa5iF,EAAM4iF,aAAe5iF,EAAM2vF,UAAYG,EAAWryF,MAC/DolF,WAAY7iF,EAAM6iF,aAAe7iF,EAAM2vF,UAAYG,EAAWryF,MAC9Ds7E,MAAO/4E,EAAM+4E,MACbt7E,MAAOuC,EAAMvC,WAkCjB,OA/BA,EAAAmvE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,eAAgB,CACxB,wBAAyB6nD,GAAMouB,WAAW/lF,MAC1C,sBAAuBuC,EAAM0vF,MAC7B,yBAA0B1vF,EAAM2vF,SAChC,qBAAsBZ,EAAOtxF,OAC5BuC,EAAMy4D,OACT,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,CAACyR,EAAM6N,YAAa,QAAa4O,GAAmB,CACjE,SAAYob,EAAkBtyF,OAC7B,CACDgpD,QAAS,IAAM,EAAC,QAAa4oC,GAAqB,KAAM,CACtD5oC,QAAS,IAAM,CAACyR,EAAM6N,UAAU,CAC9B/lE,MAAOgmE,EAAevoE,MACtBsxF,OAAQA,EAAOtxF,eAGjB,QAAa,KAAiB,CAChC,WAAc,CACZ4oD,UAAWkuB,GAEb,UAAauD,EAASr6E,OACrB,CACDgpD,QAAS,IAAM,EAAC,SAAgB,QAAa,MAAO,CAClD,MAAS,sBACT,KAAQ,QACR,kBAAmBpnD,EAAG5B,OACrB,CAACy6D,EAAMzR,cAAe,CAAC,CAAC,KAAQsoC,EAAOtxF,iBAGvC,CACLsxF,SAEJ,ICjHWkB,IAA6B,EAAA3vB,EAAA,GAAa,CACrD95B,QAAS,CAACn0B,OAAQJ,YACf,YACA6+D,KACF,qBACUof,IAAoB,UAAmB,CAClDtyF,KAAM,oBACNoC,MAAOiwF,KACP,KAAAh4B,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAOJ,OANA,EAAA0iE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,uBAAwBvN,EAAMy4D,OACxC,MAAS,CAAC,CACR,iCAAkCz4D,EAAMwmC,SACvCxmC,EAAM2E,QACRuzD,KACI,CAAC,CACV,ICtBWi4B,GAAiBnM,GAAuB,qBCwBxCoM,IAAqB,EAAA9vB,EAAA,GAAa,CAC7CwE,OAAQ,CACN35C,KAAM0sC,QACNpR,aAASp9C,GAEXyuD,YAAa7lD,OAEbywE,YAAazwE,OACb84E,aAAc94E,OACd4wE,WAAY,MACZ1G,UAAWlqE,OACX+uB,SAAU62B,QACVw4B,MAAO,CAACx4B,QAAS5lD,QACjBkmD,KAAM,CACJhtC,KAAM0sC,QACNpR,aAASp9C,GAEXinF,IAAKz4B,QACLqzB,cAAej5E,OACf2wE,YAAa,MACbK,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEXs8B,KAAMlrB,QACN04B,SAAU,CAACt+E,OAAQI,QACnB0mE,MAAO,CAAC9mE,OAAQI,QAChB5U,MAAO,KACPk0B,SAAS,UACTytD,aAAa,aACVpH,SACA,YACAuD,SACA,aACAnD,QACAhD,SACA,cACAtE,QACA,aACA+K,GAAiB,CAClBxC,QAAS,UAEV,aACU2W,IAAY,UAAmB,CAC1CpyF,KAAM,YACNktE,WAAY,CACVqb,OAAM,MAERnmF,MAAOowF,KACPnlB,MAAO,CACL34B,MAAOvvC,IAAK,GAEd,KAAAk1D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,EAAK,KACL70D,GACE6G,EACJ,MAAMiuD,GAAO,SAAQn4D,EAAO0lD,GACtBrmD,GAAK,SAAS,SAAsBgK,IAAhBrJ,EAAMvC,MAAsB06D,EAAK/yD,KAAK3H,MAAQuC,EAAMvC,SACxE,SACJquF,EAAQ,YACRkD,EAAW,OACXhS,EAAM,OACN+R,EAAM,WACNlS,EAAU,gBACVoS,EAAe,iBACfE,EAAgB,KAChB57C,EAAI,OACJzmC,EAAM,aACN8gF,EACAvuF,GAAI+pE,GACFwlB,GAAcvvF,GAAI,GAChB+1D,EAAOu2B,KACP14C,GAAW,SAAS,KAAuB,IAAjBjzC,EAAM8kE,SAAqB9kE,EAAM8kE,QAAU3M,EAAKllB,UAAUx1C,QAAU81C,EAAKs6C,YAAYpwF,MAAQuxF,EAAYvxF,MAAQo/E,EAAWp/E,UACtJ+kF,GAAS,SAAS,KAAqB,IAAfxiF,EAAMm4D,MAAkBA,EAAKqqB,OAAO/kF,QAC5Dm+E,GAAc,SAAS,KAAO57E,EAAMghC,WAA2B,IAAfhhC,EAAMm4D,OAAmBn4D,EAAMm4D,MAAQA,EAAKyjB,YAAYn+E,SAAW23D,IAAS7hB,EAAKu6C,WAAWrwF,OAAS81C,EAAKs6C,YAAYpwF,OAAwB,MAAfuC,EAAMvC,UACrL+yF,GAAe,SAAS,IAAMxwF,EAAMq1E,SAAWr1E,EAAMswF,MACrDrmB,GAAQ,SAAS,IAAMjqE,EAAMiqE,OAASjqE,EAAM0iF,cAC5CQ,GAAe,SAAS,KAAM,CAClCjZ,MAAOh3B,EAASx1C,MAAQwsE,EAAMxsE,OAASuC,EAAMm8E,UAAYn8E,EAAMm8E,UAC/D9C,QAASr5E,EAAMq5E,aAEjB,SAAM,IAAMlhB,EAAKllB,UAAUx1C,QAAOipB,IAC5BA,GAAuB,MAAhB5Z,EAAOrP,OAChB81C,EAAKi5C,KAAK1/E,EAAOrP,OAAO,GAEtBipB,GACFknE,EAAalnE,EACf,GACC,CACDg9C,WAAW,IAEb,MAAM,aACJ4H,IACE,QAAatrE,IACX,cACJm4E,GACED,GAAUl4E,IACR,aACJg8E,EAAY,YACZC,EAAW,eACXF,GACED,GAAWoH,IACT,eACJzH,GACED,GAAWx7E,IACT,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWib,GACTC,GAAc,SAAS,IAAMzwF,EAAMqwF,MAAQ,gBAAgBrwF,EAAMqwF,kBAAehnF,IAChF8gF,GAAY,SAAS,KAAM,CAC/Bl3C,SAAUA,EAASx1C,MACnBu/E,SACA+R,OAAQA,EAAOtxF,MACfo/E,WAAYA,EAAWp/E,MACvBwxF,gBAAiBA,EAAgBxxF,UAEnC,SAASk0B,EAAQ5uB,GACfM,EAAK,QAASN,GACT64E,EAAYn+E,QACjB06D,EAAKhB,WAAWp0D,GACZosF,IACA57C,EAAKs6C,YAAYpwF,MACnBquF,GAAUkD,EAAYvxF,MAAOsF,IACpBwwC,EAAKu6C,WAAWrwF,OAED,MAAfuC,EAAMvC,QADfu/E,GAAQH,EAAWp/E,MAAOsF,IAI9B,CACA,SAASooF,EAAUpoF,GACH,UAAVA,EAAEvC,KAA6B,MAAVuC,EAAEvC,MACzBuC,EAAEioB,iBACFjoB,EAAEhD,OAAOsvB,cAAc,IAAI+8C,WAAW,QAASrpE,IAEnD,CA6GA,OA5GA,EAAA6pE,EAAA,IAAU,KACR,MAAM2W,EAAMf,EAAO/kF,MAAQ,IAAMuC,EAAMuN,IACjC+rE,EAAWphB,EAAM6gB,OAAwB,MAAf/4E,EAAM+4E,MAChC2X,EAAcx4B,EAAMq4B,UAA8B,MAAlBvwF,EAAMuwF,SACtCnF,KAAoBprF,EAAM+qF,eAAgB/qF,EAAM6iF,YAChDY,KAAe2H,IAAkBlzB,EAAMlwC,QACvCsjE,KAAqBtrF,EAAMkrF,gBAAiBlrF,EAAM4iF,aAClDY,KAAgB8H,IAAmBpzB,EAAMjvC,SAK/C,OAJAmsC,GAAMs2B,iBAAiBlI,GACnBxjF,EAAM0iF,cACR,SAAU,eAAgB,CAAC,QAAS,gBAE/B,SAAgB,QAAaa,GAAK,QAAY,CACnD,MAAS,CAAC,cAAe,CACvB,sBAAuBtwC,EAASx1C,MAChC,wBAAyBuC,EAAMghC,SAC/B,oBAAqB46C,EAAYn+E,MACjC,mBAAoBuC,EAAMswF,IAC1B,wBAAyB9M,GAAcpuB,GAAMouB,WAAW/lF,MACxD,oBAAqBuC,EAAM+iF,KAC3B,CAAC,GAAG/iF,EAAM83D,eAAgB93D,EAAM83D,aAAe7kB,EAASx1C,OACvD6tE,EAAa7tE,MAAO06E,EAAc16E,MAAOu+E,EAAav+E,MAAOg+E,EAAeh+E,MAAO86E,EAAiB96E,MAAOgzF,EAAYhzF,MAAO+3E,EAAe/3E,MAAOs+E,EAAet+E,MAAOuC,EAAMy4D,OACnL,MAAS,CAACwjB,EAAYx+E,MAAOquE,EAAgBruE,MAAOuC,EAAM2E,OAC1D,SAAYi3E,EAAYn+E,MAAQ23D,GAAQ,EAAI,OAAI/rD,EAChD,gBAAiBkqC,EAAKs6C,YAAYpwF,MAAQuxF,EAAYvxF,MAAQo/E,EAAWp/E,MACzE,QAAWk0B,EACX,UAAaiqD,EAAYn+E,QAAU+kF,EAAO/kF,OAAS0tF,GAClDhzB,EAAKwrB,WAAY,CAClBl9B,QAAS,IAAM,CAACk1B,GAAYC,EAAYn+E,OAASw1C,EAASx1C,MAAO,eAAgB+lF,IAAc,QAAa,MAAO,CACjH,IAAO,UACP,MAAS,wBACR,CAAEtrB,EAAMjvC,SAQE,QAAa0rD,GAAmB,CAC3C,IAAO,mBACP,UAAa2W,EACb,SAAY,CACVxG,QAAS,CACPnM,QAAS34E,EAAM24E,QACf9uC,MAAO7pC,EAAMkrF,eAEfrM,MAAO,CACLlG,QAAS34E,EAAM24E,QACfiG,KAAM5+E,EAAM4iF,aAEd+N,gBAAiB,CACft6C,OAAO,KAGV,CACDoQ,QAAS,IAAM,CAACyR,EAAMjvC,UAAUkhE,EAAU1sF,WAzBvB,QAAa,KAAW,KAAM,CAACuC,EAAMkrF,gBAAiB,QAAapG,GAAS,CAC/F,IAAO,iBACP,QAAW9kF,EAAM24E,QACjB,MAAS34E,EAAMkrF,eACd,MAAOlrF,EAAM4iF,cAAe,QAAa/D,GAAO,CACjD,IAAO,eACP,QAAW7+E,EAAM24E,QACjB,KAAQ34E,EAAM4iF,aACb,SAkBC,QAAa,MAAO,CACtB,MAAS,uBACR,SAAS,QAAa,MAAO,CAC9B,MAAS,uBACT,oBAAqB,IACpB,CAACtJ,IAAY,QAAa6W,GAAgB,CAC3C,IAAO,SACN,CACD1pC,QAAS,IAAM,CAACyR,EAAM6gB,QAAQ,CAC5BA,MAAO/4E,EAAM+4E,SACT/4E,EAAM+4E,SACV2X,IAAe,QAAaR,GAAmB,CACjD,IAAO,YACN,CACDzpC,QAAS,IAAM,CAACyR,EAAMq4B,WAAW,CAC/BA,SAAUvwF,EAAMuwF,YACZvwF,EAAMuwF,YACVr4B,EAAMzR,UAAU0jC,EAAU1sF,SAAUgmF,IAAa,QAAa,MAAO,CACvE,IAAO,SACP,MAAS,uBACR,CAAEvrB,EAAMlwC,QAQE,QAAa2sD,GAAmB,CAC3C,IAAO,kBACP,UAAayW,EACb,SAAY,CACVtG,QAAS,CACPnM,QAAS34E,EAAM24E,QACf9uC,MAAO7pC,EAAM+qF,cAEflM,MAAO,CACLlG,QAAS34E,EAAM24E,QACfiG,KAAM5+E,EAAM6iF,YAEd8N,gBAAiB,CACfxiC,KAAK,KAGR,CACD1H,QAAS,IAAM,CAACyR,EAAMlwC,SAASmiE,EAAU1sF,WAzBvB,QAAa,KAAW,KAAM,CAACuC,EAAM6iF,aAAc,QAAahE,GAAO,CACzF,IAAO,cACP,QAAW7+E,EAAM24E,QACjB,KAAQ34E,EAAM6iF,YACb,MAAO7iF,EAAM+qF,eAAgB,QAAajG,GAAS,CACpD,IAAO,gBACP,QAAW9kF,EAAM24E,QACjB,MAAS34E,EAAM+qF,cACd,SAkBC,QAAa,MAAO,CACtB,MAAS,uBACR,WACD,CAAC,EAAC,QAAkB,UAAWnP,EAAYn+E,OAASuC,EAAMijF,SAAS,IAElE,CACL6I,WACAkD,cACAG,mBACAtS,aACAznB,OACA4nB,SACAzpC,OACAl0C,GAAI+pE,EAER,ICxRWwnB,IAA0B,EAAAtwB,EAAA,GAAa,CAClD2J,MAAOh4D,OACP4+E,MAAOh5B,QACPx3B,OAAQw3B,QACRkhB,MAAO9mE,WACJ,YACA6+D,KACF,kBACUggB,IAAiB,UAAmB,CAC/ClzF,KAAM,iBACNoC,MAAO4wF,KACP,KAAA34B,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,iBACJ80E,EAAgB,gBAChBC,IACE,UAAa,QAAMj/E,EAAO,UAiB9B,OAhBA,EAAA4sE,EAAA,IAAU,KACR,MAAMqE,KAAa/Y,EAAMzR,UAAWzmD,EAAM+4E,OAC1C,OAAO,QAAa/4E,EAAMuN,IAAK,CAC7B,MAAS,CAAC,mBAAoB,CAC5B,0BAA2BvN,EAAM6wF,MACjC,2BAA4B7wF,EAAMqgC,QACjC2+C,EAAiBvhF,MAAOuC,EAAMy4D,OACjC,MAAS,CAAC,CACRwmB,mBACCj/E,EAAM2E,QACR,CACD8hD,QAAS,IAAM,CAACwqB,IAAW,QAAa,MAAO,CAC7C,MAAS,0BACR,CAAC/Y,EAAMzR,aAAezmD,EAAM+4E,UAC/B,IAEG,CAAC,CACV,ICjCWgY,IAAoB,EAAAzwB,EAAA,GAAa,CAC5C2J,MAAOh4D,OACP4+E,MAAOh5B,QACP33D,OAAQ,CAACmS,OAAQJ,QACjBu0B,QAAS,CAACn0B,OAAQJ,QAClB++E,UAAW,CAAC3+E,OAAQJ,QACpBg/E,SAAUp5B,YACP,aACA,WACF,YACUq5B,IAAW,UAAmB,CACzCtzF,KAAM,WACNoC,MAAO+wF,KACP,KAAA94B,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,iBACJg/E,EAAgB,gBAChBC,IACE,UAAa,QAAMj/E,EAAO,UACxBmxF,GAAgB,SAAS,KAC7B,MAAMvtC,EAAS,CAAC,EAOhB,OANI5jD,EAAME,SACR0jD,EAAO5jD,EAAMixF,SAAW,SAAW,UAAW,QAAcjxF,EAAME,SAEhEF,EAAMgxF,YACRptC,EAAO5jD,EAAMixF,SAAW,mBAAqB,mBAAoB,QAAcjxF,EAAMgxF,YAEhFptC,CAAM,IAyBf,OAvBA,EAAAgpB,EAAA,IAAU,KACR,MAAM3mC,GAAU,QAAa,KAAM,CACjC,MAAS,CAAC,CACR,aAAa,EACb,mBAAoBjmC,EAAM6wF,MAC1B,sBAAuB7wF,EAAMixF,UAC5B3lB,EAAa7tE,MAAOuhF,EAAiBvhF,MAAOuC,EAAMy4D,OACrD,MAAS,CAAC04B,EAAc1zF,MAAOwhF,EAAgBxhF,MAAO,CACpD,qBAAsBuC,EAAMwmC,SAC3BxmC,EAAM2E,OACT,mBAAqB+gD,EAAMhU,MAAuB,cAAfgU,EAAMhU,UAAoEroC,EAA7CrJ,EAAMixF,SAAW,WAAa,aAC9F,KAAQ,GAAGvrC,EAAMhU,MAAQ,eACxB,MACH,OAAKwmB,EAAMzR,SACJ,QAAa,MAAO,CACzB,MAAS,CAAC,qBAAsB,CAC9B,+BAAgCzmD,EAAMixF,SACtC,4BAA6BjxF,EAAM6wF,SAEpC,CAAC5qD,GAAS,QAAa,MAAO,CAC/B,MAAS,sBACR,CAACiyB,EAAMzR,YAAaxgB,IARIA,CAQK,IAE3B,CAAC,CACV,IC7DWmrD,IAAyB,EAAA9wB,EAAA,GAAa,CACjDwP,MAAOhuE,MACPuvF,aAAcx5B,SACb,iBACUy5B,IAAgB,UAAmB,CAC9C1zF,KAAM,gBACNoC,MAAOoxF,KACP,KAAAn5B,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAEJ,OADAuhF,KACO,IAAMvzB,EAAMzR,aAAezmD,EAAM8vE,OAAOvsE,KAAI8P,IACjD,IAAI,SACF5O,EACAzE,MAAOuxF,EAAS,KAChBpmE,EACA0U,IAAK5K,GACH5hB,EACJ,GAAa,YAAT8X,EACF,OAAO+sC,EAAMjyB,UAAU,CACrBjmC,MAAOuxF,MACH,QAAaL,GAAUK,EAAW,MAE1C,GAAa,cAATpmE,EACF,OAAO+sC,EAAMs5B,YAAY,CACvBxxF,MAAOuxF,MACH,QAAaT,GAAgBS,EAAW,MAEhD,MAAME,EAAgB,CACpBlB,SAAUr4B,EAAMq4B,SAAWpG,GAAajyB,EAAMq4B,WAAW,IACpDpG,EACHl1D,cACG5rB,EACL4f,QAASivC,EAAMjvC,QAAUkhE,GAAajyB,EAAMjvC,UAAU,IACjDkhE,EACHl1D,cACG5rB,EACL2e,OAAQkwC,EAAMlwC,OAASmiE,GAAajyB,EAAMlwC,SAAS,IAC9CmiE,EACHl1D,cACG5rB,EACL0vE,MAAO7gB,EAAM6gB,MAAQoR,GAAajyB,EAAM6gB,QAAQ,IAC3CoR,EACHl1D,cACG5rB,GAEDqoF,EAAiB9B,GAAWziB,YAAYokB,GAC9C,OAAO9sF,GAAW,QAAamrF,IAAY,QAAY,CACrD,MAAS2B,GAAW9zF,OACnBi0F,GAAiB,CAClB3rB,UAAWqmB,IACT,IACEpsF,MAAOgmE,GACLomB,EACJ,MAAMuF,EAAgB,IACjBJ,KACAvrB,EACHvoE,MAAOuC,EAAMqxF,aAAep8D,EAAOs8D,EAAU9zF,OAE/C,OAAOy6D,EAAM05B,OAAS15B,EAAM05B,OAAO,CACjC5xF,MAAO2xF,KACJ,QAAa3B,GAAW2B,EAAeF,EAAc,EAE5DhrC,QAAS,KAAM,QAAa6qC,GAAe,CACzC,MAAS7sF,EACT,aAAgBzE,EAAMqxF,cACrBn5B,KACAA,EAAMjjC,KAAOijC,EAAMjjC,KAAK,CAC3Bj1B,MAAOuxF,KACJ,QAAavB,IAAW,QAAYuB,EAAW,CAClD,MAASvxF,EAAMqxF,aAAep8D,EAAOs8D,EAAU9zF,QAC7Cg0F,EAAc,GAEtB,IC9EWI,IAAiB,EAAAvxB,EAAA,GAAa,CACzCwP,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBqrC,UAAW,CACT3mE,KAAM,CAAClZ,OAAQnQ,MAAO5D,UACtBuoD,QAAS,SAEXsrC,UAAW,CACT5mE,KAAM,CAAClZ,OAAQnQ,MAAO5D,UACtBuoD,QAAS,SAEXurC,aAAc,CACZ7mE,KAAM,CAAC0sC,QAAS5lD,OAAQnQ,MAAO5D,UAC/BuoD,QAAS,YAEX8qC,UAAW,CACTpmE,KAAM,CAAC0sC,QAAS5lD,OAAQnQ,MAAO5D,UAC/BuoD,QAAS,SAEX4qC,aAAcx5B,QACdytB,gBAAiB,CACfn6D,KAAMjtB,SACNuoD,QAAS,OAEV,cACI,SAASwrC,GAAcjyF,EAAOi1B,GACnC,MAAM8jD,GAAQ,QAAoB9jD,EAAMj1B,EAAM8xF,UAAW78D,GACnDx3B,GAAQ,QAAoBw3B,EAAMj1B,EAAM+xF,UAAWhZ,GACnDt0E,GAAW,QAAoBwwB,EAAMj1B,EAAMgyF,cAC3CT,GAAgC,IAApBvxF,EAAMuxF,UAAqC,kBAATt8D,GAA6B,MAARA,GAAiBnzB,MAAMC,QAAQkzB,QAA+D5rB,EAAvD,aAAc4rB,GAAO,QAAKA,EAAM,CAAC,aAAeA,GAAmB,QAAoBA,EAAMj1B,EAAMuxF,WAC7MrpB,EAAS,CACb6Q,QACAt7E,WACG8zF,GAEL,MAAO,CACLxY,MAAO9mE,OAAOi2D,EAAO6Q,OAAS,IAC9Bt7E,MAAOyqE,EAAOzqE,MACduC,MAAOkoE,EACPzjE,SAAU3C,MAAMC,QAAQ0C,GAAYytF,GAAelyF,EAAOyE,QAAY4E,EACtEw2B,IAAK5K,EAET,CACO,SAASi9D,GAAelyF,EAAO8vE,GACpC,MAAMrhC,EAAQ,GACd,IAAK,MAAMxZ,KAAQ66C,EACjBrhC,EAAMjsC,KAAKyvF,GAAcjyF,EAAOi1B,IAElC,OAAOwZ,CACT,CACO,SAAS0jD,GAASnyF,GACvB,MAAM8vE,GAAQ,SAAS,IAAMoiB,GAAelyF,EAAOA,EAAM8vE,SACnDsiB,GAAc,SAAS,IAAMtiB,EAAMryE,MAAMw7D,MAAKhkC,GAAuB,OAAfA,EAAKx3B,UACjE,SAAS40F,EAAY50F,GAMnB,OALK20F,EAAY30F,QAGfA,EAAQA,EAAM4E,QAAOuN,GAAW,OAANA,KAErBnS,EAAM8F,KAAIqM,GACX5P,EAAMqxF,cAA6B,kBAANzhF,EAGxBqiF,GAAcjyF,EAAO4P,GAEvBkgE,EAAMryE,MAAM2iB,MAAK6U,GAAQj1B,EAAMslF,gBAAgB11E,EAAGqlB,EAAKx3B,UAAWw0F,GAAcjyF,EAAO4P,IAElG,CACA,SAAS0iF,EAAa70F,GACpB,OAAOuC,EAAMqxF,aAAe5zF,EAAM8F,KAAI2G,IACpC,IAAI,IACF21B,GACE31B,EACJ,OAAO21B,CAAG,IACPpiC,EAAM8F,KAAI8P,IACb,IAAI,MACF5V,GACE4V,EACJ,OAAO5V,CAAK,GAEhB,CACA,MAAO,CACLqyE,QACAuiB,cACAC,eAEJ,CCtEA,SAASC,GAAY90F,GACnB,MAAwB,kBAAVA,GAAuC,kBAAVA,GAAuC,mBAAVA,CAC1E,CACA,SAAS,GAAcuC,EAAOi1B,GAC5B,MAAM9J,GAAO,QAAoB8J,EAAMj1B,EAAMwyF,SAAU,QACjDzZ,EAAQwZ,GAAYt9D,GAAQA,GAAO,QAAoBA,EAAMj1B,EAAM8xF,WACnEr0F,GAAQ,QAAoBw3B,EAAMj1B,EAAM+xF,eAAW1oF,GACnD5E,GAAW,QAAoBwwB,EAAMj1B,EAAMgyF,cAC3CT,GAAgC,IAApBvxF,EAAMuxF,WAAqB,QAAKt8D,EAAM,CAAC,cAAe,QAAoBA,EAAMj1B,EAAMuxF,WAClGrpB,EAAS,CACb6Q,QACAt7E,WACG8zF,GAEL,MAAO,CACLpmE,OACA4tD,MAAO7Q,EAAO6Q,MACdt7E,MAAOyqE,EAAOzqE,MACduC,MAAOkoE,EACPzjE,SAAmB,SAAT0mB,GAAmB1mB,EAAW,GAAezE,EAAOyE,QAAY4E,EAC1Ew2B,IAAK5K,EAET,CACA,SAAS,GAAej1B,EAAO8vE,GAC7B,MAAMrhC,EAAQ,GACd,IAAK,MAAMxZ,KAAQ66C,EACjBrhC,EAAMjsC,KAAK,GAAcxC,EAAOi1B,IAElC,OAAOwZ,CACT,CACO,SAASgkD,GAAazyF,GAC3B,MAAM8vE,GAAQ,SAAS,IAAM,GAAe9vE,EAAOA,EAAM8vE,SACzD,MAAO,CACLA,QAEJ,CACO,MAAM4iB,IAAiB,EAAApyB,EAAA,GAAa,CACzC6b,UAAWlqE,OAEXywE,YAAazwE,OACb6lD,YAAa7lD,OACb0tE,QAAS1tE,OACT+uB,SAAU62B,QACV43B,WAAYx9E,OACZu9E,aAAcv9E,OACdo+E,MAAO,CACLllE,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,QAAS,OAEXs8B,KAAMlrB,QACNy4B,IAAKz4B,QACL,gBAAgB,UAChB,kBAAkB,UAClB,mBAAmB,aAChBo2B,GAAgB,CACjBE,eAAgB,cAChBC,aAAc,YAEbpW,SACA,YACAuD,SACA,aACAnD,KACHoa,SAAU,CACRrnE,KAAMlZ,OACNw0C,QAAS,WAERorC,QACAzc,QACAtE,QACA,aACA+K,GAAiB,CAClBxC,QAAS,UAEV,SACUsZ,IAAQ,UAAmB,CACtC/0F,KAAM,QACNoC,MAAO0yF,KACPznB,MAAO,CACL,kBAAmBxtE,IAAS,EAC5B,mBAAoBA,IAAS,EAC7B,gBAAiBA,IAAS,EAC1B,aAAcA,IAAS,EACvB,iBAAkBA,IAAS,EAC3B,eAAgBA,IAAS,GAE3B,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,MACJ4lE,GACE2iB,GAAazyF,IACX,aACJsrE,IACE,QAAatrE,IACX,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,aAC9B,cACJm4E,GACED,GAAUl4E,IACR,eACJy7E,GACED,GAAWx7E,IACT,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,IACT,SACJyE,EAAQ,KACR+nF,EAAI,QACJt9E,EAAO,OACP8tE,EAAM,QACNgR,GACEK,GAAUruF,GACRywF,GAAc,SAAS,IAAMzwF,EAAMqwF,MAAQ,WAAWrwF,EAAMqwF,kBAAehnF,IAC3Eq5E,GAAc,QAAM1iF,EAAO,eAC3Bm8E,GAAY,QAAMn8E,EAAO,aACzBiqE,GAAQ,QAAMjqE,EAAO,SAC3ByrF,MACA,SAAgB,CACdmE,WAAY,CACVlN,cACAvG,YACAlS,QACAwlB,YAAY,QAAMzvF,EAAO,cACzBwvF,cAAc,QAAMxvF,EAAO,iBAE7BgwF,UAAW,CACTl4B,aAAa,QAAM93D,EAAO,eAC1B0iF,cACAvG,YACAlS,QACA0O,SAAS,QAAM34E,EAAO,WACtBghC,UAAU,QAAMhhC,EAAO,YACvBqwF,OAAO,QAAMrwF,EAAO,SACpBswF,KAAK,QAAMtwF,EAAO,OAClB+iF,MAAM,QAAM/iF,EAAO,QACnBq5E,SAAS,QAAMr5E,EAAO,cAG1B,MAAM2mE,GAAY,SAAW,GACvBsiB,GAAa,UACnB,SAAS1hB,EAAUxkE,GACjB4jE,EAAUlpE,OAAQ,CACpB,CACA,SAAS+pE,EAAWzkE,GAClB4jE,EAAUlpE,OAAQ,CACpB,CACA,SAAS0pE,EAAQpkE,GACV4jE,EAAUlpE,OAAWsF,EAAE4mF,eAAiBV,EAAWxrF,OAAOuP,SAASjK,EAAE4mF,gBAAiBpd,GAC7F,CACA,SAASD,EAAUvpE,GACjB,MAAMhD,EAASgD,EAAEhD,OACjB,GAAKkpF,EAAWxrF,QAAS,CAAC,QAAS,YAAYwP,SAASlN,EAAOohC,SAA/D,CACA,GAAc,cAAVp+B,EAAEvC,IACJ+rE,EAAM,aACD,GAAc,YAAVxpE,EAAEvC,IACX+rE,EAAM,aACD,GAAc,SAAVxpE,EAAEvC,IACX+rE,EAAM,aACD,IAAc,QAAVxpE,EAAEvC,IAGX,OAFA+rE,EAAM,OAGR,CACAxpE,EAAEioB,gBAZ6E,CAajF,CACA,SAAS4nE,EAAY7vF,GACnB4jE,EAAUlpE,OAAQ,CACpB,CACA,SAAS8uE,EAAMvnE,GACb,GAAIikF,EAAWxrF,MACb,OAAO,QAAWwrF,EAAWxrF,MAAOuH,EAExC,CAyBA,OAxBA,EAAA4nE,EAAA,IAAU,KACD,QAAa5sE,EAAMuN,IAAK,CAC7B,IAAO07E,EACP,MAAS,CAAC,SAAU,CAClB,mBAAoBjpF,EAAMghC,SAC1B,cAAehhC,EAAMswF,IACrB,eAAgBtwF,EAAM+iF,MACrBzX,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO06E,EAAc16E,MAAOg+E,EAAeh+E,MAAO86E,EAAiB96E,MAAOgzF,EAAYhzF,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACvK,MAAS,CAAC2R,EAAsB3sE,MAAOquE,EAAgBruE,MAAOuC,EAAM2E,OACpE,SAAY3E,EAAMghC,UAAY2lC,EAAUlpE,OAAS,EAAI,EACrD,KAAQ,UACR,6BAAyB4L,EACzB,UAAak+D,EACb,WAAcC,EACd,QAAWL,EACX,UAAamF,EACb,YAAesmB,GACd,CACDnsC,QAAS,IAAM,EAAC,QAAa6qC,GAAe,CAC1C,MAASxhB,EAAMryE,MACf,aAAgBuC,EAAMqxF,cACrBn5B,QAGA,CACLs0B,OACAxP,SACAzQ,QACA9nE,WACAyK,UACA8+E,UAEJ,I,gDC7NK,MAAM6E,IAAiB,EAAAvyB,EAAA,GAAa,CAGzCjhE,GAAI4S,OACJ6gF,QAASj7B,YACN,SAAK,QAAkB,CACxBk7B,WAAY,IACZ3sB,qBAAqB,EACrB7F,iBAAkB,YAClBv7D,cAAUqE,EACV2pF,UAAW,IACXpoB,OAAO,EACPlG,eAAgB,aAChB7/C,WAAY,CACVwhC,UAAWmsB,KAEX,CAAC,cACJ,SACUygB,IAAQ,UAAmB,CACtCr1F,KAAM,QACNoC,MAAO6yF,KACP5nB,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM+oC,GAAW,QAAgBjzC,EAAO,eAClC,QACJgsE,IACE,WACE,MACJnL,IACE,UACEuI,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,UAAU+pE,MAC1C6D,GAAU,UACVngE,GAAS,QAAO,KAAa,MAC7BomF,GAAe,QAAW,IAAI3/B,KAsBpCsR,eAAesuB,EAAUpwF,GACvB,MAAM+/D,EAAS//D,EAAE4mF,cACX5mB,EAAQhgE,EAAEhD,OAEhB,SADM,UACFkzC,EAASx1C,OAASqlE,IAAWC,GAASkK,EAAQxvE,OAAOikE,WAEzDuL,EAAQxvE,OAAO6rE,YAEd,CAACnrE,SAAU8uE,EAAQxvE,MAAMikE,WAAWz0D,SAAS81D,KAE7CkK,EAAQxvE,MAAMikE,UAAU10D,SAAS+1D,GAAQ,CACxC,MAAMinB,GAAY,QAAkB/c,EAAQxvE,MAAMikE,WAClDsoB,EAAU,IAAIzd,OAChB,CACF,CAkBA,SAASN,EAAelpE,GACtB+J,GAAQ46D,aAAa3kE,EACvB,CACA,SAASupE,EAAUvpE,GACjB,IAAI/C,EAAMghC,SACV,GAAc,QAAVj+B,EAAEvC,KAA2B,UAAVuC,EAAEvC,MAAoBR,EAAMomE,oBAAqB,CACtE,GAAc,UAAVrjE,EAAEvC,MAAoBuC,EAAEhD,kBAAkBqzF,qBAAuBrwF,EAAEhD,kBAAkBszF,kBAAsBtwF,EAAEhD,OAAO8gB,QAAQ,SAAU,OAC5H,UAAV9d,EAAEvC,KAAiBuC,EAAEioB,iBACzB,MAAMsoE,GAAc,SAAe,QAAkBrmB,EAAQxvE,OAAOikE,WAAW,GAAQ3+D,EAAE25B,SAAW,OAAS,QAAQh1B,GAAMA,EAAG6rF,UAAY,IACrID,IACHrgD,EAASx1C,OAAQ,EACjBwvE,EAAQxvE,OAAOgpE,aAAa8F,QAEhC,MAAWvsE,EAAM8yF,SAAW/vF,EAAEvC,OAASqgE,EAAMpjE,MAAQ,aAAe,eAClEw1C,EAASx1C,OAAQ,EACjBwvE,EAAQxvE,OAAOgpE,aAAa8F,QAEhC,CACA,SAASinB,EAAmBzwF,GAC1B,GAAI/C,EAAMghC,SAAU,OACpB,MAAMt5B,EAAKulE,EAAQxvE,OAAOikE,UACtBh6D,GAAMurC,EAASx1C,MACH,cAAVsF,EAAEvC,KACJuC,EAAEioB,iBACFjoB,EAAE+uB,4BACF,QAAWpqB,EAAI,SACI,YAAV3E,EAAEvC,KACXuC,EAAEioB,iBACFjoB,EAAE+uB,4BACF,QAAWpqB,EAAI,SACN1H,EAAM8yF,UACX/vF,EAAEvC,OAASqgE,EAAMpjE,MAAQ,aAAe,aAC1Cw1C,EAASx1C,OAAQ,EACRsF,EAAEvC,OAASqgE,EAAMpjE,MAAQ,YAAc,gBAChDsF,EAAEioB,kBACF,QAAWtjB,EAAI,YAGV1H,EAAM8yF,QAAU/vF,EAAEvC,OAASqgE,EAAMpjE,MAAQ,YAAc,cAAgB,CAAC,YAAa,WAAWwP,SAASlK,EAAEvC,QACpHyyC,EAASx1C,OAAQ,EACjBsF,EAAEioB,iBACFvkB,YAAW,IAAMA,YAAW,IAAM+sF,EAAmBzwF,OAEzD,EAhGA,QAAQ,KAAa,CACnB,QAAAgjD,GACEmtC,EAAaz1F,MAAMgQ,IAAI27D,EACzB,EACA,UAAAqF,GACEykB,EAAaz1F,MAAM+tD,OAAO4d,EAC5B,EACA,YAAA1B,CAAa3kE,GACX0D,YAAW,KACJysF,EAAaz1F,MAAM8R,MAASvP,EAAM2qE,YAAoB,MAAL5nE,KAAakqE,EAAQxvE,OAAOikE,YAAc,QAAqB3+D,EAAGkqE,EAAQxvE,MAAMikE,cACpIzuB,EAASx1C,OAAQ,EACjBqP,GAAQ46D,eACV,GACC,GACL,KAEF,SAAgB,KACd56D,GAAQ2hE,aACRtwE,SAAS4F,oBAAoB,UAAWovF,EAAU,KAEpD,SAAc,IAAMlgD,EAASx1C,OAAQ,KAgBrC,QAAMw1C,GAAUvsB,IACVA,GACF5Z,GAAQi5C,WACJ,MACF5nD,SAAS2F,iBAAiB,UAAWqvF,EAAW,CAC9Cx9E,MAAM,MAIV7I,GAAQ2hE,aACJ,MACFtwE,SAAS4F,oBAAoB,UAAWovF,GAE5C,GACC,CACDzvB,WAAW,IA8Cb,MAAMsC,GAAiB,SAAS,KAAM,QAAW,CAC/C,gBAAiB,OACjB,gBAAiB/zD,OAAOghC,EAASx1C,OACjC,YAAa4B,EAAG5B,MAChB6uE,UAAWknB,GACVxzF,EAAMgmE,kBA8BT,OA7BA,EAAA4G,EAAA,IAAU,KACR,MAAMM,EAAerC,GAAA,EAASsC,YAAYntE,GAC1C,OAAO,QAAa6qE,GAAA,GAAU,QAAY,CACxC,IAAOoC,EACP,GAAM5tE,EAAG5B,MACT,MAAS,CAAC,SAAUuC,EAAMy4D,OAC1B,MAASz4D,EAAM2E,OACduoE,EAAc,CACf,WAAcj6B,EAASx1C,MACvB,sBAAuB2vE,GAAUn6B,EAASx1C,MAAQ2vE,EAClD,UAAY,EACZ,eAAkBpH,EAAevoE,MACjC,SAAYuC,EAAMgF,WAAahF,EAAM8yF,QAAU,MAAQ,UACvD,kBAAmB7mB,EACnB,UAAaK,GACZN,GAAU,CACXjG,UAAW7N,EAAM6N,UACjBtf,QAAS,WACP,IAAK,IAAI3wC,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzB,OAAO,QAAa2+D,GAAmB,CACrC,KAAQ,SACP,CACDluB,QAAS,IAAM,CAACyR,EAAMzR,aAAa1wC,KAEvC,GACA,KAEG,EAAAs3D,GAAA,GAAY,CACjBhuE,KACA,gBAAe6zF,GACdjmB,EACL,ICtLWwmB,IAAoB,EAAAnzB,EAAA,GAAa,CAC5CwE,OAAQjN,QACR72B,SAAU62B,QACVtsD,IAAK,CAAC8G,OAAQJ,QACdxU,MAAO,CACL0tB,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,OAER,aACA,QAAoB,CACrB5hC,WAAY,CACVwhC,UAAWguB,MAGd,YACUqf,IAAW,UAAmB,CACzC91F,KAAM,WACN+1F,YAAY,EACZ3zF,MAAOyzF,KACP,KAAAx7B,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM0pF,GAAU,SAAS,IAChB5zF,EAAMuL,IAAM,GAAGvL,EAAMvC,WAAWuC,EAAMuL,MAAQ0G,OAAOjS,EAAMvC,SAgBpE,OAdA,EAAAmvE,EAAA,IAAU,KAAM,QAAa,KAAiB,CAC5C,WAAc5sE,EAAM6kB,YACnB,CACD4hC,QAAS,IAAM,EAAC,SAAgB,QAAa,MAAO,CAClD,MAAS,CAAC,YAAa,CACrB,aAAczmD,EAAMuL,MAAQvL,EAAMghC,UAAYn4B,WAAW7I,EAAMvC,OAASoL,WAAW7I,EAAMuL,MACxFvL,EAAMy4D,OACT,MAASz4D,EAAM2E,OACd,CAACuzD,EAAMzR,QAAUyR,EAAMzR,QAAQ,CAChCmtC,QAASA,EAAQn2F,MACjB8N,IAAKvL,EAAMuL,IACX9N,MAAOuC,EAAMvC,QACVm2F,EAAQn2F,QAAS,CAAC,CAAC,KAAQuC,EAAM8kE,eAEjC,CAAC,CACV,IC9CW+uB,IAAuB,EAAAvzB,EAAA,GAAa,CAC/CwY,SAAUjhB,YACP,UACF,eACUi8B,IAAc,UAAmB,CAC5Cl2F,KAAM,cACNoC,MAAO6zF,KACP,KAAA57B,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAQJ,OAPA,EAAA0iE,EAAA,IAAU,KAAM,QAAaoY,GAAQ,CACnC,MAAS,CAAC,gBAAiB,CACzB,0BAA2BhlF,EAAM84E,UAChC94E,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,cAAe3E,EAAM84E,eAAYzvE,GAChC6uD,KACI,CAAC,CACV,ICpBK,SAAS67B,GAAa/zF,GAC3B,MAAM,EACJ8C,IACE,UACJ,SAASkxF,EAAU9pF,GACjB,IAAI,KACFtM,GACEsM,EACJ,MAAM+pF,EAAY,CAChBhrE,QAAS,gBACTirE,aAAc,gBACdlsE,OAAQ,eACRmsE,YAAa,eACbnhC,MAAO,SACPp1D,GACIwuD,EAAWpsD,EAAM,WAAWpC,KAC5B0Z,EAAQ80C,GAAY6nC,EAAYnxF,EAAE,kBAAkBmxF,IAAaj0F,EAAMsX,OAAS,SAAMjO,EAC5F,OAAO,QAAaw1E,GAAO,CACzB,KAAQ7+E,EAAM,GAAGpC,SACjB,aAAc0Z,EACd,QAAW80C,GACV,KACL,CACA,MAAO,CACL4nC,YAEJ,CCzBO,MAAMI,IAAiB,EAAA9zB,EAAA,GAAa,CACzC+zB,QAASx8B,QACT,oBAAoB,WACnB,SACI,SAASy8B,GAASt0F,GACvB,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC/E,MAAMG,GAAY,QAAgB3mE,EAAO,WACnCu0F,GAAe,SAAS,KACrB,CACL,CAAC,GAAG32F,cAAkB+oE,EAAUlpE,UAGpC,SAAS8uE,IACP5F,EAAUlpE,OAAQ,CACpB,CACA,SAASwG,IACP0iE,EAAUlpE,OAAQ,CACpB,CACA,MAAO,CACL82F,eACA5tB,YACA4F,QACAtoE,OAEJ,CCVA,MAAM,GAAkB,CAAC,aAAc,WAAY,SAAU,OAAQ,gBAAiB,cAAe,SACxFuwF,IAAkB,EAAAl0B,EAAA,GAAa,CAC1Cm0B,gBAAiB,MACjB9U,QAAS1tE,OACTyiF,UAAW78B,QACX88B,UAAW,CACTxpE,KAAM,MACNs7B,QAAS,UAEXqe,OAAQjN,QACR+8B,YAAa,CACXzpE,KAAM0sC,QACNpR,aAASp9C,GAEX4gE,MAAOh4D,OACPkqE,UAAWlqE,OACX4iF,MAAOh9B,QACP72B,SAAU,CACR7V,KAAM0sC,QACNpR,QAAS,MAEXwG,MAAO4K,QACPnzB,KAAMmzB,QACNvgD,MAAOrF,OACP6iF,gBAAiBj9B,QACjBk9B,iBAAkB,MAClBt3B,QAAS5F,QACTm9B,WAAYn9B,QACZwhB,QAAS,CACPluD,KAAMlZ,OACNw0C,QAAS,SACT+Z,UAAW5wD,GAAK,GAAgB3C,SAAS2C,IAE3C,iBAAiB,UACjB,uBAAuB,UACvB,wBAAwB,cACrB,YACAkyE,QACA1M,SACA,WACF,UACU6f,IAAS,UAAmB,CACvCr3F,KAAM,SACN07D,cAAc,EACdt5D,MAAO,CACLX,GAAI4S,UACDmiF,QACAI,MAELvpB,MAAO,CACL,iBAAkBopB,IAAW,EAC7B,oBAAqB52F,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,cACJiiF,GACED,GAAUhiF,IACR,aACJu0F,EAAY,UACZ5tB,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,IACP,UACJg0F,GACED,GAAa/zF,IACX,eACJw1E,GACED,GAAWv1E,IACT,WACJurE,IACE,UACEt4B,GAAW,SAAS,IAAMjzC,EAAM60F,OAAS70F,EAAM8kE,SAC/CowB,GAAW,SAAS,KAAOl1F,EAAMg1F,eAAiBh1F,EAAMsX,QAAS4gD,EAAM5gD,SACvE8xD,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,SAAS+pE,MACzC+rB,GAAa,SAAS,IAAM,GAAG91F,EAAG5B,mBAClC23F,GAAW,UACXC,GAAmB,UACnBC,GAAa,UACbC,GAAsB,SAAS,IAAM,CAAC,QAAS,cAActoF,SAASjN,EAAMq5E,YAC5E,uBACJlP,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,aAC9B,iBACJg/E,EAAgB,gBAChBC,IACE,UAAa,SAAS,IACjBj/E,EAAMitD,OAASjtD,EAAMghC,cAAW33B,EAAY4pC,EAASx1C,OAASkpE,EAAUlpE,MAAQuC,EAAMiqE,MAAQjqE,EAAMm8E,cAE7G,QAAMlpC,GAAUvsB,IACd,GAAIwuE,EAASz3F,MAAO,CAClB,MAAMiK,EAAK0tF,EAAS33F,MAAM+qE,IACpB78C,EAAW0pE,EAAiB53F,MAAM+qE,IACxC5hE,uBAAsB,KACpB,MAAMo7D,GAAO,OAAkBt6D,GACzB8tF,EAAa7pE,EAAS/d,wBACtB2V,EAAIiyE,EAAWjyE,EAAIy+C,EAAKz+C,EACxBC,EAAIgyE,EAAWhyE,EAAIw+C,EAAKx+C,GAAKw+C,EAAK9wD,OAAS,EAAIskF,EAAWtkF,OAAS,GACnEukF,EAAcD,EAAWxkF,MAAQ,IACjCA,EAAQ1F,KAAKuE,IAAI4lF,EAAczzB,EAAKhxD,OAAS,EAAI,CACrDuwD,UAAU,QAAck0B,SACtBpsF,EACE1E,EAAQ0B,iBAAiBqB,GACzBguF,EAAcrvF,iBAAiBslB,GAC/BjhB,EAAkD,IAAvC7B,WAAWlE,EAAM2f,qBAA8B,IAC1DghB,EAAQz8B,WAAW6sF,EAAYpvF,iBAAiB,0BAChD2jE,EAAQyrB,EAAYpvF,iBAAiB,SAC3CoB,EAAG/C,MAAM+tE,WAAa,UACtB/mD,EAAShnB,MAAM+tE,WAAa,UAC5B,OAAQhrE,EAAI,CACVS,UAAW,aAAaob,QAAQC,cAAc8hB,KAC9C2kC,WACGj5D,GACF,CACDtG,WACA8hE,OAAQ,KACR/nD,UAAWiC,EAAM,SAAW,YAC3BssD,SAASld,MAAK,KACfpuD,EAAG/C,MAAMygE,eAAe,cACxBz5C,EAAShnB,MAAMygE,eAAe,aAAa,GAC3C,GAEN,IACC,CACDnL,MAAO,SAET,MAAMkwB,GAAY,SAAS,KAAM,CAC/Bl3C,WACA0zB,YACA2uB,aACArxF,OACAsoE,YAEF,SAAS56C,EAAQ5uB,GACXA,EAAEhD,SAAW5B,SAAS6F,eACxBjB,EAAEioB,gBAEN,CACA,SAAS2qE,EAAe5yF,GACR,UAAVA,EAAEvC,KAA6B,MAAVuC,EAAEvC,MAC3BuC,EAAEioB,iBACFjoB,EAAE0rB,kBACFzuB,EAAM,mBAAmB,IAAIosE,WAAW,UAC1C,CAoIA,OAnIA,EAAAQ,EAAA,IAAU,KACR,MAAMgpB,EAA+B,aAAlB51F,EAAMq5E,QACnBmK,KAAgBtrB,EAAM,mBAAoBl4D,EAAM+0F,kBAChDc,KAAc71F,EAAM00F,YAAax8B,EAAMlF,OACvCywB,KAAevrB,EAAM,iBAAmBl4D,EAAMy0F,iBAAmBoB,GACjEv+E,EAAQ,IAAM4gD,EAAM5gD,MAAQ4gD,EAAM5gD,MAAM,IACzC6yE,EAAU1sF,MACb6Z,MAAOtX,EAAMsX,MACbtX,MAAO,CACLw/D,IAAKngE,EAAG5B,SAEPuC,EAAMsX,MACX,OAAO,QAAa,OAAO,QAAY,CACrC,MAAS,CAAC,UAAW,CACnB,kBAAmB27B,EAASx1C,MAC5B,oBAAqBgmF,EACrB,wBAAyBzjF,EAAM40F,cAAgBW,EAAoB93F,MACnE,oBAAqBuC,EAAMghC,SAC3B,iBAAkBhhC,EAAM60F,MACxB,iBAAkB70F,EAAMitD,MACxB,gBAAiBjtD,EAAM0kC,KACvB,4BAA6B1kC,EAAM2/E,QACnC,4BAA6B3/E,EAAM80F,gBACnC,qBAAsBtR,EACtB,mBAAoBxjF,EAAMy9D,QAC1B,uBAAwBz9D,EAAMg1F,WAC9B,qBAAsB19E,IACtB,CAAC,oBAAoBtX,EAAMq5E,YAAY,GACtC/N,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO82F,EAAa92F,MAAOwkF,EAAcxkF,MAAO+3E,EAAe/3E,MAAO8tE,EAAW9tE,MAAOuC,EAAMy4D,OAC5I,MAAS,CAAC2R,EAAsB3sE,MAAOuC,EAAM2E,OAC7C,QAAWgtB,GACV+zB,GAAQ,EAAC,QAAa,MAAO,CAC9B,MAAS,oBACR,OAAO,QAAaw8B,GAAY,CACjC,KAAQ,UACR,SAAYliF,EAAM+hF,QAClB,MAAS/hF,EAAMitD,MAAQ,QAAmC,kBAAlBjtD,EAAM+hF,QAAuB/hF,EAAM+hF,QAAU/hF,EAAMiqE,OAC1F,CACDxjB,QAASyR,EAAM0rB,SACbJ,IAAc,QAAa,MAAO,CACpC,IAAO,UACP,MAAS,0BACR,CAACxjF,EAAM+0F,mBAAoB,QAAaf,EAAW,CACpD,IAAO,eACP,KAAQ,gBACP,MAAO97B,EAAM,mBAAmBiyB,EAAU1sF,UAAU,QAAa,MAAO,CACzE,MAAS,iBACT,oBAAqB,IACpB,CAAC,CAAC,SAAU,OAAQ,gBAAiB,eAAewP,SAASjN,EAAMq5E,UAAY6b,EAASz3F,QAAS,QAAaq2F,GAAa,CAC5H,IAAO,iBACP,IAAOuB,EACP,MAAS,CAACrW,EAAiBvhF,OAC3B,UAAY,EACZ,IAAO4B,EAAG5B,MACV,MAASwhF,EAAgBxhF,OACxB,CACDgpD,QAAS,IAAM,CAACnvC,QACd,QAAaw8E,GAAa,CAC5B,IAAOsB,EACP,IAAO/1F,EAAG5B,OACT,CACDgpD,QAAS,IAAM,CAACnvC,OACd4gD,EAAMzR,UAAU,IACf0jC,EAAU1sF,MACbuC,MAAO,CACLX,GAAIA,EAAG5B,MACPg7D,MAAO,iBACP,mBAAoB08B,EAAW13F,OAEjC8uE,QACAtoE,WACI4xF,IAAY,QAAarhB,EAAoB,CACjD,IAAO,SACN,CACD/tB,QAAS,IAAM,EAAC,SAAgB,QAAa,MAAO,CAClD,MAAS,qBACT,YAAe1jD,IACbA,EAAEioB,iBACFjoB,EAAE0rB,iBAAiB,GAEpB,EAAC,QAAakmD,GAAmB,CAClC,SAAY,CACVkK,MAAO,CACLD,KAAM5+E,EAAM20F,aAGf,CACDluC,QAAS,IAAM,CAACyR,EAAMlF,MAAQkF,EAAMlF,MAAM,IACrCm3B,EAAU1sF,MACbuC,MAAO,CACLssE,UAAWqpB,EACXxuB,QAASoF,EACTnF,OAAQnjE,EACR0tB,QAAS3xB,EAAM,qBAEd,QAAag0F,EAAW,CAC3B,KAAQ,QACR,UAAa2B,EACb,QAAWppB,EACX,OAAUtoE,GACT,WACC,CAAC,CAAC,KAAQjE,EAAM60F,YACpBpR,IAAa,QAAa,MAAO,CACnC,IAAO,SACP,MAAS,yBACR,CAACvrB,EAAM,kBAAkBiyB,EAAU1sF,OAAQuC,EAAMy0F,kBAAmB,QAAaT,EAAW,CAC7F,IAAO,cACP,KAAQ,eACP,SAAS,QAAa,MAAO,CAC9B,MAAS,CAAC,mBAAoBhV,EAAiBvhF,OAC/C,MAASwhF,EAAgBxhF,OACxB,CAACm4F,IAAc,QAAa,KAAW,KAAM,EAAC,QAAa,MAAO,CACnE,MAAS,2BACR,MAAOV,EAASz3F,QAAS,QAAa,MAAO,CAC9C,MAAS,2BACR,EAAC,QAAaq2F,GAAa,CAC5B,IAAOuB,EACP,UAAY,EACZ,IAAOh2F,EAAG5B,OACT,CACDgpD,QAAS,IAAM,CAACnvC,UACZ,QAAa,MAAO,CACxB,MAAS,yBACR,QAASi+E,EAAoB93F,OAASy3F,EAASz3F,QAAS,QAAaq2F,GAAa,CACnF,IAAOuB,EACP,UAAY,EACZ,IAAOh2F,EAAG5B,OACT,CACDgpD,QAAS,IAAM,CAACnvC,UACZ,IAED,CACLg+E,aAEJ,IAGK,SAASQ,GAAiBpwC,GAC/B,MAAMvjD,EAAO1D,OAAO0D,KAAK8yF,GAAOj1F,OAAOqC,QAAOswD,KAAM,QAAKA,IAAY,UAANA,GAAuB,UAANA,IAChF,OAAO,QAAKjN,EAAOvjD,EACrB,CC9SO,MAAM4zF,IAAqB,EAAAz1B,EAAA,GAAa,CAC7CwE,OAAQjN,QACRoS,MAAOh4D,OACP+jF,SAAU,CACR7qE,KAAM,CAACrpB,MAAOmQ,QACdw0C,QAAS,IAAM,QAEd,aACA,QAAoB,CACrB5hC,WAAY,CACVwhC,UAAWguB,EACXhD,eAAe,EACfF,OAAO,MAGV,aACU8kB,IAAY,UAAmB,CAC1Cr4F,KAAM,YACNoC,MAAO+1F,KACP,KAAA99B,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM8rF,GAAW,SAAS,KAAM,QAAYh2F,EAAMg2F,aAC5C,iBACJhX,EAAgB,gBAChBC,IACE,UAAa,SAAS,IAAMj/E,EAAMiqE,SAgBtC,OAfA,EAAA2C,EAAA,IAAU,KAAM,QAAa,KAAiB,CAC5C,WAAc5sE,EAAM6kB,WACpB,IAAO,MACP,MAAS,CAAC,aAAcm6D,EAAiBvhF,MAAOuC,EAAMy4D,OACtD,MAAS,CAACwmB,EAAgBxhF,MAAOuC,EAAM2E,OACvC,KAAQ,QACR,YAAa,UACZ,CACD8hD,QAAS,IAAM,CAACzmD,EAAM8kE,QAAUkxB,EAASv4F,MAAM8F,KAAI,CAACytC,EAAS/wC,KAAM,QAAa,MAAO,CACrF,MAAS,sBACT,IAAO,GAAGA,KAAK+1F,EAASv4F,SACvB,CAACy6D,EAAMlnB,QAAUknB,EAAMlnB,QAAQ,CAChCA,YACGA,WAEA,CAAC,CACV,ICnDWklD,GAAU70F,OAAOm+D,IAAI,gBACrB22B,IAAgB,EAAA71B,EAAA,GAAa,CACxCt/B,SAAU62B,QACVu+B,SAAUv+B,QACVirB,SAAUjrB,QACVmS,WAAY,CACV7+C,KAAM0sC,QACNpR,QAAS,MAEX4vC,WAAY,CACVlrE,KAAMlZ,OACNw0C,QAAS,UAEV,QACI,SAAS6vC,GAAWt2F,GACzB,MAAMqrE,GAAQ,QAAgBrrE,EAAO,cAC/BojF,GAAa,SAAS,IAAMpjF,EAAMghC,WAClCu1D,GAAa,SAAS,IAAMv2F,EAAM8iF,WAClC0T,GAAe,SAAW,GAC1B1mB,GAAQ,QAAI,IACZ2mB,GAAS,QAAI,IACnB5xB,eAAe6xB,IACb,MAAMC,EAAU,GAChB,IAAIhhC,GAAQ,EACZ8gC,EAAOh5F,MAAQ,GACf+4F,EAAa/4F,OAAQ,EACrB,IAAK,MAAMw3B,KAAQ66C,EAAMryE,MAAO,CAC9B,MAAMm5F,QAA0B3hE,EAAKyhE,WAQrC,GAPIE,EAAkB12F,OAAS,IAC7By1D,GAAQ,EACRghC,EAAQn0F,KAAK,CACXnD,GAAI41B,EAAK51B,GACTw3F,cAAeD,MAGdjhC,GAAS31D,EAAMo2F,SAAU,KAChC,CAGA,OAFAK,EAAOh5F,MAAQk5F,EACfH,EAAa/4F,OAAQ,EACd,CACLk4D,QACA8gC,OAAQA,EAAOh5F,MAEnB,CACA,SAAS84C,IACPu5B,EAAMryE,MAAMkG,SAAQsxB,GAAQA,EAAKshB,SACnC,CACA,SAASugD,IACPhnB,EAAMryE,MAAMkG,SAAQsxB,GAAQA,EAAK6hE,mBACnC,CA4DA,OA3DA,QAAMhnB,GAAO,KACX,IAAIna,EAAQ,EACRohC,EAAU,EACd,MAAMJ,EAAU,GAChB,IAAK,MAAM1hE,KAAQ66C,EAAMryE,OACF,IAAjBw3B,EAAK+hE,SACPD,IACAJ,EAAQn0F,KAAK,CACXnD,GAAI41B,EAAK51B,GACTw3F,cAAe5hE,EAAK4hE,kBAEI,IAAjB5hE,EAAK+hE,SAAkBrhC,IAEpC8gC,EAAOh5F,MAAQk5F,EACftrB,EAAM5tE,QAAQs5F,EAAU,KAAYphC,IAAUma,EAAMryE,MAAMyC,QAAgB,KAAI,GAC7E,CACD+2F,MAAM,EACNh9B,MAAO,UAET,QAAQi8B,GAAS,CACfnwC,SAAU77C,IACR,IAAI,GACF7K,EAAE,GACFknE,EAAE,SACFmwB,EAAQ,MACRngD,EAAK,gBACLugD,GACE5sF,EACA4lE,EAAMryE,MAAMw7D,MAAKhkC,GAAQA,EAAK51B,KAAOA,MACvC,SAAY,yBAAyBA,MAEvCywE,EAAMryE,MAAM+E,KAAK,CACfnD,KACAq3F,WACAngD,QACAugD,kBACAvwB,IAAI,QAAQA,GACZywB,QAAS,KACTH,cAAe,IACf,EAEJpoB,WAAYpvE,IACVywE,EAAMryE,MAAQqyE,EAAMryE,MAAM4E,QAAO4yB,GACxBA,EAAK51B,KAAOA,GACnB,EAEJ4jB,OAAQ,CAAC5jB,EAAI23F,EAASH,KACpB,MAAMpsE,EAAQqlD,EAAMryE,MAAM2iB,MAAK6U,GAAQA,EAAK51B,KAAOA,IAC9CorB,IACLA,EAAMusE,QAAUA,EAChBvsE,EAAMosE,cAAgBA,EAAa,EAErCzT,aACAmT,aACAC,eACAQ,QAAS3rB,EACTyE,QACAumB,YAAY,QAAMr2F,EAAO,gBAEpB,CACLy2F,SACArT,aACAmT,aACAC,eACAQ,QAAS3rB,EACTyE,QACA4mB,WACAngD,QACAugD,kBAEJ,CACO,SAASI,KACd,OAAO,QAAOhB,GAAS,KACzB,CCxHO,MAAMiB,IAAsB,EAAA72B,EAAA,GAAa,CAC9Ct/B,SAAU,CACR7V,KAAM0sC,QACNpR,QAAS,MAEXwG,MAAO4K,QACPg/B,cAAe,CACb1rE,KAAM,CAACrpB,MAAOmQ,QACdw0C,QAAS,IAAM,IAEjB2wC,UAAW,CACTjsE,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEX7oD,KAAMqU,OACNqF,MAAOrF,OACP6wE,SAAU,CACR33D,KAAM0sC,QACNpR,QAAS,MAEX4wC,MAAO,CACLlsE,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBujB,WAAY,KACZqsB,WAAYpkF,OACZqlF,gBAAiB,QACdlD,MACF,cACI,SAASmD,GAAcv3F,GAC5B,IAAIpC,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,MAC3EnnE,EAAK+J,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,UAC7E,MAAMiiE,GAAQ,QAAgBrrE,EAAO,cAC/Bw3F,GAAkB,SAAS,SAAgCnuF,IAA1BrJ,EAAMs3F,gBAAgCjsB,EAAM5tE,MAAQuC,EAAMs3F,kBAC3FG,EAAOP,KACPQ,GAAwB,QAAI,IAC5BC,GAAa,SAAW,GACxBC,GAAU,SAAS,QAAS,QAA4B,KAAhBvsB,EAAM5tE,MAAe,KAAO4tE,EAAM5tE,OAAOyC,UAAU,QAAsC,KAA1Bs3F,EAAgB/5F,MAAe,KAAO+5F,EAAgB/5F,OAAOyC,UACpKkjF,GAAa,SAAS,OAASpjF,EAAMghC,UAAYy2D,GAAMrU,WAAW3lF,SAClE84F,GAAa,SAAS,OAASv2F,EAAM8iF,UAAY2U,GAAMlB,WAAW94F,SAClEo5F,GAAgB,SAAS,IACtB72F,EAAM62F,eAAe32F,QAAS,QAAYF,EAAM62F,eAAejkC,OAAO8kC,EAAsBj6F,OAAO6F,MAAM,EAAGgI,KAAKC,IAAI,GAAIvL,EAAMo3F,YAAcM,EAAsBj6F,QAEtK44F,GAAa,SAAS,KAC1B,IAAI54F,GAASuC,EAAMq2F,YAAcoB,GAAMpB,WAAW54F,QAAU,QAC9C,SAAVA,IAAkBA,EAAQ,cAChB,UAAVA,IAAmBA,EAAQ,eAC/B,MAAMwF,EAAM,IAAIswD,IAAI91D,GAAO2J,MAAM,MAAQ,IACzC,MAAO,CACLi/E,MAAOpjF,EAAItE,IAAI,SACfsF,KAAMhB,EAAItE,IAAI,SAAWsE,EAAItE,IAAI,UAAYsE,EAAItE,IAAI,iBACrDk5F,aAAc50F,EAAItE,IAAI,iBACtBknD,KAAM5iD,EAAItE,IAAI,QACdouE,MAAO9pE,EAAItE,IAAI,SAChB,IAEGq4F,GAAU,SAAS,KACnBh3F,EAAMitD,QAASjtD,EAAM62F,eAAe32F,UACnCF,EAAMq3F,MAAMn3F,SACby3F,EAAWl6F,OACNi6F,EAAsBj6F,MAAMyC,SAAUm2F,EAAW54F,MAAMooD,MAAO,MAE7D6xC,EAAsBj6F,MAAMyC,WAGlCs2F,GAAe,SAAW,GAC1BsB,GAAoB,SAAS,KAC1B,CACL,CAAC,GAAGl6F,aAAkC,IAAlBo5F,EAAQv5F,MAC5B,CAAC,GAAGG,YAAgBg6F,EAAQn6F,MAC5B,CAAC,GAAGG,eAAmBwlF,EAAW3lF,MAClC,CAAC,GAAGG,eAAmB24F,EAAW94F,UAGhC8oE,GAAK,EAAAC,EAAA,IAAmB,cACxB4C,GAAM,SAAS,IAAMppE,EAAMpC,OAAQ,QAAMyB,KAuC/CwlE,eAAetuB,IACb80B,EAAM5tE,MAAQ,WACR,gBACAq5F,GACR,CACAjyB,eAAeiyB,IACba,EAAWl6F,OAAQ,EACd44F,EAAW54F,MAAMooD,KAGpB6xC,EAAsBj6F,MAAQ,SAFxBi5F,GAAUL,EAAW54F,MAAMsvE,MAIrC,CACAlI,eAAe6xB,IACb,IAAIqB,EAAS3uF,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,IAAmBA,UAAU,GAC5E,MAAMutF,EAAU,GAChBH,EAAa/4F,OAAQ,EACrB,IAAK,MAAMu6F,KAAQh4F,EAAMq3F,MAAO,CAC9B,GAAIV,EAAQz2F,UAAYF,EAAMo3F,WAAa,GACzC,MAEF,MAAM9hF,EAA0B,oBAAT0iF,EAAsBA,EAAO,IAAMA,EACpDr0B,QAAeruD,EAAQkiF,EAAgB/5F,QAC9B,IAAXkmE,KACW,IAAXA,GAAsC,kBAAXA,EAK/BgzB,EAAQn0F,KAAKmhE,GAAU,IAHrBv2D,QAAQC,KAAK,GAAGs2D,gFAIpB,CAIA,OAHA+zB,EAAsBj6F,MAAQk5F,EAC9BH,EAAa/4F,OAAQ,EACrBk6F,EAAWl6F,MAAQs6F,EACZL,EAAsBj6F,KAC/B,CACA,OA1EA,SAAc,KACZg6F,GAAM1xC,SAAS,CACb1mD,GAAI+pE,EAAI3rE,MACR8oE,KACAmwB,WACAngD,QACAugD,mBACA,KAEJ,SAAgB,KACdW,GAAMhpB,WAAWrF,EAAI3rE,MAAM,KAE7B,SAAUonE,UACHwxB,EAAW54F,MAAMooD,YACd6wC,GAAUL,EAAW54F,MAAMsvE,OAEnC0qB,GAAMx0E,OAAOmmD,EAAI3rE,MAAOu5F,EAAQv5F,MAAOo5F,EAAcp5F,MAAM,KAE7D,SAAe,IAAM44F,EAAW54F,MAAM4oF,OAASgQ,EAAW54F,MAAMo6F,eAAkC,IAAlBb,EAAQv5F,QAAiB,MACvG,QAAM+5F,GAAiB,KACrB,GAA6B,MAAzBA,EAAgB/5F,MAClBi5F,SACK,GAAI12F,EAAMq0F,QAAS,CACxB,MAAM4D,GAAU,SAAM,IAAMj4F,EAAMq0F,UAAS3tE,IACpCA,GAAKgwE,IACVuB,GAAS,GAEb,IACA,KAEJ,SAAe,IAAM5B,EAAW54F,MAAMwG,OAAM,MAC1C,SAAM,IAAMjE,EAAMq0F,UAAS3tE,IACpBA,GAAKgwE,GAAU,GACpB,KAEJ,QAAM,CAACM,EAASH,IAAgB,KAC9BY,GAAMx0E,OAAOmmD,EAAI3rE,MAAOu5F,EAAQv5F,MAAOo5F,EAAcp5F,MAAM,IAsCtD,CACLo5F,gBACAe,UACAxU,aACAmT,aACAoB,aACAX,UACAR,eACAjgD,QACAugD,kBACAJ,WACAoB,oBAEJ,CC1JO,MAAMI,IAAkB,EAAA53B,EAAA,GAAa,CAC1CjhE,GAAI4S,OACJ4wE,WAAY,MACZ+R,YAAa,CACXzpE,KAAM0sC,QACNpR,SAAS,GAEXm8B,YAAa,MACbuV,YAAa,CAACtgC,QAAS5lD,QACvBmmF,gBAAiBvgC,QACjBwgC,KAAMpmF,OACNqmF,eAAgBzgC,QAChBm+B,SAAU,CACR7qE,KAAM,CAACrpB,MAAOmQ,QACdw0C,QAAS,IAAM,IAEjBhiC,UAAW,CACT0G,KAAMlZ,OACNw0C,QAAS,aACT+Z,UAAW5wD,GAAK,CAAC,aAAc,YAAY3C,SAAS2C,IAEtD,mBAAmB,UACnB,kBAAkB,cACf,YACA2rE,SACA,SAAK,UAAsB,CAAC,WAAY,WAAY,cACpD,aACA4b,MACF,UACUoB,IAAS,UAAmB,CACvC36F,KAAM,SACNoC,MAAO,IACFk4F,MAELjtB,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,EAAK,KACL70D,GACE6G,EACJ,MAAM,eACJuxE,GACED,GAAWx7E,IACT,gBACJ8rE,IACE,QAAa9rE,IACX,aACJsrE,IACE,QAAatrE,IACX,WACJurE,IACE,WACE,UACJyoB,GACED,GAAa/zF,GACXopE,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,SAAS+pE,MACzC+rB,GAAa,SAAS,IAAM,GAAG91F,EAAG5B,oBAClC,cACJo5F,EAAa,QACbe,EAAO,WACPxU,EAAU,WACVmT,EAAU,WACVoB,EAAU,QACVX,EAAO,aACPR,EAAY,MACZjgD,EAAK,gBACLugD,EAAe,SACfJ,EAAQ,kBACRoB,GACEP,GAAcv3F,EAAO,UAAWX,GAC9B8qF,GAAY,SAAS,KAAM,CAC/B9qF,KACA81F,aACAyC,UACAxU,aACAmT,aACAoB,aACAX,UACAR,eACAjgD,QACAugD,kBACAJ,eAEIV,GAAW,SAAS,IACpBh2F,EAAM62F,eAAe32F,SAAWy3F,EAAWl6F,OAASo5F,EAAcp5F,MAAMyC,OACnE22F,EAAcp5F,MACZuC,EAAMq4F,OAASr4F,EAAMs4F,gBAAkBt4F,EAAMq0F,SAC/Cr0F,EAAMq4F,KAENr4F,EAAMg2F,WAsCjB,OAnCA,EAAAppB,EAAA,IAAU,KACR,MAAM4W,KAAgBtrB,EAAMjvC,UAAWjpB,EAAM4iF,aACvCa,KAAevrB,EAAMlwC,SAAUhoB,EAAM6iF,YACrC2V,EAAcxC,EAASv4F,MAAMyC,OAAS,EACtCu4F,GAAcz4F,EAAMm4F,aAAqC,SAAtBn4F,EAAMm4F,cAA2BK,KAAiBtgC,EAAMwgC,SACjG,OAAO,QAAa,MAAO,CACzB,MAAS,CAAC,UAAW,YAAY14F,EAAMykB,YAAa,CAClD,wBAAyBzkB,EAAM40F,YAC/B,6BAA8B50F,EAAMo4F,iBACnC3c,EAAeh+E,MAAO6tE,EAAa7tE,MAAO8tE,EAAW9tE,MAAOq6F,EAAkBr6F,MAAOuC,EAAMy4D,OAC9F,MAAS,CAACqT,EAAgBruE,MAAOuC,EAAM2E,QACtC,CAAC6+E,IAAc,QAAa,MAAO,CACpC,IAAO,UACP,MAAS,oBACR,CAACtrB,EAAMjvC,UAAUkhE,EAAU1sF,OAAQuC,EAAM4iF,cAAe,QAAaoR,EAAW,CACjF,IAAO,eACP,KAAQ,WACP,QAAS97B,EAAMzR,UAAW,QAAa,MAAO,CAC/C,MAAS,oBACR,CAACyR,EAAMzR,UAAU0jC,EAAU1sF,SAAUgmF,IAAa,QAAa,MAAO,CACvE,IAAO,SACP,MAAS,mBACR,CAACzjF,EAAM6iF,aAAc,QAAamR,EAAW,CAC9C,IAAO,cACP,KAAQ,UACP,MAAO97B,EAAMlwC,SAASmiE,EAAU1sF,SAAUg7F,IAAc,QAAa,MAAO,CAC7E,MAAS,oBACR,EAAC,QAAaxC,GAAW,CAC1B,GAAMd,EAAW13F,MACjB,OAAU+6F,EACV,SAAYxC,EAASv4F,OACpB,CACDuzC,QAASknB,EAAMlnB,UACbknB,EAAMwgC,UAAUvO,EAAU1sF,UAAU,IAEnC,CACL84C,QACAugD,kBACAJ,WACAM,UACAH,gBAEJ,IC5II8B,GAAc,CAAC,QAAS,OAAQ,OAAQ,OAAQ,iBAAkB,OAAQ,SACnEC,IAAsB,EAAAt4B,EAAA,GAAa,CAC9Cu4B,UAAWhhC,QACX+7B,QAAS,CAAC/7B,QAASxlD,OAAQJ,QAC3B6mF,aAAc,CAACzmF,OAAQnU,UACvB62B,OAAQ9iB,OACRylE,YAAazlE,OACb8mF,sBAAuBlhC,QACvBmhC,kBAAmBnhC,QACnBrzB,OAAQvyB,OACRy/B,KAAMz/B,OACNkZ,KAAM,CACJA,KAAMlZ,OACNw0C,QAAS,QAEXwyC,eAAgBx6F,UACby5F,QACA1D,MACF,cACU0E,IAAa,UAAmB,CAC3Ct7F,KAAM,aACNktE,WAAY,CACVquB,UAAS,MAEX7/B,cAAc,EACdt5D,MAAO44F,KACP3tB,MAAO,CACL,gBAAiBloE,IAAK,EACtB,oBAAqBA,IAAK,EAC1B,iBAAkBsxF,IAAW,EAC7B,oBAAqB3tE,IAAO,GAE9B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,eAC/B,UACJ2mE,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACP84F,GAAe,SAAS,IACS,oBAAvB94F,EAAM84F,aAA8B94F,EAAM84F,aAAaztB,EAAM5tE,OAAuC,kBAAvBuC,EAAM84F,aAA4B94F,EAAM84F,cAAgBztB,EAAM5tE,OAAS,IAAIM,WAAWmC,SAE7KqL,GAAM,SAAS,IACfm6C,EAAM0zC,UAAkB1zC,EAAM0zC,WAC7Bp5F,EAAM4zF,SAAoC,kBAAlB5zF,EAAM4zF,SAAiD,kBAAlB5zF,EAAM4zF,aAAxE,EACO5zF,EAAM4zF,UAET2B,GAAsB,SAAS,IAAM,CAAC,QAAS,cAActoF,SAASjN,EAAMq5E,WAClF,SAASggB,EAAY1iB,EAAgBzjE,GAC9BlT,EAAM64F,WAAcliB,GACzBzjE,EAAQ,GAAGnT,QAAQwsE,SACrB,CACA,MAAM+sB,GAAY,UACZC,GAAY,UACZC,GAAW,UACXvmD,GAAW,SAAS,IAAM0lD,GAAY1rF,SAASjN,EAAMmrB,OAASnrB,EAAM+4F,uBAAyBpyB,EAAUlpE,OAASuC,EAAM8kE,SAC5H,SAASqC,IACHqyB,EAAS/7F,QAAUU,SAAS6F,eAC9Bw1F,EAAS/7F,OAAO8uE,QAEb5F,EAAUlpE,OAAO8uE,GACxB,CACA,SAASktB,EAAmB12F,GAC1BM,EAAK,oBAAqBN,GACtBA,EAAEhD,SAAWy5F,EAAS/7F,QAC1B0pE,IACApkE,EAAEioB,iBACJ,CACA,SAAS0uE,EAAe32F,GACtBokE,IACA9jE,EAAK,gBAAiBN,EACxB,CACA,SAAS42F,EAAQ52F,GACfA,EAAE0rB,kBACF04C,KACA,SAAS,KACPkE,EAAM5tE,MAAQ,MACd,QAAUuC,EAAM,iBAAkB+C,EAAE,GAExC,CACA,SAASyjF,EAAQzjF,GACf,MAAM2E,EAAK3E,EAAEhD,OAEb,GADAsrE,EAAM5tE,MAAQiK,EAAGjK,MACbuC,EAAMi5F,gBAAgB9xF,MAAQ,CAAC,OAAQ,SAAU,WAAY,MAAO,OAAO8F,SAASjN,EAAMmrB,MAAO,CACnG,MAAMyuE,EAAgB,CAAClyF,EAAGmyF,eAAgBnyF,EAAGoyF,eAC7C,SAAS,KACPpyF,EAAGmyF,eAAiBD,EAAc,GAClClyF,EAAGoyF,aAAeF,EAAc,EAAE,GAEtC,CACF,CAoGA,OAnGA,EAAAhtB,EAAA,IAAU,KACR,MAAMmtB,KAAgB7hC,EAAM07B,UAA6B,IAAlB5zF,EAAM4zF,SAAsC,MAAjB5zF,EAAM4zF,SAClE6E,KAAgBsB,IAAc7hC,EAAMwgC,UACnChS,EAAWC,IAAc,QAAiBjhC,IAE/CskB,WAAYxuD,KACTw+E,GACDzB,GAAOprB,YAAYntE,GACjBi6F,EAAanE,GAAiB91F,GACpC,OAAO,QAAau4F,IAAQ,QAAY,CACtC,IAAOe,EACP,WAAcjuB,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAAS,CAAC,eAAgB,CACxB,yBAA0BptE,EAAM+0B,OAChC,yBAA0B/0B,EAAMwkC,OAChC,4BAA6B+wD,EAAoB93F,OAChDuC,EAAMy4D,OACT,MAASz4D,EAAM2E,OACd+hF,EAAWsT,EAAY,CACxB,aAAgBzE,EAAoB93F,MACpC,QAAWkpE,EAAUlpE,QACnB,IACCy6D,EACHzR,QAASpzC,IACP,IAAI,GACFhU,EAAE,WACF+jF,EAAU,QACVwU,EAAO,WACPrB,EAAU,QACVS,GACE3jF,EACJ,OAAO,QAAa4hF,IAAQ,QAAY,CACtC,IAAOsE,EACP,YAAeE,EACf,QAAWC,EACX,gBAAiBC,EACjB,uBAAwB35F,EAAM,wBAC9B,sBAAuBA,EAAM,uBAC7B,KAAQA,EAAM0xC,MACbuoD,EAAY,CACb,GAAM56F,EAAG5B,MACT,OAAUw1C,EAASx1C,OAASm6F,EAAQn6F,MACpC,MAASm6F,EAAQn6F,OAASuC,EAAM60F,MAChC,SAAYzR,EAAW3lF,MACvB,QAAWkpE,EAAUlpE,MACrB,OAA2B,IAAlBu5F,EAAQv5F,QACf,IACCy6D,EACHzR,QAAS2lC,IACP,IACEpsF,OACEy4D,MAAOyhC,KACJ/P,IAEHiC,EACJ,MAAMxF,GAAY,SAAgB,QAAa,SAAS,QAAY,CAClE,IAAO4S,EACP,MAASnuB,EAAM5tE,MACf,QAAW+oF,EACX,UAAaxmF,EAAM64F,UACnB,SAAYtC,EAAW94F,MACvB,SAAY2lF,EAAW3lF,MACvB,KAAQuC,EAAMpC,KACd,YAAeoC,EAAM03E,YACrB,KAAQ,EACR,KAAQ13E,EAAMmrB,KACd,QAAWg8C,EACX,OAAUljE,GACTkmF,EAAWxD,GAAa,MAAO,CAAC,EAAC,QAAkB,aAAc,CAClErxE,QAAS+jF,GACR,KAAM,CACP1jF,MAAM,MAER,OAAO,QAAa,KAAW,KAAM,CAAC3V,EAAM+0B,SAAU,QAAa,OAAQ,CACzE,MAAS,wBACR,EAAC,QAAa,OAAQ,CACvB,MAAS,8BACR,CAAC/0B,EAAM+0B,WAAYmjC,EAAMzR,SAAU,QAAa,MAAO,CACxD,MAASyzC,EACT,oBAAqB,IACpB,CAAChiC,EAAMzR,UAAWmgC,KAAc,QAAWA,EAAW,CACvDnuB,MAAOyhC,IACLl6F,EAAMwkC,SAAU,QAAa,OAAQ,CACvC,MAAS,wBACR,EAAC,QAAa,OAAQ,CACvB,MAAS,8BACR,CAACxkC,EAAMwkC,YAAY,GAExB,EAEJk0D,QAASD,EAAatO,IAAa,QAAa,KAAW,KAAM,CAACjyB,EAAMwgC,UAAUvO,GAAY4P,IAAc,QAAa,KAAW,KAAM,EAAC,QAAa,OAAQ,KAAM,OAAO,QAAarG,GAAU,CAClM,OAAU1zF,EAAMg5F,mBAAqBryB,EAAUlpE,MAC/C,MAASq7F,EAAar7F,MACtB,IAAO8N,EAAI9N,MACX,SAAYuC,EAAMghC,UACjBk3B,EAAM07B,kBAAevqF,GACxB,KAEG,EAAAgkE,GAAA,GAAY,CAAC,EAAGisB,EAAWC,EAAWC,EAC/C,IC5MWW,IAA8B,EAAA75B,EAAA,GAAa,CACtD85B,WAAYviC,YACT,UACF,sBACUwiC,IAAqB,UAAmB,CACnDz8F,KAAM,qBACN07D,cAAc,EACdt5D,MAAOm6F,KACPlvB,MAAO,CACL,gBAAiB/5D,IAAU,GAE7B,KAAA+mD,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,UACJqjE,EAAS,YACTh6D,GACE+5D,OAAkBjkE,EAAW,WACjC,SAAM,IAAMkK,EAAY9V,OAAOyT,SAAQA,IACvB,MAAVA,GAAgB7N,EAAK,gBAAiB6N,EAAO,KAEnD,EAAA07D,EAAA,IAAU,IAAM5sE,EAAMo6F,YAAa,QAAa,KAAW,KAAM,CAACliC,EAAMzR,UAAU,CAChF6zC,QAAS/sB,OACJ,QAAa,OAAO,QAAY,CACrC,IAAOA,EACP,MAAS,CAAC,yBAA0BvtE,EAAMy4D,OAC1C,MAASz4D,EAAM2E,OACd+gD,GAAQ,CAACwS,EAAMzR,eACpB,IChCI8zC,IAAM,EACNC,GAAO,EAGPC,GAAY,IACLC,IAAmB,EAAAp6B,EAAA,GAAa,CAC3Cq6B,WAAY,CACVxvE,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,MAEXv1C,OAAQ,CAACmB,OAAQJ,SAChB,WACI,SAAS2oF,GAAW56F,EAAO8vE,GAChC,MAAMrpC,GAAU,WACVk0D,GAAa,QAAW,IAC9B,SAAY,KACVA,EAAWl9F,MAAQoL,WAAW7I,EAAM26F,YAAc,EAAE,IAEtD,MAAME,GAAQ,QAAW,GACnBhrC,GAAO,QAAWvkD,KAAK8P,MAK5BnE,SAASjX,EAAMkR,SAAWu1B,EAAQv1B,OAAOzT,QAAUk9F,EAAWl9F,OAAS,MAAQ,GAC1Eq9F,GAAa,QAAW,GACxB/lB,GAAgB,QAAW,GAG3BgU,GAAe,UAGfgS,GAAY,UAElB,IAAIC,EAAe,EACnB,MAAM,UACJztB,EAAS,YACTh6D,GACE+5D,KACJ,SAAY,KACVC,EAAU9vE,MAAQsrF,EAAatrF,KAAK,IAEtC,MAAMw9F,GAAiB,SAAS,IACvBlS,EAAatrF,QAAUU,SAASiS,gBAAkBq2B,EAAQv1B,OAAOzT,MAAQ8V,EAAY9V,OAAOyT,QAAU+F,SAASjX,EAAMkR,SAAW,IAGnIgqF,GAAmB,SAAS,OACtBnS,EAAatrF,OAASs9F,EAAUt9F,OAASw9F,EAAex9F,OAASk9F,EAAWl9F,SAExF,IAAIs4E,EAAQj0E,MAAM0f,KAAK,CACrBthB,OAAQ4vE,EAAMryE,MAAMyC,SAElBi7F,EAAUr5F,MAAM0f,KAAK,CACvBthB,OAAQ4vE,EAAMryE,MAAMyC,SAEtB,MAAMk7F,GAAa,QAAW,GAC9B,IAAIC,GAAqB,EACzB,SAASC,EAAQllF,GACf,OAAO2/D,EAAM3/D,IAAUukF,EAAWl9F,KACpC,CACA,MAAM89F,GAAgB,SAAS,KAC7B,MAAMllD,EAAQkvB,YAAY99D,MAC1B0zF,EAAQ,GAAK,EACb,MAAMj7F,EAAS4vE,EAAMryE,MAAMyC,OAC3B,IAAK,IAAID,EAAI,EAAGA,GAAKC,EAAS,EAAGD,IAC/Bk7F,EAAQl7F,IAAMk7F,EAAQl7F,EAAI,IAAM,GAAKq7F,EAAQr7F,EAAI,GAEnDm7F,EAAW39F,MAAQ6N,KAAKC,IAAI6vF,EAAW39F,MAAO8nE,YAAY99D,MAAQ4uC,EAAM,GACvE+kD,GACGnD,GAAU,QAAMiD,GAAkBtrF,IACjCA,IAILqoF,IACA+C,EAAeD,EAAUt9F,MAAM+f,UAC/B+9E,EAAc73B,YACd83B,KACMH,IACN,SAAS,KACP,MAAcr6F,OAAO4F,uBAAsB,KACzC60F,EAAcJ,GACdA,GAAqB,CAAC,GACtB,IACF,IAKJ,SAASK,EAAiBtlF,EAAOlF,GAC/B,MAAMyqF,EAAa5lB,EAAM3/D,GACnBwlF,EAAgBjB,EAAWl9F,MACjCk9F,EAAWl9F,MAAQm+F,EAAgBtwF,KAAKE,IAAImvF,EAAWl9F,MAAOyT,GAAUA,EACpEyqF,IAAezqF,GAAU0qF,IAAkBjB,EAAWl9F,QACxDs4E,EAAM3/D,GAASlF,EACfqqF,IAEJ,CACA,SAASM,EAAgBzlF,GAEvB,OADAA,GAAQ,QAAMA,EAAO,EAAG05D,EAAMryE,MAAMyC,OAAS,GACtCi7F,EAAQ/kF,IAAU,CAC3B,CACA,SAAS0lF,EAAe/tF,GACtB,OAAOguF,GAAcZ,EAASptF,EAChC,EAlBA,SAAe,KACbwtF,EAAcvoC,OAAO,IAkBvB,IAAIgpC,EAAgB,EAChBC,EAAiB,EACjB99D,EAAiB,EAYrB,SAAS0+B,IACP,IAAKksB,EAAatrF,QAAUs9F,EAAUt9F,MAAO,OAC7C,MAAMsQ,EAAYg7E,EAAatrF,MAAMsQ,UAC/BmuF,EAAa32B,YAAY99D,MACzB00F,EAAeD,EAAa/9D,EAC9Bg+D,EAAe,KACjBF,EAAiB3wF,KAAK40B,KAAKnyB,EAAYiuF,GAIvChB,EAAeD,EAAUt9F,MAAM+f,WAE/By+E,EAAiBluF,EAAYiuF,EAE/BA,EAAgBjuF,EAChBowB,EAAiB+9D,EACjBV,GACF,CACA,SAASY,IACFrT,EAAatrF,OAAUs9F,EAAUt9F,QACtCw+F,EAAiB,EACjB99D,EAAiB,EACjBq9D,IACF,EAlCA,QAAMP,GAAgB,CAACv0E,EAAK4hD,KACtBA,IACFkzB,IACI90E,EAAM4hD,GACR1hE,uBAAsB,KACpBq1F,EAAiB,EACjBT,GAAuB,IAG7B,IA0BF,IAAIxmD,GAAO,EACX,SAASwmD,IACP10F,qBAAqBkuC,GACrBA,EAAMpuC,sBAAsBy1F,EAC9B,CACA,SAASA,IACP,IAAKtT,EAAatrF,QAAUw9F,EAAex9F,MAAO,OAClD,MAAMsQ,EAAYiuF,EAAgBhB,EAC5Bv2E,EAAYnZ,KAAK40B,KAAK+7D,GACtBK,EAAUhxF,KAAKC,IAAI,EAAGwC,EAAY0sF,IAClCpkD,GAAQ,QAAMylD,EAAeQ,GAAU,EAAGxsB,EAAMryE,MAAMyC,QACtDq8F,EAAQxuF,EAAYktF,EAAex9F,MAAQg9F,GAC3CtsC,GAAM,QAAM2tC,EAAeS,GAAS,EAAGlmD,EAAQ,EAAGy5B,EAAMryE,MAAMyC,QACpE,IAGCukB,IAAc81E,IAAMlkD,EAAQwkD,EAAMp9F,SAAWgnB,IAAc+1E,IAAQrsC,EAAM0B,EAAKpyD,OAAQ,CACrF,MAAM++F,EAAcX,EAAgBhB,EAAMp9F,OAASo+F,EAAgBxlD,GAC7DomD,EAAiBZ,EAAgB1tC,GAAO0tC,EAAgBhsC,EAAKpyD,OAC7Di/F,EAAiBpxF,KAAKC,IAAIixF,EAAaC,GACzCC,EAAiBjC,IACnBI,EAAMp9F,MAAQ44C,EACdwZ,EAAKpyD,MAAQ0wD,IAGT9X,GAAS,IAAGwkD,EAAMp9F,MAAQ44C,GAC1B8X,GAAO2hB,EAAMryE,MAAMyC,SAAQ2vD,EAAKpyD,MAAQ0wD,GAEhD,CACA2sC,EAAWr9F,MAAQo+F,EAAgBhB,EAAMp9F,OACzCs3E,EAAct3E,MAAQo+F,EAAgB/rB,EAAMryE,MAAMyC,QAAU27F,EAAgBhsC,EAAKpyD,MACnF,CACA,SAASg+F,EAAcrlF,GACrB,MAAM6jB,EAAS4hE,EAAgBzlF,IAC1B2yE,EAAatrF,OAAS2Y,IAAU6jB,EACnCohE,EAAoBjlF,EAEpB2yE,EAAatrF,MAAMsQ,UAAYksB,CAEnC,CACA,MAAM0iE,GAAgB,SAAS,IACtB7sB,EAAMryE,MAAM6F,MAAMu3F,EAAMp9F,MAAOoyD,EAAKpyD,OAAO8F,KAAI,CAAC0xB,EAAM7e,KAAU,CACrEypB,IAAK5K,EACL7e,MAAOA,EAAQykF,EAAMp9F,YAezB,OAZA,QAAMqyE,GAAO,KACXiG,EAAQj0E,MAAM0f,KAAK,CACjBthB,OAAQ4vE,EAAMryE,MAAMyC,SAEtBi7F,EAAUr5F,MAAM0f,KAAK,CACnBthB,OAAQ4vE,EAAMryE,MAAMyC,SAEtBq7F,EAAc73B,YACd83B,GAAuB,GACtB,CACDvE,MAAM,IAED,CACLuE,wBACAzS,eACAgS,YACA4B,gBACA7B,aACA/lB,gBACA0mB,gBACA5+B,eACAu/B,kBACAV,mBAEJ,CAGA,SAASK,GAAc3e,EAAK12D,GAC1B,IAAIk2E,EAAOxf,EAAIl9E,OAAS,EACpB28F,EAAM,EACN9oC,EAAM,EACN9+B,EAAO,KACPl1B,GAAU,EACd,GAAIq9E,EAAIwf,GAAQl2E,EACd,OAAOk2E,EAET,MAAOC,GAAOD,EAGZ,GAFA7oC,EAAM8oC,EAAMD,GAAQ,EACpB3nE,EAAOmoD,EAAIrpB,GACP9+B,EAAOvO,EACTk2E,EAAO7oC,EAAM,MACR,MAAI9+B,EAAOvO,GAGX,OAAIuO,IAASvO,EACXqtC,EAEA8oC,EALP98F,EAASg0D,EACT8oC,EAAM9oC,EAAM,CAKd,CAEF,OAAOh0D,CACT,C,eCzOO,MAAM+8F,IAA0B,EAAAx8B,EAAA,GAAa,CAClDwP,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjB2zC,WAAYviC,WACT6iC,SACA,aACA,WACF,kBACUqC,IAAiB,UAAmB,CAC/Cn/F,KAAM,iBACNoC,MAAO88F,KACP,KAAA7kC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMq8D,GAAK,EAAAC,EAAA,IAAmB,mBACxB,gBACJsF,IACE,QAAa9rE,IACX,sBACJw7F,EAAqB,aACrBzS,EAAY,UACZgS,EAAS,aACTl+B,EAAY,gBACZu/B,EAAe,iBACfV,EAAgB,cAChBD,EAAa,WACbX,EAAU,cACV/lB,EAAa,cACb4nB,GACE/B,GAAW56F,GAAO,QAAMA,EAAO,UA6DnC,OA5DA,SAAe,IAAMA,EAAMo6F,aAAY,KACrC,SAAS4C,IACP,IAAIvvF,EAAMrE,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,IAAmBA,UAAU,GACzE,MAAMqM,EAAShI,EAAM,mBAAqB,sBACtCs7E,EAAatrF,QAAUU,SAASiS,iBAClCjS,SAASsX,GAAQ,SAAUonD,EAAc,CACvCtqC,SAAS,IAEXp0B,SAASsX,GAAQ,YAAa2mF,KAE9BrT,EAAatrF,QAAQgY,GAAQ,SAAUonD,EAAc,CACnDtqC,SAAS,IAEXw2D,EAAatrF,QAAQgY,GAAQ,YAAa2mF,GAE9C,EACA,SAAU,KACRrT,EAAatrF,OAAQ,EAAAokE,GAAA,IAAgB0E,EAAG9L,MAAM/yD,IAAI,GAClDs1F,GAAgB,EAAK,KAEvB,QAAeA,EAAgB,KAEjC,EAAApwB,EAAA,IAAU,KACR,MAAMnoE,EAAWk4F,EAAcl/F,MAAM8F,KAAI0xB,IAAQ,QAAaolE,GAAoB,CAChF,IAAOplE,EAAK7e,MACZ,WAAcpW,EAAMo6F,WACpB,kBAAmBlpF,GAAUwqF,EAAiBzmE,EAAK7e,MAAOlF,IACzD,CACDu1C,QAAS0jC,GAAajyB,EAAMzR,UAAU,CACpCxxB,KAAMA,EAAK4K,IACXzpB,MAAO6e,EAAK7e,SACT+zE,QAGP,OAAOnqF,EAAMo6F,YAAa,QAAa,KAAW,KAAM,EAAC,QAAa,MAAO,CAC3E,IAAOW,EACP,MAAS,2BACT,MAAS,CACPD,YAAY,QAAcA,EAAWr9F,SAEtC,MAAOgH,GAAU,QAAa,MAAO,CACtC,MAAS,2BACT,MAAS,CACPswE,eAAe,QAAcA,EAAct3E,SAE5C,SAAU,QAAa,MAAO,CAC/B,IAAOsrF,EACP,MAAS,CAAC,mBAAoB/oF,EAAMy4D,OACpC,gBAAmBoE,EACnB,YAAeu/B,EACf,MAAS,CAACtwB,EAAgBruE,MAAOuC,EAAM2E,QACtC,EAAC,QAAa,MAAO,CACtB,IAAOo2F,EACP,MAAS,8BACT,MAAS,CACPD,YAAY,QAAcA,EAAWr9F,OACrCs3E,eAAe,QAAcA,EAAct3E,SAE5C,CAACgH,KAAY,IAEX,CACL+2F,wBACAC,gBAEJ,ICxGK,SAASwB,GAAaC,EAASC,GACpC,MAAMrwE,GAAc,SAAW,GAC/B,IAAIswE,EACJ,SAASC,EAAat6F,GACpB+D,qBAAqBs2F,GACrBtwE,EAAYrvB,OAAQ,EACpB2/F,EAAgBx2F,uBAAsB,KACpCw2F,EAAgBx2F,uBAAsB,KACpCkmB,EAAYrvB,OAAQ,CAAK,GACzB,GAEN,CACAonE,eAAey4B,UACP,IAAI7nC,SAAQhD,GAAW7rD,sBAAsB6rD,WAC7C,IAAIgD,SAAQhD,GAAW7rD,sBAAsB6rD,WAC7C,IAAIgD,SAAQhD,GAAW7rD,sBAAsB6rD,WAC7C,IAAIgD,SAAQhD,IAChB,GAAI3lC,EAAYrvB,MAAO,CACrB,MAAMijC,GAAO,QAAM5T,GAAa,KAC9B4T,IACA+xB,GAAS,GAEb,MAAOA,GAAS,GAEpB,CACAoS,eAAe04B,EAAcx6F,GAI3B,GAHc,QAAVA,EAAEvC,KACJ28F,EAAa1/F,OAAO8uE,SAEjB,CAAC,WAAY,SAAU,OAAQ,OAAOt/D,SAASlK,EAAEvC,KAAM,OAC5D,MAAMkH,EAAKw1F,EAAQz/F,OAAO+qE,IAC1B,IAAK9gE,EAAI,OACK,SAAV3E,EAAEvC,KAA4B,QAAVuC,EAAEvC,KACxBkH,EAAGmE,SAAS,CACVsC,IAAe,SAAVpL,EAAEvC,IAAiB,EAAIkH,EAAG+yE,aAC/Br2D,SAAU,iBAGRk5E,IACN,MAAM74F,EAAWiD,EAAGtD,iBAAiB,4CACrC,GAAc,aAAVrB,EAAEvC,KAAgC,SAAVuC,EAAEvC,IAAgB,CAC5C,MAAM2N,EAAMzG,EAAGkG,wBAAwBO,IACvC,IAAK,MAAMY,KAAStK,EAClB,GAAIsK,EAAMnB,wBAAwBO,KAAOA,EAAK,CAC5CY,EAAMw9D,QACN,KACF,CAEJ,KAAO,CACL,MAAMrK,EAASx6D,EAAGkG,wBAAwBs0D,OAC1C,IAAK,MAAMnzD,IAAS,IAAItK,GAAUg5D,UAChC,GAAI1uD,EAAMnB,wBAAwBs0D,QAAUA,EAAQ,CAClDnzD,EAAMw9D,QACN,KACF,CAEJ,CACF,CACA,MAAO,CACLixB,gBAAiBH,EACjB/wB,UAAWixB,EAEf,CC1CO,MAAME,IAAkB,EAAAn9B,EAAA,GAAa,CAC1Co9B,MAAO7lC,QACP8lC,cAAe9lC,QACf+lC,UAAW,CACTzyE,KAAMlZ,OACNw0C,QAAS,kBAEXo3C,SAAU,CACR1yE,KAAMlZ,OACNw0C,QAAS,iBAEXsmB,MAAOlV,QACPimC,WAAYjmC,QACZkmC,aAAclmC,QACdmmC,UAAW,CACT7yE,KAAM1sB,QAERgpE,KAAM5P,QACNomC,SAAU,CACR9yE,KAAM,MACNs7B,QAAS,aAEXy3C,UAAW,CACT/yE,KAAM1sB,QAER89E,SAAU1kB,QACVsmC,WAAY,CACVhzE,KAAMlZ,OACNw0C,QAAS,uBAEX23C,YAAavmC,QACbwmC,UAAWpsF,UACR4/E,GAAe,CAChBG,cAAc,KAEf,UACUsM,IAAmB,EAAAh+B,EAAA,GAAa,IACxCm9B,SACA,QAAK7E,GAAoB,CAC1B5uB,WAAY,KACZt4B,KAAM,aACJ,CAAC,kBAAmB,QAAS,wBAC9B,QAAoB,CACrB7sB,WAAY,CACVwhC,UAAWmsB,MAGd,WACU+rB,IAAU,UAAmB,CACxC3gG,KAAM,UACNoC,MAAOs+F,KACPrzB,MAAO,CACL,iBAAkBopB,IAAW,EAC7B,oBAAqB52F,IAAS,EAC9B,cAAe+gG,IAAM,GAEvB,KAAAvmC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,EACJpH,IACE,UACE27F,GAAgB,UAChBC,GAAW,UACXC,GAAoB,UACpBC,GAAQ,QAAgB5+F,EAAO,QAC/BynE,GAAO,QAAS,CACpBzkE,IAAK,IAAM47F,EAAMnhG,MACjBwF,IAAK2M,IACCgvF,EAAMnhG,QAAUmS,GAAK8uF,EAASjhG,OAAO,cAAc8R,OACvDqvF,EAAMnhG,MAAQmS,EAAC,KAGb,MACJkgE,EAAK,YACLuiB,EAAW,aACXC,GACEH,GAASnyF,GACPqrE,GAAQ,QAAgBrrE,EAAO,aAAc,IAAI4P,GAAKyiF,EAAkB,OAANziF,EAAa,CAAC,OAAQ,QAAYA,MAAKA,IAC7G,MAAMivF,EAAcvM,EAAa1iF,GACjC,OAAO5P,EAAMu8E,SAAWsiB,EAAcA,EAAY,IAAM,IAAI,IAExD/F,GAAe,SAAS,IACS,oBAAvB94F,EAAM84F,aAA8B94F,EAAM84F,aAAaztB,EAAM5tE,OAAuC,kBAAvBuC,EAAM84F,aAA4B94F,EAAM84F,aAAeztB,EAAM5tE,MAAMyC,SAE1Ju3F,EAAOP,KACPnJ,GAAiB,SAAS,IAAM1iB,EAAM5tE,MAAM8F,KAAIu7F,GAAaA,EAAUrhG,UACvEkpE,GAAY,SAAW,GACvBrvD,GAAQ,SAAS,IAAMmwD,EAAKhqE,MAAQuC,EAAM49F,UAAY59F,EAAM69F,WAClE,IACIkB,EADAC,EAAuB,GAE3B,MAAMC,GAAe,SAAS,IACxBj/F,EAAM+9F,aACDjuB,EAAMryE,MAAM4E,QAAO4yB,IAASo2C,EAAM5tE,MAAMw7D,MAAKx0B,GAAKzkC,EAAMslF,gBAAgB7gD,EAAGxP,OAE7E66C,EAAMryE,QAETyhG,GAAe,SAAS,IAAMl/F,EAAM89F,aAAemB,EAAaxhG,MAAMyC,QAAUF,EAAM8iF,UAAY2U,GAAMlB,WAAW94F,QACnH0hG,GAAoB,SAAS,KAC1B,IACFn/F,EAAMk+F,UACTl4B,eAAgB,IACVhmE,EAAMk+F,WAAWl4B,gBAAkB,CAAC,EACxC,gBAAiB,eAIjBk3B,GAAU,UACVkC,EAAanC,GAAaC,EAASuB,GACzC,SAAS9E,EAAQ52F,GACX/C,EAAMo+F,cACR32B,EAAKhqE,OAAQ,EAEjB,CACA,SAAS4hG,IACHH,EAAazhG,QACjBgqE,EAAKhqE,OAASgqE,EAAKhqE,MACrB,CACA,SAAS8/F,EAAcx6F,IACjB,QAAeA,IACjBupE,EAAUvpE,EAEd,CACA,SAASupE,EAAUvpE,GACjB,IAAKA,EAAEvC,KAAOR,EAAM8iF,UAAY2U,GAAMlB,WAAW94F,MAAO,OACpD,CAAC,QAAS,IAAK,YAAa,UAAW,OAAQ,OAAOwP,SAASlK,EAAEvC,MACnEuC,EAAEioB,iBAEA,CAAC,QAAS,YAAa,KAAK/d,SAASlK,EAAEvC,OACzCinE,EAAKhqE,OAAQ,GAEX,CAAC,SAAU,OAAOwP,SAASlK,EAAEvC,OAC/BinE,EAAKhqE,OAAQ,GAED,SAAVsF,EAAEvC,IACJ08F,EAAQz/F,OAAO8uE,MAAM,SACF,QAAVxpE,EAAEvC,KACX08F,EAAQz/F,OAAO8uE,MAAM,QAIvB,MAAM+yB,EAA4B,IAElC,GAAIt/F,EAAMu8E,YAAa,QAAex5E,GAAI,OAC1C,MAAM0E,EAAM89D,YAAY99D,MACpBA,EAAMs3F,EAAyBO,IACjCN,EAAuB,IAEzBA,GAAwBj8F,EAAEvC,IAAIwR,cAC9B+sF,EAAyBt3F,EACzB,MAAMwtB,EAAO66C,EAAMryE,MAAM2iB,MAAK6U,GAAQA,EAAK8jD,MAAM/mE,cAAcmxC,WAAW67C,KAC1E,QAAa31F,IAAT4rB,EAAoB,CACtBo2C,EAAM5tE,MAAQ,CAACw3B,GACf,MAAM7e,EAAQ6oF,EAAaxhG,MAAM2F,QAAQ6xB,GACzC,MAAcj0B,OAAO4F,uBAAsB,KACzCwP,GAAS,GAAKuoF,EAAkBlhG,OAAOg+F,cAAcrlF,EAAM,GAE/D,CACF,CAGA,SAAS4mE,EAAO/nD,GACd,IAAIhyB,IAAMmG,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,KAAmBA,UAAU,GACzE,IAAI6rB,EAAKj1B,MAAMghC,SACf,GAAIhhC,EAAMu8E,SAAU,CAClB,MAAMnmE,EAAQi1D,EAAM5tE,MAAMguC,WAAUqzD,GAAa9+F,EAAMslF,gBAAgBwZ,EAAUrhG,MAAOw3B,EAAKx3B,SACvFgQ,EAAa,MAAPxK,IAAgBmT,EAAQnT,EACpC,IAAKmT,EAAO,CACV,MAAM3Y,EAAQgQ,EAAM,IAAI49D,EAAM5tE,MAAOw3B,GAAQ,IAAIo2C,EAAM5tE,OACvDA,EAAM0F,OAAOiT,EAAO,GACpBi1D,EAAM5tE,MAAQA,CAChB,MAAWgQ,IACT49D,EAAM5tE,MAAQ,IAAI4tE,EAAM5tE,MAAOw3B,GAEnC,KAAO,CACL,MAAMxnB,GAAc,IAARxK,EACZooE,EAAM5tE,MAAQgQ,EAAM,CAACwnB,GAAQ,IAC7B,SAAS,KACPwyC,EAAKhqE,OAAQ,CAAK,GAEtB,CACF,CACA,SAAS2pE,EAAOrkE,GACTm6F,EAAQz/F,OAAO+qE,IAAIx7D,SAASjK,EAAE4mF,iBACjCliB,EAAKhqE,OAAQ,EAEjB,CACA,SAASgvE,IACHzsE,EAAM+sE,OACR4xB,EAAkBlhG,OAAO+9F,uBAE7B,CACA,SAAS/vB,IACH9E,EAAUlpE,OACZghG,EAAchhG,OAAO8uE,OAEzB,CACA,SAAShF,EAAUxkE,GACjB4jE,EAAUlpE,OAAQ,CACpB,CACA,SAAS8hG,EAAc3vF,GACrB,GAAS,MAALA,EAAWy7D,EAAM5tE,MAAQ,QAAQ,IAAI,QAAgBghG,EAAchhG,MAAO,eAAgB,QAAgBghG,EAAchhG,MAAO,qBAAsB,CACvJ,MAAMw3B,EAAO66C,EAAMryE,MAAM2iB,MAAK6U,GAAQA,EAAK8jD,QAAUnpE,IACjDqlB,GACF+nD,EAAO/nD,EAEX,MAAWwpE,EAAchhG,QACvBghG,EAAchhG,MAAMA,MAAQ,GAEhC,CA2LA,OA1LA,QAAMgqE,GAAM,KACV,IAAKznE,EAAM+9F,cAAgBt2B,EAAKhqE,OAAS4tE,EAAM5tE,MAAMyC,OAAQ,CAC3D,MAAMkW,EAAQ6oF,EAAaxhG,MAAMguC,WAAUxW,GAAQo2C,EAAM5tE,MAAMw7D,MAAKx0B,GAAKzkC,EAAMslF,gBAAgB7gD,EAAEhnC,MAAOw3B,EAAKx3B,WAC7G,MAAcuD,OAAO4F,uBAAsB,KACzCwP,GAAS,GAAKuoF,EAAkBlhG,OAAOg+F,cAAcrlF,EAAM,GAE/D,MAEF,SAAM,IAAMpW,EAAM8vE,QAAO,CAACmW,EAAQ3d,KAC5Bb,EAAKhqE,OACLkpE,EAAUlpE,QAAU6qE,EAAOpoE,QAAU+lF,EAAO/lF,SAC9CunE,EAAKhqE,OAAQ,EACf,KAEF,EAAAmvE,EAAA,IAAU,KACR,MAAM4yB,KAAcx/F,EAAM09F,QAASxlC,EAAMunC,MACnCC,MAAc1/F,EAAM89F,YAAcmB,EAAaxhG,MAAMyC,QAAUg4D,EAAM,iBAAmBA,EAAM,gBAAkBA,EAAM,YACtH0/B,EAAUvsB,EAAM5tE,MAAMyC,OAAS,EAC/By/F,EAAiBzG,GAAW/rB,YAAYntE,GACxC03E,EAAckgB,IAAYjxB,EAAUlpE,OAASuC,EAAMsX,QAAUtX,EAAM+4F,2BAAwB1vF,EAAYrJ,EAAM03E,YACnH,OAAO,QAAawhB,IAAY,QAAY,CAC1C,IAAOuF,GACNkB,EAAgB,CACjB,WAAct0B,EAAM5tE,MAAM8F,KAAIqM,GAAKA,EAAE5P,MAAMvC,QAAO8K,KAAK,MACvD,sBAAuBg3F,EACvB,QAAW54B,EAAUlpE,MACrB,mBAAoB2vE,GAAUzG,EAAUlpE,MAAQ2vE,EAChD,gBAAmB/B,EAAMu0B,cACzB,aAAgB9G,EAAar7F,MAC7B,MAASm6F,EACT,MAAS,CAAC,WAAY,CACpB,wBAAyBnwB,EAAKhqE,MAC9B,oBAAqBuC,EAAM09F,MAC3B,CAAC,cAAa19F,EAAMu8E,SAAW,WAAa,YAAa,EACzD,qBAAsBlR,EAAM5tE,MAAMyC,OAClC,6BAA8Bg4D,EAAM4mC,WACnC9+F,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,UAAa,OACb,YAAe+yE,EACf,gBAAiBiiB,EACjB,sBAAuB0F,EACvB,OAAUj4B,EACV,UAAakF,EACb,aAAcxpE,EAAEwU,EAAM7Z,OACtB,MAASqF,EAAEwU,EAAM7Z,SACf,IACCy6D,EACHzR,QAAS,KAAM,QAAa,KAAW,KAAM,EAAC,QAAawsC,IAAO,QAAY,CAC5E,IAAOyL,EACP,WAAcj3B,EAAKhqE,MACnB,sBAAuB2vE,GAAU3F,EAAKhqE,MAAQ2vE,EAC9C,UAAa,SACb,aAAgB,oBAChB,SAAY8xB,EAAazhG,MACzB,MAASuC,EAAM+sE,MACf,UAAa,IACb,aAAe,EACf,qBAAuB,EACvB,WAAc/sE,EAAM6kB,WACpB,aAAgB4nD,EAChB,aAAgBhB,GACf0zB,EAAkB1hG,OAAQ,CAC3BgpD,QAAS,IAAM,CAACi5C,IAAW,QAAa/M,IAAO,QAAY,CACzD,IAAOuK,EACP,SAAYnP,EAAetwF,MAC3B,eAAkBuC,EAAMu8E,SAAW,cAAgB,qBACnD,YAAex5E,GAAKA,EAAEioB,iBACtB,UAAauyE,EACb,UAAah2B,EACb,SAAY,KACZ,YAAa,SACb,MAASvnE,EAAMq+F,WAAar+F,EAAMiqE,OACjCm1B,EAAYp/F,EAAMg+F,WAAY,CAC/Bv3C,QAAS,IAAM,CAACyR,EAAM,qBAAsB+mC,EAAaxhG,MAAMyC,SAAWF,EAAM89F,aAAe5lC,EAAM,iBAAkB,QAAa83B,GAAW,CAC7I,MAASltF,EAAE9C,EAAMm+F,aAChB,QAAQ,QAAapB,GAAgB,CACtC,IAAO4B,EACP,YAAc,EACd,MAASM,EAAaxhG,OACrB,CACDgpD,QAASpzC,IACP,IAAI,KACF4hB,EAAI,MACJ7e,EAAK,QACLkkF,GACEjnF,EACJ,MAAMk+E,GAAY,QAAWt8D,EAAKj1B,MAAO,CACvC26D,IAAK2/B,EACL95F,IAAK4V,EACLub,QAAS,IAAMqrD,EAAO/nD,EAAM,QAE9B,OAAOijC,EAAMjjC,OAAO,CAClBA,OACA7e,QACApW,MAAOuxF,MACH,QAAavB,IAAW,QAAYuB,EAAW,CACnD,KAAQ,WACN,CACFtoE,QAASmjE,IACP,IAAI,WACFvP,GACEuP,EACJ,OAAO,QAAa,KAAW,KAAM,CAACpsF,EAAMu8E,WAAav8E,EAAM+9F,cAAe,QAAahX,GAAc,CACvG,IAAO9xD,EAAKx3B,MACZ,WAAco/E,EACd,QAAU,EACV,SAAY,MACX,WAAQxzE,EAAW4rB,EAAKj1B,MAAMkrF,gBAAiB,QAAapG,GAAS,CACtE,MAAS7vD,EAAKj1B,MAAMkrF,eACnB,MAAOj2D,EAAKj1B,MAAM4iF,cAAe,QAAa/D,GAAO,CACtD,KAAQ5pD,EAAKj1B,MAAM4iF,aAClB,OAAO,GAEZ,IAEF1qB,EAAM,yBAEVmT,EAAM5tE,MAAM8F,KAAI,CAAC0xB,EAAM7e,KACzB,SAASypF,EAAY98F,GACnBA,EAAE0rB,kBACF1rB,EAAEioB,iBACFgyD,EAAO/nD,GAAM,EACf,CACA,MAAMk1D,EAAY,CAChB,gBAAiB0V,EACjB,SAAAvzB,CAAUvpE,GACM,UAAVA,EAAEvC,KAA6B,MAAVuC,EAAEvC,MAC3BuC,EAAEioB,iBACFjoB,EAAE0rB,kBACFoxE,EAAY98F,GACd,EACA,WAAA6vF,CAAY7vF,GACVA,EAAEioB,iBACFjoB,EAAE0rB,iBACJ,EACAu7C,YAAY,EACZ,2BAAuB3gE,GAEnBy2F,EAAUN,IAAatnC,EAAMunC,OAASvnC,EAAM4mC,UAC5ClkC,EAAcklC,GAAU,QAAiBN,EAAWtnC,EAAMunC,KAAK,CACnExqE,OACA7e,QACApW,MAAOmqF,IACJjyB,EAAM4mC,UAAU,CACnB7pE,OACA7e,gBACI/M,EACN,IAAIy2F,GAAYllC,EAChB,OAAO,QAAa,MAAO,CACzB,IAAO3lC,EAAKx3B,MACZ,MAAS,uBACR,CAAC+hG,EAAYtnC,EAAMunC,MAMC,QAAa9qB,GAAmB,CACrD,IAAO,gBACP,SAAY,CACViW,MAAO,CACLtG,SAAUtkF,EAAM29F,cAChBpuF,KAAM,QACNpC,KAAM8nB,EAAK8jD,SAGd,CACDtyB,QAAS,IAAM,CAACmU,MAhBW,QAAagwB,IAAO,QAAY,CAC3D,IAAO,OACP,SAAY5qF,EAAM29F,cAClB,KAAQ,QACR,KAAQ1oE,EAAK8jD,MACb,SAAY9jD,EAAKj1B,MAAMghC,UACtBmpD,GAAY,MAWVvvB,IAAe,QAAa,OAAQ,CACvC,MAAS,4BACR,CAAC3lC,EAAK8jD,MAAO/4E,EAAMu8E,UAAYnmE,EAAQi1D,EAAM5tE,MAAMyC,OAAS,IAAK,QAAa,OAAQ,CACvF,MAAS,6BACR,EAAC,QAAiB,UAAU,MAEjC,eAAgB,WACd,IAAK,IAAI4V,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzB,OAAO,QAAa,KAAW,KAAM,CAACkiD,EAAM,qBAAqBniD,GAAO/V,EAAMi+F,UAAW,QAAapf,GAAO,CAC3G,MAAS,sBACT,KAAQ7+E,EAAMi+F,UACb,WAAQ50F,GACb,GACA,KAEG,EAAAgkE,GAAA,GAAY,CACjB1G,YACAc,OACAuV,UACCyhB,EACL,IC9ZWsB,GAAgB,CAACtiG,EAAOgrD,EAAOxzB,IAC7B,MAATx3B,GAA0B,MAATgrD,GAAuB,EACrChrD,EAAMM,WAAWiiG,oBAAoB58F,QAAQqlD,EAAM1qD,WAAWiiG,qBAE1DC,IAAkB,EAAA3/B,EAAA,GAAa,CAC1C4/B,aAAchiG,SACdiiG,gBAAiB1hG,OACjB2hG,WAAY,CAACt+F,MAAOmQ,QACpBouF,WAAY,CACVl1E,KAAMlZ,OACNw0C,QAAS,gBAEX65C,SAAUzoC,SACT,UACI,SAAS0oC,GAAYzwB,EAAOrnB,EAAOt0C,GACxC,MAAMs6B,EAAQ,GAERpsC,EAAS8R,GAASsyC,SAAWs5C,GAC7B59F,IAAOgS,GAASisF,aAAa,QAAYjsF,EAAQisF,YACjDI,EAAsB/hG,OAAO0D,KAAKgS,GAASgsF,iBAAmB,CAAC,GAAGjgG,OACxE,IAAK4vE,GAAO5vE,OAAQ,OAAOuuC,EAC3BvzB,EAAM,IAAK,IAAIjb,EAAI,EAAGA,EAAI6vE,EAAM5vE,OAAQD,IAAK,CAC3C,MAAOg1B,EAAM4pE,EAAc5pE,IAAQ,QAAY66C,EAAM7vE,IAC/CwgG,EAAgB,CAAC,EACjBC,EAAiB,CAAC,EACxB,IAAIvvF,GAAS,EACb,IAAKs3C,GAAS+3C,EAAsB,KAAOrsF,GAASmsF,SAAU,CAC5D,GAAoB,kBAATrrE,EAAmB,CAC5B,MAAMmrE,EAAaj+F,GAAQ1D,OAAO0D,KAAK08F,GACvC,IAAK,MAAMr+F,KAAO4/F,EAAY,CAC5B,MAAM3iG,GAAQ,QAAoBohG,EAAar+F,GACzCmgG,EAAYxsF,GAASgsF,kBAAkB3/F,GAE7C,GADA2Q,EAAQwvF,EAAYA,EAAUljG,EAAOgrD,EAAOxzB,GAAQ5yB,EAAO5E,EAAOgrD,EAAOxzB,IAC1D,IAAX9jB,IAA0B,IAAVA,EACdwvF,EAAWF,EAAcjgG,GAAO2Q,EAAWuvF,EAAelgG,GAAO2Q,OAChE,GAA4B,UAAxBgD,GAASksF,WAClB,SAASnlF,CAEb,CACF,MACE/J,EAAQ9O,EAAO4yB,EAAMwzB,EAAOxzB,IACb,IAAX9jB,IAA0B,IAAVA,IAClBuvF,EAAe3nB,MAAQ5nE,GAG3B,MAAMyvF,EAAuBniG,OAAO0D,KAAKu+F,GAAgBxgG,OACnD2gG,EAAsBpiG,OAAO0D,KAAKs+F,GAAevgG,OACvD,IAAK0gG,IAAyBC,EAAqB,SACnD,GAA4B,UAAxB1sF,GAASksF,YAA0BQ,IAAwBL,IAAwBI,EAAsB,SAC7G,GAA4B,iBAAxBzsF,GAASksF,aAAkCQ,IAAwBL,IAAwBI,GAAuB,QACxH,CACAnyD,EAAMjsC,KAAK,CACT4T,MAAOnW,EACPsM,QAAS,IACJm0F,KACAD,IAGT,CACA,OAAOhyD,CACT,CACO,SAASqyD,GAAU9gG,EAAO8vE,EAAOrnB,EAAOt0C,GAC7C,MAAM4sF,GAAgB,QAAI,IACpBC,GAAkB,QAAI,IAAIp+F,KAC1Bq+F,GAAmB,SAAS,IAAM9sF,GAAShM,WAAY,QAAM2nE,GAAOvsE,KAAI0xB,GAAQ,CAACA,EAAM9gB,EAAQhM,UAAU8sB,OAAU,QAAM66C,KA6B/H,SAASoxB,EAAWjsE,GAClB,OAAO+rE,EAAgBvjG,MAAMuF,IAAIiyB,EAAKx3B,MACxC,CACA,OA/BA,SAAY,KACV,MAAM0jG,EAA0B,oBAAV14C,EAAuBA,KAAU,QAAMA,GACvD24C,EAA6B,kBAAXD,GAAyC,kBAAXA,EAAsB,GAAKlvF,OAAOkvF,GAClFxK,EAAU4J,GAAYU,EAAiBxjG,MAAO2jG,EAAU,CAC5DjB,gBAAiB,IACZngG,EAAMmgG,oBACN,QAAMhsF,GAASgsF,kBAEpB15C,QAASzmD,EAAMkgG,aACfE,WAAYpgG,EAAMogG,WAClBC,WAAYrgG,EAAMqgG,WAClBC,SAAUtgG,EAAMsgG,WAEZe,GAAgB,QAAMvxB,GACtBwxB,EAAiB,GACjBC,EAAmB,IAAI3+F,IAC7B+zF,EAAQhzF,SAAQuG,IACd,IAAI,MACFkM,EAAK,QACL7J,GACErC,EACJ,MAAM+qB,EAAOosE,EAAcjrF,GAC3BkrF,EAAe9+F,KAAKyyB,GACpBssE,EAAiBt+F,IAAIgyB,EAAKx3B,MAAO8O,EAAQ,IAE3Cw0F,EAActjG,MAAQ6jG,EACtBN,EAAgBvjG,MAAQ8jG,CAAgB,IAKnC,CACLR,gBACAC,kBACAE,aAEJ,CCxFA,SAASM,GAAgBr0F,EAAMZ,EAASrM,GACtC,GAAe,MAAXqM,EAAiB,OAAOY,EAC5B,GAAIrL,MAAMC,QAAQwK,GAAU,MAAM,IAAIshD,MAAM,uCAC5C,MAA0B,kBAAZthD,IAAyBA,GAAU,QAAa,KAAW,KAAM,EAAC,QAAa,OAAQ,CACnG,MAAS,0BACR,CAACY,EAAKwnB,OAAO,EAAGpoB,MAAY,QAAa,OAAQ,CAClD,MAAS,wBACR,CAACY,EAAKwnB,OAAOpoB,EAASrM,MAAW,QAAa,OAAQ,CACvD,MAAS,0BACR,CAACiN,EAAKwnB,OAAOpoB,EAAUrM,OAAciN,CAC1C,CACO,MAAMs0F,IAAyB,EAAAnhC,EAAA,GAAa,CACjDohC,gBAAiB,CACfv2E,KAAM,CAAC0sC,QAAS5lD,SAElB0vF,cAAe9pC,QACfryD,OAAQyM,UACLguF,GAAgB,CACjBG,WAAY,CAAC,cAEZ3C,SACA,QAAK7E,GAAoB,CAC1B5uB,WAAY,KACZt4B,KAAM,aACJ,CAAC,kBAAmB,QAAS,wBAC9B,QAAoB,CACrB7sB,YAAY,KAEb,iBACU+8E,IAAgB,UAAmB,CAC9ChkG,KAAM,gBACNoC,MAAOyhG,KACPx2B,MAAO,CACL,iBAAkBopB,IAAW,EAC7B,gBAAiB52F,IAAS,EAC1B,oBAAqBA,IAAS,EAC9B,cAAeA,IAAS,GAE1B,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,EACJpH,IACE,UACE27F,GAAgB,UAChB93B,GAAY,SAAW,GACvBgxB,GAAa,SAAW,GACxBkK,GAAe,SAAW,GAC1BnD,GAAW,UACXC,GAAoB,UACpBC,GAAQ,QAAgB5+F,EAAO,QAC/BynE,GAAO,QAAS,CACpBzkE,IAAK,IAAM47F,EAAMnhG,MACjBwF,IAAK2M,IACCgvF,EAAMnhG,QAAUmS,GAAK8uF,EAASjhG,OAAO,cAAc8R,OACvDqvF,EAAMnhG,MAAQmS,EAAC,IAGbkyF,GAAiB,SAAY,GAC7B73B,GAAQ,SAAS,IAAMw0B,EAAchhG,OAAOwsE,QAC5C3yD,GAAQ,SAAS,IAAMmwD,EAAKhqE,MAAQuC,EAAM49F,UAAY59F,EAAM69F,YAC5D,MACJ/tB,EAAK,YACLuiB,EAAW,aACXC,GACEH,GAASnyF,IACP,iBACJg/E,EAAgB,gBAChBC,IACE,SAAahV,GACXzkE,GAAS,QAAgBxF,EAAO,SAAU,IAC1CqrE,GAAQ,QAAgBrrE,EAAO,aAAc,IAAI4P,GAAKyiF,EAAkB,OAANziF,EAAa,CAAC,OAAQ,QAAYA,MAAKA,IAC7G,MAAMivF,EAAcvM,EAAa1iF,GACjC,OAAO5P,EAAMu8E,SAAWsiB,EAAcA,EAAY,IAAM,IAAI,IAExD/F,GAAe,SAAS,IACS,oBAAvB94F,EAAM84F,aAA8B94F,EAAM84F,aAAaztB,EAAM5tE,OAAuC,kBAAvBuC,EAAM84F,aAA4B94F,EAAM84F,aAAeztB,EAAM5tE,MAAMyC,SAE1Ju3F,EAAOP,MACP,cACJ6J,EAAa,WACbG,GACEJ,GAAU9gG,EAAO8vE,GAAO,IAAM6nB,EAAWl6F,MAAQ,GAAK+H,EAAO/H,QAC3DwhG,GAAe,SAAS,IACxBj/F,EAAM+9F,aACDgD,EAActjG,MAAM4E,QAAO0/F,IAAiB12B,EAAM5tE,MAAMw7D,MAAKx0B,GAAKA,EAAEhnC,QAAUskG,EAAatkG,UAE7FsjG,EAActjG,QAEjB+hG,GAAW,SAAS,OAASx/F,EAAM09F,QAASxlC,EAAMunC,QAClDuC,GAAmB,SAAS,IAAMxC,EAAS/hG,SAAWy6D,EAAM4mC,YAC5D/Q,GAAiB,SAAS,IAAM1iB,EAAM5tE,MAAM8F,KAAIu7F,GAAaA,EAAU9+F,MAAMvC,UAC7EwkG,GAAiB,SAAS,KAC9B,MAAMC,GAAwC,IAA1BliG,EAAM0hG,iBAAsD,UAA1B1hG,EAAM0hG,iBAA+Bl8F,EAAO/H,QAAUwhG,EAAaxhG,MAAM,IAAIs7E,MACnI,OAAOmpB,GAAejD,EAAaxhG,MAAMyC,OAAS,IAAMy3F,EAAWl6F,QAAUokG,EAAapkG,KAAK,IAE3FyhG,GAAe,SAAS,IAAMl/F,EAAM89F,aAAemB,EAAaxhG,MAAMyC,QAAUF,EAAM8iF,UAAY2U,GAAMlB,WAAW94F,QACnHy/F,GAAU,UACVkC,EAAanC,GAAaC,EAASuB,GACzC,SAAS9E,EAAQ52F,GACX/C,EAAMo+F,cACR32B,EAAKhqE,OAAQ,GAEf+H,EAAO/H,MAAQ,EACjB,CACA,SAAS4hG,IACHH,EAAazhG,QACjBgqE,EAAKhqE,OAAQ,EACf,CACA,SAAS0kG,EAAoBp/F,GACvBm8F,EAAazhG,QACbkpE,EAAUlpE,QACZsF,EAAEioB,iBACFjoB,EAAE0rB,mBAEJg5C,EAAKhqE,OAASgqE,EAAKhqE,MACrB,CACA,SAAS8/F,EAAcx6F,IACjB,QAAeA,IACjB07F,EAAchhG,OAAO8uE,OAEzB,CACA,SAASD,EAAUvpE,GACjB,GAAI/C,EAAM8iF,UAAY2U,GAAMlB,WAAW94F,MAAO,OAC9C,MAAMo8F,EAAiB4E,EAAchhG,MAAMo8F,eACrC35F,EAASmrE,EAAM5tE,MAAMyC,OAqB3B,IApBI4hG,EAAerkG,OAAS,GAAK,CAAC,QAAS,YAAa,WAAWwP,SAASlK,EAAEvC,OAC5EuC,EAAEioB,iBAEA,CAAC,QAAS,aAAa/d,SAASlK,EAAEvC,OACpCinE,EAAKhqE,OAAQ,GAEX,CAAC,UAAUwP,SAASlK,EAAEvC,OACxBinE,EAAKhqE,OAAQ,GAEXwkG,EAAexkG,OAAS,CAAC,QAAS,OAAOwP,SAASlK,EAAEvC,OAAS6qE,EAAM5tE,MAAMw7D,MAAK5lD,IAChF,IAAI,MACF5V,GACE4V,EACJ,OAAO5V,IAAUwhG,EAAaxhG,MAAM,GAAGA,KAAK,KAE5Cu/E,EAAOiiB,EAAaxhG,MAAM,IAEd,cAAVsF,EAAEvC,KAAuByhG,EAAexkG,OAC1Cy/F,EAAQz/F,OAAO8uE,MAAM,QAEnB,CAAC,YAAa,UAAUt/D,SAASlK,EAAEvC,KAAM,CAC3C,IAAKR,EAAMu8E,UAAYylB,EAAiBvkG,OAAS4tE,EAAM5tE,MAAMyC,OAAS,IAAMsF,EAAO/H,MAAO,OAAOu/E,EAAO3R,EAAM5tE,MAAM,IAAI,GACxH,IAAKqkG,EAAerkG,MAAO,CACzB,MAAM2kG,EAAyBN,EAAerkG,MAC9Cu/E,EAAO3R,EAAM5tE,MAAMqkG,EAAerkG,QAAQ,GAC1CqkG,EAAerkG,MAAQ2kG,GAA0BliG,EAAS,EAAIA,EAAS,EAAIkiG,CAC7E,KAAqB,cAAVr/F,EAAEvC,KAAwBgF,EAAO/H,QAC1CqkG,EAAerkG,MAAQyC,EAAS,EAEpC,CACA,GAAKF,EAAMu8E,SAAX,CACA,GAAc,cAAVx5E,EAAEvC,IAAqB,CACzB,GAAIshG,EAAerkG,MAAQ,GAAKo8F,EAAiB,EAAG,OACpD,MAAMrrF,EAAOszF,EAAerkG,OAAS,EAAIqkG,EAAerkG,MAAQ,EAAIyC,EAAS,EACzEmrE,EAAM5tE,MAAM+Q,GACdszF,EAAerkG,MAAQ+Q,GAEvBszF,EAAerkG,OAAS,EACxBghG,EAAchhG,MAAM4kG,kBAAkB78F,EAAO/H,OAAOyC,OAAQsF,EAAO/H,OAAOyC,QAE9E,CACA,GAAc,eAAV6C,EAAEvC,IAAsB,CAC1B,GAAIshG,EAAerkG,MAAQ,EAAG,OAC9B,MAAMmE,EAAOkgG,EAAerkG,MAAQ,EAChC4tE,EAAM5tE,MAAMmE,GACdkgG,EAAerkG,MAAQmE,GAEvBkgG,EAAerkG,OAAS,EACxBghG,EAAchhG,MAAM4kG,kBAAkB,EAAG,GAE7C,CApB2B,CAqB7B,CACA,SAASrb,EAASjkF,GAChB,IAAI,QAAgB07F,EAAchhG,MAAO,eAAgB,QAAgBghG,EAAchhG,MAAO,qBAAsB,CAClH,MAAMw3B,EAAO66C,EAAMryE,MAAM2iB,MAAK6U,GAAQA,EAAK8jD,QAAUh2E,EAAEhD,OAAOtC,QAC1Dw3B,GACF+nD,EAAO/nD,EAEX,CACF,CACA,SAASw3C,IACHzsE,EAAM+sE,OACR4xB,EAAkBlhG,OAAO+9F,uBAE7B,CACA,SAAS/vB,IACH9E,EAAUlpE,QACZk6F,EAAWl6F,OAAQ,EACnBghG,EAAchhG,OAAO8uE,QAEzB,CACA,SAAShF,EAAUxkE,GACjB4jE,EAAUlpE,OAAQ,EAClBgJ,YAAW,KACTo7F,EAAapkG,OAAQ,CAAI,GAE7B,CACA,SAAS+pE,EAAWzkE,GAClB8+F,EAAapkG,OAAQ,CACvB,CACA,SAAS6kG,EAAmB1yF,GACjB,MAALA,IAAmB,KAANA,GAAa5P,EAAMu8E,UAAaylB,EAAiBvkG,SAAO4tE,EAAM5tE,MAAQ,GACzF,CACA,MAAM8kG,GAAc,SAAW,GAG/B,SAASvlB,EAAO/nD,GACd,IAAIhyB,IAAMmG,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,KAAmBA,UAAU,GACzE,GAAK6rB,IAAQA,EAAKj1B,MAAMghC,SACxB,GAAIhhC,EAAMu8E,SAAU,CAClB,MAAMnmE,EAAQi1D,EAAM5tE,MAAMguC,WAAUqzD,GAAa9+F,EAAMslF,gBAAgBwZ,EAAUrhG,MAAOw3B,EAAKx3B,SACvFgQ,EAAa,MAAPxK,IAAgBmT,EAAQnT,EACpC,IAAKmT,EAAO,CACV,MAAM3Y,EAAQgQ,EAAM,IAAI49D,EAAM5tE,MAAOw3B,GAAQ,IAAIo2C,EAAM5tE,OACvDA,EAAM0F,OAAOiT,EAAO,GACpBi1D,EAAM5tE,MAAQA,CAChB,MAAWgQ,IACT49D,EAAM5tE,MAAQ,IAAI4tE,EAAM5tE,MAAOw3B,IAE7Bj1B,EAAM2hG,gBACRn8F,EAAO/H,MAAQ,GAEnB,KAAO,CACL,MAAMgQ,GAAc,IAARxK,EACZooE,EAAM5tE,MAAQgQ,EAAM,CAACwnB,GAAQ,GAC7BzvB,EAAO/H,MAAQgQ,IAAQu0F,EAAiBvkG,MAAQw3B,EAAK8jD,MAAQ,IAG7D,SAAS,KACPtR,EAAKhqE,OAAQ,EACbk6F,EAAWl6F,OAAQ,CAAI,GAE3B,CACF,CAyNA,OAxNA,QAAMkpE,GAAW,CAACjgD,EAAK4hD,KACjB5hD,IAAQ4hD,IACR5hD,GACF67E,EAAY9kG,OAAQ,EACpB+H,EAAO/H,MAAQuC,EAAMu8E,UAAYylB,EAAiBvkG,MAAQ,GAAKwU,OAAOo5D,EAAM5tE,MAAM0rE,IAAI,IAAInpE,MAAM+4E,OAAS,IACzG4e,EAAWl6F,OAAQ,GACnB,SAAS,IAAM8kG,EAAY9kG,OAAQ,MAE9BuC,EAAMu8E,UAA4B,MAAhB/2E,EAAO/H,QAAe4tE,EAAM5tE,MAAQ,IAC3DgqE,EAAKhqE,OAAQ,EACR4tE,EAAM5tE,MAAMw7D,MAAKmzB,IACpB,IAAI,MACFrT,GACEqT,EACJ,OAAOrT,IAAUvzE,EAAO/H,KAAK,MAC3B+H,EAAO/H,MAAQ,IACnBqkG,EAAerkG,OAAS,GAC1B,KAEF,QAAM+H,GAAQkhB,IACPigD,EAAUlpE,QAAS8kG,EAAY9kG,QAChCipB,IAAK+gD,EAAKhqE,OAAQ,GACtBk6F,EAAWl6F,OAASipB,EAAG,KAEzB,QAAM+gD,GAAM,KACV,IAAKznE,EAAM+9F,cAAgBt2B,EAAKhqE,OAAS4tE,EAAM5tE,MAAMyC,OAAQ,CAC3D,MAAMkW,EAAQ6oF,EAAaxhG,MAAMguC,WAAUxW,GAAQo2C,EAAM5tE,MAAMw7D,MAAKx0B,GAAKxP,EAAKx3B,QAAUgnC,EAAEhnC,UAC1F,MAAcuD,OAAO4F,uBAAsB,KACzCwP,GAAS,GAAKuoF,EAAkBlhG,OAAOg+F,cAAcrlF,EAAM,GAE/D,MAEF,SAAM,IAAMpW,EAAM8vE,QAAO,CAACmW,EAAQ3d,KAC5Bb,EAAKhqE,OACLkpE,EAAUlpE,QAAU6qE,EAAOpoE,QAAU+lF,EAAO/lF,SAC9CunE,EAAKhqE,OAAQ,EACf,KAEF,EAAAmvE,EAAA,IAAU,KACR,MAAM8yB,MAAc1/F,EAAM89F,YAAcmB,EAAaxhG,MAAMyC,QAAUg4D,EAAM,iBAAmBA,EAAM,gBAAkBA,EAAM,YACtH0/B,EAAUvsB,EAAM5tE,MAAMyC,OAAS,EAC/By/F,EAAiBzG,GAAW/rB,YAAYntE,GAC9C,OAAO,QAAak5F,IAAY,QAAY,CAC1C,IAAOuF,GACNkB,EAAgB,CACjB,WAAcn6F,EAAO/H,MACrB,sBAAuB,CAAC2vE,GAAU5nE,EAAO/H,MAAQ2vE,EAAQk1B,GACzD,QAAW37B,EAAUlpE,MACrB,mBAAoB2vE,GAAUzG,EAAUlpE,MAAQ2vE,EAChD,gBAAmB/B,EAAMu0B,cACzB,aAAgB9G,EAAar7F,MAC7B,MAASm6F,EACT,SAAY5Q,EACZ,MAAS,CAAC,iBAAkB,oBAAmBhnF,EAAMu8E,SAAW,WAAa,UAAY,CACvF,8BAA+B9U,EAAKhqE,MACpC,0BAA2BuC,EAAM09F,MACjC,mCAAoCsE,EAAiBvkG,MACrD,kCAAmCqkG,EAAerkG,OAAS,GAC1DuC,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,SAAY3E,EAAM8iF,SAClB,YAAe8U,OAAUvuF,EAAYrJ,EAAM03E,YAC3C,gBAAiBiiB,EACjB,sBAAuB0F,EACvB,UAAa/yB,IACX,IACCpU,EACHzR,QAAS,KAAM,QAAa,KAAW,KAAM,EAAC,QAAawsC,IAAO,QAAY,CAC5E,IAAOyL,EACP,WAAcj3B,EAAKhqE,MACnB,sBAAuB2vE,GAAU3F,EAAKhqE,MAAQ2vE,EAC9C,UAAa,SACb,aAAgB,0BAChB,SAAY8xB,EAAazhG,MACzB,MAASuC,EAAM+sE,MACf,UAAa,IACb,aAAe,EACf,qBAAuB,EACvB,WAAc/sE,EAAM6kB,WACpB,aAAgB4nD,EAChB,aAAgBhB,GACfzrE,EAAMk+F,WAAY,CACnBz3C,QAAS,IAAM,CAACi5C,IAAW,QAAa/M,IAAO,QAAY,CACzD,IAAOuK,EACP,SAAYnP,EAAetwF,MAC3B,eAAkBuC,EAAMu8E,SAAW,cAAgB,qBACnD,YAAex5E,GAAKA,EAAEioB,iBACtB,UAAauyE,EACb,UAAah2B,EACb,WAAcC,EACd,SAAY,KACZ,YAAa,SACb,MAASxnE,EAAMq+F,WAAar+F,EAAMiqE,OACjCm1B,EAAYp/F,EAAMg+F,WAAY,CAC/Bv3C,QAAS,IAAM,CAACyR,EAAM,qBAAsB+mC,EAAaxhG,MAAMyC,SAAWF,EAAM89F,aAAe5lC,EAAM,iBAAkB,QAAa83B,GAAW,CAC7I,MAASltF,EAAE9C,EAAMm+F,aAChB,QAAQ,QAAapB,GAAgB,CACtC,IAAO4B,EACP,YAAc,EACd,MAASM,EAAaxhG,OACrB,CACDgpD,QAAS6lC,IACP,IAAI,KACFr3D,EAAI,MACJ7e,EAAK,QACLkkF,GACEhO,EACJ,MAAMiF,GAAY,QAAWt8D,EAAKj1B,MAAO,CACvC26D,IAAK2/B,EACL95F,IAAK4V,EACL0uD,UAAQm9B,EAAexkG,OAAmB,IAAV2Y,SAAqB/M,EACrDsoB,QAAS,IAAMqrD,EAAO/nD,EAAM,QAE9B,OAAOijC,EAAMjjC,OAAO,CAClBA,OACA7e,QACApW,MAAOuxF,MACH,QAAavB,IAAW,QAAYuB,EAAW,CACnD,KAAQ,WACN,CACFtoE,QAASgkE,IACP,IAAI,WACFpQ,GACEoQ,EACJ,OAAO,QAAa,KAAW,KAAM,CAACjtF,EAAMu8E,WAAav8E,EAAM+9F,cAAe,QAAahX,GAAc,CACvG,IAAO9xD,EAAKx3B,MACZ,WAAco/E,EACd,QAAU,EACV,SAAY,MACX,WAAQxzE,EAAW4rB,EAAKj1B,MAAMkrF,gBAAiB,QAAapG,GAAS,CACtE,MAAS7vD,EAAKj1B,MAAMkrF,eACnB,MAAOj2D,EAAKj1B,MAAM4iF,cAAe,QAAa/D,GAAO,CACtD,KAAQ5pD,EAAKj1B,MAAM4iF,aAClB,OAAO,EAEZ7J,MAAO,IACE4e,EAAWl6F,MAAQw3B,EAAK8jD,MAAQyoB,GAAgBvsE,EAAK8jD,MAAOmoB,EAAWjsE,IAAO8jD,MAAOvzE,EAAO/H,OAAOyC,QAAU,IAEtH,IAEFg4D,EAAM,yBAEVmT,EAAM5tE,MAAM8F,KAAI,CAAC0xB,EAAM7e,KACzB,SAASypF,EAAY98F,GACnBA,EAAE0rB,kBACF1rB,EAAEioB,iBACFgyD,EAAO/nD,GAAM,EACf,CACA,MAAMk1D,EAAY,CAChB,gBAAiB0V,EACjB,SAAAvzB,CAAUvpE,GACM,UAAVA,EAAEvC,KAA6B,MAAVuC,EAAEvC,MAC3BuC,EAAEioB,iBACFjoB,EAAE0rB,kBACFoxE,EAAY98F,GACd,EACA,WAAA6vF,CAAY7vF,GACVA,EAAEioB,iBACFjoB,EAAE0rB,iBACJ,EACAu7C,YAAY,EACZ,2BAAuB3gE,GAEnBy2F,EAAUN,EAAS/hG,QAAUy6D,EAAMunC,OAASvnC,EAAM4mC,UAClDlkC,EAAcklC,GAAU,QAAiBN,EAAS/hG,MAAQy6D,EAAMunC,KAAK,CACzExqE,OACA7e,QACApW,MAAOmqF,IACJjyB,EAAM4mC,UAAU,CACnB7pE,OACA7e,gBACI/M,EACN,IAAIy2F,GAAYllC,EAChB,OAAO,QAAa,MAAO,CACzB,IAAO3lC,EAAKx3B,MACZ,MAAS,CAAC,4BAA6B2Y,IAAU0rF,EAAerkG,OAAS,CAAC,sCAAuCuhF,EAAiBvhF,QAClI,MAAS2Y,IAAU0rF,EAAerkG,MAAQwhF,EAAgBxhF,MAAQ,CAAC,GAClE,CAAC+hG,EAAS/hG,MAASy6D,EAAMunC,MAML,QAAa9qB,GAAmB,CACrD,IAAO,gBACP,SAAY,CACViW,MAAO,CACLtG,SAAUtkF,EAAM29F,cAChBpuF,KAAM,QACNpC,KAAM8nB,EAAK8jD,SAGd,CACDtyB,QAAS,IAAM,CAACmU,MAhBiB,QAAagwB,IAAO,QAAY,CACjE,IAAO,OACP,SAAY5qF,EAAM29F,cAClB,KAAQ,QACR,KAAQ1oE,EAAK8jD,MACb,SAAY9jD,EAAKj1B,MAAMghC,UACtBmpD,GAAY,MAWVvvB,IAAe,QAAa,OAAQ,CACvC,MAAS,kCACR,CAAC3lC,EAAK8jD,MAAO/4E,EAAMu8E,UAAYnmE,EAAQi1D,EAAM5tE,MAAMyC,OAAS,IAAK,QAAa,OAAQ,CACvF,MAAS,mCACR,EAAC,QAAiB,UAAU,MAEjC,eAAgB,WACd,IAAK,IAAI4V,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzB,OAAO,QAAa,KAAW,KAAM,CAACkiD,EAAM,qBAAqBniD,GAAO/V,EAAMi+F,UAAW,QAAapf,GAAO,CAC3G,MAAS,4BACT,KAAQ7+E,EAAMi+F,SACd,YAAekE,EACf,QAAW,KACX,aAAcr/F,EAAEwU,EAAM7Z,OACtB,MAASqF,EAAEwU,EAAM7Z,OACjB,SAAY,MACX,WAAQ4L,GACb,GACA,KAEG,EAAAgkE,GAAA,GAAY,CACjB1G,YACAgxB,aACAlwB,OACAjiE,SACAu7F,gBACA/jB,UACCyhB,EACL,IC1dW+D,IAAkB,EAAAliC,EAAA,GAAa,CAC1CmiC,SAAU5qC,QACVoS,MAAOh4D,OACPywF,QAAS,CAACrwF,OAAQJ,QAClB0wF,IAAK9qC,QACLihB,SAAUjhB,QACV+mB,KAAM,MACN3J,OAAQpd,QACRvgD,MAAO,CACL6T,KAAMlZ,OACNw0C,QAAS,kBAEXl7C,IAAK,CAAC8G,OAAQJ,QACd+3D,WAAY,CACV7+C,KAAM0sC,QACNpR,SAAS,GAEXvZ,QAAS,CAAC76B,OAAQJ,QAClBk7B,QAAS,CAAC96B,OAAQJ,QAClB2wF,UAAW3wF,WACR,YACAsuE,GAAkB,CACnBv7E,SAAU,eAETowE,QACAtE,QACA,cACA,QAAoB,CACrBjsD,WAAY,6BAEb,UACUg+E,IAAS,UAAmB,CACvCjlG,KAAM,SACN07D,cAAc,EACdt5D,MAAOwiG,KACP,KAAAvqC,CAAMj4D,EAAO/B,GACX,MAAM,uBACJksE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,eACJw1E,GACED,GAAWv1E,IACT,EACJ8C,IACE,WACE,iBACJk8E,EAAgB,gBAChBC,IACE,UAAa,QAAMj/E,EAAO,eACxB,aACJsrE,IACE,WACE,eACJoV,GACEF,GAAYxgF,GAAO,GAAMqK,IAC3B,MAAMigB,EAAOtqB,EAAM84E,SAAW94E,EAAM2iG,IAAM,EAAI,EAAI3iG,EAAM2iG,IAAM,EAAI,GAClE,OAAOr4E,GAAQ,CAAC,MAAO,UAAUrd,SAAS5C,KAAUrK,EAAMmtC,SAAW,GAAK,CAAC,OAAQ,SAASlgC,SAAS5C,KAAUrK,EAAMktC,SAAW,GAAK,EAAE,IAkCzI,OAhCA,EAAA0/B,EAAA,IAAU,KACR,MAAMnvE,EAAQ4U,OAAOrS,EAAM0iG,SACrBA,GAAW1iG,EAAMuL,KAAO2L,MAAMzZ,GAASuC,EAAM0iG,QAAUjlG,IAAUuC,EAAMuL,IAAM9N,EAAQ,GAAGuC,EAAMuL,QAC7Fu3F,EAAYp9C,IAAS,QAAaznD,EAAIynD,MAAO,CAAC,cAAe,aAAc,YAAa,OAAQ,UACvG,OAAO,QAAa1lD,EAAMuN,KAAK,QAAY,CACzC,MAAS,CAAC,UAAW,CACnB,oBAAqBvN,EAAMyiG,SAC3B,eAAgBziG,EAAM2iG,IACtB,oBAAqB3iG,EAAM84E,SAC3B,kBAAmB94E,EAAMi1E,QACxBj1E,EAAMy4D,QACR/S,EAAO,CACR,MAAS1lD,EAAM2E,QACb,CACF8hD,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,oBACR,CAACxoD,EAAIi6D,MAAMzR,aAAa,QAAa,KAAiB,CACvD,WAAczmD,EAAM6kB,YACnB,CACD4hC,QAAS,IAAM,EAAC,SAAgB,QAAa,QAAQ,QAAY,CAC/D,MAAS,CAAC,iBAAkB6kB,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO+3E,EAAe/3E,MAAOuhF,EAAiBvhF,OACrH,MAAS,CAAC2sE,EAAsB3sE,MAAOwhF,EAAgBxhF,MAAOuC,EAAMi1E,OAAS,CAAC,EAAIyL,EAAejjF,OACjG,cAAe,OACf,aAAcqF,EAAE9C,EAAMsX,MAAO7Z,GAC7B,YAAa,SACb,KAAQ,UACPqlG,GAAa,CAAC9iG,EAAM2iG,SAAMt5F,EAAYpL,EAAIi6D,MAAM6qC,MAAQ9kG,EAAIi6D,MAAM6qC,UAAY/iG,EAAM4+E,MAAO,QAAaC,GAAO,CAChH,KAAQ7+E,EAAM4+E,MACb,MAAQ8jB,IAAW,CAAC,CAAC,KAAQ1iG,EAAMgqE,qBAExC,IAEG,CAAC,CACV,ICxGWg5B,IAA0B,EAAA1iC,EAAA,GAAa,CAClD2J,MAAOh4D,OACP0mE,QAAS1mE,WACN,UACF,kBACUgxF,IAAiB,UAAmB,CAC/CrlG,KAAM,iBACNoC,MAAOgjG,KACP,KAAA/qC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAaJ,OAZA,SAAgB,CACdkvE,KAAM,CACJnP,MAAOjqE,EAAMiqE,MACb0O,QAAS34E,EAAM24E,QACfoK,MAAM,EACN1J,QAAS,WAGb,EAAAzM,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,mBAAoB5sE,EAAMy4D,OACpC,MAASz4D,EAAM2E,OACd,CAACuzD,EAAMzR,gBACH,CAAC,CACV,IC5BWy8C,GAAclf,GAAuB,iBCuBrCmf,IAAmB,EAAA7iC,EAAA,GAAa,CAC3C8iC,OAAQnxF,OACR0tE,QAAS1tE,OACTg4D,MAAOh4D,OACP2sE,KAAM,MACNyR,MAAOp+E,OACP+wE,QAASnrB,QACTx3B,OAAQw3B,QACR1qD,KAAM8E,UACH+lE,SACA,YACAuD,SACA,cACA,SAAiB,CAClBkN,OAAQ,UAEPrQ,QACAmI,QACA6B,QACAhN,QACAtE,QACA,WACF,WACUuyB,IAAU,UAAmB,CACxCzlG,KAAM,UACNoC,MAAOmjG,KACP,KAAAlrC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,uBACJigE,EAAsB,sBACtBC,IACE,SAAmBpqE,EAAO,YACxB,cACJm4E,GACED,GAAUl4E,IACR,eACJy7E,GACED,GAAWx7E,IACT,eACJ2oF,EAAc,OACdF,IACE,SAAWzoF,IACT,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,eACJ0gF,GACEF,GAAYxgF,IACV,gBACJsiF,GACED,GAAYriF,IACV,eACJw1E,GACED,GAAWv1E,IACT,aACJsrE,IACE,QAAatrE,GACXiqE,GAAQ,QAAMjqE,EAAO,SACrB24E,GAAU,QAAM34E,EAAO,YAC7B,SAAgB,CACdijG,eAAgB,CACdh5B,QACA0O,cAGJ,EAAA/L,EAAA,IAAU,KACR,MAAMqE,KAAajxE,EAAMmN,OAAQ+qD,EAAM/qD,MACjCm+E,KAAqBtrF,EAAMojG,SAAUpjG,EAAM4+E,MAC3C4E,KAAgB8H,IAAmBpzB,EAAMjvC,SAC/C,OAAO,QAAajpB,EAAMuN,IAAK,CAC7B,MAAS,CAAC,WAAY,CACpB,oBAAqBvN,EAAMgjF,SAAWyF,EAAOhrF,MAC7C,mBAAoBuC,EAAMqgC,OAC1B,CAAC,aAAargC,EAAMqwF,gBAAiBrwF,EAAMqwF,OAC1C/kB,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO06E,EAAc16E,MAAOg+E,EAAeh+E,MAAOkrF,EAAelrF,MAAO86E,EAAiB96E,MAAO6kF,EAAgB7kF,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACjM,MAAS,CAAC2R,EAAsB3sE,MAAOquE,EAAgBruE,MAAOijF,EAAejjF,MAAOuC,EAAM2E,OAC1F,KAAQ,UACP,CACD8hD,QAAS,IAAM,CAAC+8B,IAAc,QAAa,MAAO,CAChD,IAAO,UACP,MAAS,qBACR,CAAEtrB,EAAMjvC,SAMA,QAAa0rD,GAAmB,CACzC,IAAO,mBACP,UAAa2W,EACb,SAAY,CACVxG,QAAS,CACP7a,MAAOA,EAAMxsE,MACbk7E,QAASA,EAAQl7E,MACjBmhF,KAAM5+E,EAAM4+E,KACZ/0C,MAAO7pC,EAAMojG,UAGhBlrC,EAAMjvC,UAjBY,QAAa67D,GAAS,CACzC,IAAO,iBACP,MAAS7a,EAAMxsE,MACf,QAAWk7E,EAAQl7E,MACnB,KAAQuC,EAAM4+E,KACd,MAAS5+E,EAAMojG,QACd,SAWkB,QAAa,MAAO,CACvC,MAAS,qBACR,CAACnyB,IAAW,QAAaiyB,GAAa,CACvC,IAAO,QACN,CACDz8C,QAAS,IAAM,CAACyR,EAAM/qD,UAAYnN,EAAMmN,QACtC+qD,EAAMzR,cAAeyR,EAAMorC,UAAW,QAAaL,GAAgB,CACrE,IAAO,WACN/qC,EAAMorC,WACT,GAEN,ICtHWC,IAA6B,EAAAjjC,EAAA,GAAa,CACrD6b,UAAWlqE,OACX0tE,QAAS1tE,OACTg4D,MAAOh4D,OACPuxF,KAAM3rC,QACNxT,KAAM,CACJl5B,KAAMlZ,OACNuuD,UAAW5wD,IAAMA,GAAK,CAAC,aAAc,SAAS3C,SAAS2C,IAEzDsB,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEXqe,OAAQ,CACN35C,KAAM0sC,QACNpR,SAAS,MAERuxB,SACA,YACAuD,QACAnD,QACAhD,QACArH,EAAoB,CACrBnwE,KAAM,yBAELkzE,EAAa,CACdvjE,IAAK,cAEJ+uE,GAAe,CAChBG,cAAe,wBAEd,WACF,qBACUgnB,IAAoB,UAAmB,CAClD7lG,KAAM,oBACNoC,MAAOujG,KACPt4B,MAAO,CACL,gBAAiBxtE,IAAS,EAC1B,oBAAqBA,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,WACE,cACJ6M,GACED,GAAUl4E,IACR,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,aAC9B,eACJy7E,GACED,GAAWx7E,IACT,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,IACT,cACJ26E,GACED,KACExpE,GAAS,SAAS,IAAMmB,OAAOrS,EAAMkR,SAA6B,gBAAlBlR,EAAM24E,QAA4B,EAAI,IAAwB,YAAlB34E,EAAM24E,QAAwB,GAAK,KAC/H1lC,GAAW,QAAgBjzC,EAAO,SAAUA,EAAM8kE,SAClD,iBACJyJ,GACEF,EAAc,CAChBhvE,GAAIW,EAAMpC,KACVs8C,OAAO,SAAS,IAAMjjC,SAASjX,EAAMk6C,MAAO,MAC5C9Z,UAAU,SAAS,IAAM,WACzB6vC,YAAY,SAAS,IAAMh9B,EAASx1C,MAAQyT,EAAOzT,MAAQ,IAC3DyyE,YAAah/D,EACb4zD,OAAQ7xB,EACRq3B,UAAU,QAAMtqE,EAAO,cA8BzB,OA5BAi9E,GAASj9E,EAAOk+E,KAChB,SAAgB,CACd9E,KAAM,CACJ+C,WAAW,QAAMn8E,EAAO,aACxBiqE,OAAO,QAAMjqE,EAAO,SACpB24E,SAAS,QAAM34E,EAAO,WACtBgjF,SAAS,SAAS,IAAqB,eAAfhjF,EAAMqkD,OAC9Bg1B,QAAS,SAEV,CACD3E,QAAQ,KAEV,EAAA9H,EAAA,IAAU,KACD,QAAa5sE,EAAMuN,IAAK,CAC7B,MAAS,CAAC,sBAAuB,CAC/B,8BAA+B0lC,EAASx1C,MACxC,4BAA6BuC,EAAMwjG,KACnC,6BAA6C,UAAfxjG,EAAMqkD,MACnCinB,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO06E,EAAc16E,MAAOg+E,EAAeh+E,MAAO86E,EAAiB96E,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACpJ,MAAS,CAAC2R,EAAsB3sE,MAAO8wE,EAAiB9wE,MAAO,CAC7DyT,QAAQ,QAAcA,EAAOzT,QAC5Bk9E,EAAcl9E,MAAOuC,EAAM2E,QAC7B,CACD8hD,QAAS,IAAM,CAACyR,EAAMzR,UAAW,QAAa,MAAO,CACnD,MAAS,gCACR,CAACyR,EAAMzR,iBAGP,CAAC,CACV,ICnHWi9C,IAAmB,EAAApjC,EAAA,GAAa,CAC3CqjC,WAAY9rC,QACZ+rC,YAAa,CACXz4E,KAAM0sC,QACNpR,SAAS,GAEXo9C,WAAYhsC,YACT,QAAkB,CACnBxyD,OAAQ,gBACRq/D,eAAgB,QAChB7/C,WAAY,CACVwhC,UAAWmsB,GAEbr0B,OAAQ,QAET,WACU2lD,IAAU,UAAmB,CACxClmG,KAAM,UACNoC,MAAO0jG,KACPz4B,MAAO,CACL,oBAAqBxtE,IAAS,EAC9BytE,WAAY,KAAM,EAClBC,WAAY,KAAM,GAEpB,KAAAlT,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM+oC,GAAW,QAAgBjzC,EAAO,eAClC,QACJgsE,IACE,UACEiB,GAAU,UAChB,SAAS1F,EAAUxkE,GACjB,MAAM+/D,EAAS//D,EAAE4mF,cACX5mB,EAAQhgE,EAAEhD,OAChB,GAAI+iE,IAAWC,GAASkK,EAAQxvE,OAAOikE,WAEvCuL,EAAQxvE,OAAO6rE,YAEd,CAACnrE,SAAU8uE,EAAQxvE,MAAMikE,WAAWz0D,SAAS81D,KAE7CkK,EAAQxvE,MAAMikE,UAAU10D,SAAS+1D,GAAQ,CACxC,MAAMinB,GAAY,QAAkB/c,EAAQxvE,MAAMikE,WAClD,IAAKsoB,EAAU9pF,OAAQ,OACvB,MAAM6jG,EAAe/Z,EAAU,GACzBga,EAAcha,EAAUA,EAAU9pF,OAAS,GAC7C4iE,IAAWihC,EACbC,EAAYz3B,QAEZw3B,EAAax3B,OAEjB,CACF,CAWA,SAASE,IACPppE,EAAK,cACD4pE,EAAQxvE,OAAOikE,YAAcuL,EAAQxvE,MAAMikE,UAAU10D,SAAS7O,SAAS6F,gBACzEipE,EAAQxvE,MAAMikE,UAAU6K,MAAM,CAC5B0d,eAAe,GAGrB,CACA,SAASxe,IACPpoE,EAAK,aACP,CAmDA,OAvEA,SAAgB,KACdlF,SAAS4F,oBAAoB,UAAWwjE,EAAU,IAEhD,OACF,SAAM,IAAMt0B,EAASx1C,OAASuC,EAAM4jG,cAAal9E,IAC/CA,EAAMvoB,SAAS2F,iBAAiB,UAAWyjE,GAAappE,SAAS4F,oBAAoB,UAAWwjE,EAAU,GACzG,CACD7D,WAAW,KAcf,QAAMzwB,GAAU4xB,UACTn+C,UACG,UACNumD,EAAQxvE,MAAMgpE,aAAa8F,MAAM,CAC/B0d,eAAe,IAEnB,KAEF,EAAArd,EAAA,IAAU,KACR,MAAMM,EAAerC,GAAA,EAASsC,YAAYntE,GACpCgmE,GAAiB,QAAW,CAChC,gBAAiB,UAChBhmE,EAAMgmE,gBACHyE,GAAe,QAAW,CAC9Bw5B,UAAW,GACVjkG,EAAMyqE,cACT,OAAO,QAAaI,GAAA,GAAU,QAAY,CACxC,IAAOoC,EACP,MAAS,CAAC,WAAY,CACpB,uBAAwBjtE,EAAM2jG,WAC9B,uBAAwB3jG,EAAM6jG,YAC7B7jG,EAAMy4D,OACT,MAASz4D,EAAM2E,OACduoE,EAAc,CACf,WAAcj6B,EAASx1C,MACvB,sBAAuB2vE,GAAUn6B,EAASx1C,MAAQ2vE,EAClD,aAAc,OACd,eAAkBpH,EAClB,aAAgByE,EAChB,OAAWzqE,EAAM2jG,gBAA4Bt6F,EAAfrJ,EAAMkR,OACpC,MAAUlR,EAAM2jG,gBAA2Bt6F,EAAdrJ,EAAMgR,MACnC,UAAchR,EAAM2jG,gBAA+Bt6F,EAAlBrJ,EAAMwhE,UACvC,SAAaxhE,EAAM2jG,gBAA8Bt6F,EAAjBrJ,EAAMuhE,SACtC,KAAQ,SACR,aAAgBkL,EAChB,aAAgBhB,GACfO,GAAU,CACXjG,UAAW7N,EAAM6N,UACjBtf,QAAS,WACP,IAAK,IAAI3wC,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzB,OAAO,QAAa2+D,GAAmB,CACrC,KAAQ,WACP,CACDluB,QAAS,IAAM,CAACyR,EAAMzR,aAAa1wC,KAEvC,GACA,KAEG,EAAAs3D,GAAA,GAAY,CAAC,EAAGJ,EACzB,ICrIWi3B,IAAwB,EAAA5jC,EAAA,GAAa,CAChDuwB,MAAOh5B,WACJ6rC,GAAiB,CAClB7+E,WAAY,6BAEb,gBACUs/E,IAAe,UAAmB,CAC7CvmG,KAAM,eACNoC,MAAOkkG,KACPj5B,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM+oC,GAAW,QAAgBjzC,EAAO,cAaxC,OAZA,EAAA4sE,EAAA,IAAU,KACR,MAAMw3B,EAAcN,GAAQ32B,YAAYntE,GACxC,OAAO,QAAa8jG,IAAS,QAAYM,EAAa,CACpD,aAAgB,CAAC,0BAA2BpkG,EAAMwqE,cAClD,WAAcv3B,EAASx1C,MACvB,sBAAuB2vE,GAAUn6B,EAASx1C,MAAQ2vE,EAClD,MAAS,CAAC,iBAAkB,CAC1B,wBAAyBptE,EAAM6wF,OAC9B7wF,EAAMy4D,OACT,MAASz4D,EAAM2E,QACbuzD,EAAM,IAEL,CAAC,CACV,IClCWmsC,IAA+B,EAAA/jC,EAAA,GAAa,CACvDr6B,QAAS,CAAC5zB,OAAQJ,YACf,UACF,uBACUqyF,IAAsB,UAAmB,CACpD1mG,KAAM,sBACNoC,MAAOqkG,KACP,KAAApsC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAKJ,OAJA,EAAA0iE,EAAA,IAAU,KAAM,QAAa,KAAM,CACjC,MAAS,CAAC,wBAAyB5sE,EAAMy4D,OACzC,MAASz4D,EAAM2E,OACd,CAACuzD,GAAOzR,aAAezmD,EAAMimC,YACzB,CAAC,CACV,ICZWs+D,IAA4B,EAAAjkC,EAAA,GAAa,CACpDwE,OAAQjN,QACRC,YAAa7lD,OACbywE,YAAazwE,OACbg4D,MAAOh4D,OACP+uB,SAAU62B,QACVkhB,MAAO9mE,WACJ,aACA,cACA6+D,EAAa,CACdvjE,IAAK,QAEN,oBACUi3F,IAAmB,UAAmB,CACjD5mG,KAAM,mBACNoC,MAAOukG,KACP,KAAAtsC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,MACLxS,GACEx7C,EACJ,MAAMiuD,GAAO,SAAQn4D,EAAO0lD,GACtBzS,GAAW,SAAS,IAAMjzC,EAAM8kE,QAAU3M,EAAKllB,UAAUx1C,QACzDwsE,GAAQ,SAAS,IAAMh3B,EAASx1C,MAAQuC,EAAM0iF,YAAc1iF,EAAMiqE,SAClE,iBACJ+U,EAAgB,gBAChBC,IACE,SAAahV,GAiBjB,OAhBA,EAAA2C,EAAA,IAAU,KACD,QAAa5sE,EAAMuN,IAAK,CAC7B,MAAS,CAAC,qBAAsB,CAC9B,6BAA8B0lC,EAASx1C,MACvC,+BAAgCuC,EAAMghC,SACtC,CAAC,GAAGhhC,EAAM83D,eAAgB7kB,EAASx1C,OAASuC,EAAM83D,aACjDknB,EAAiBvhF,MAAOuC,EAAMy4D,OACjC,MAAS,CAACwmB,EAAgBxhF,MAAOuC,EAAM2E,OACvC,eAAgBsuC,EAASx1C,MAAQ,YAAS4L,GACzC,CACDo9C,QAAS,IAAM,CAAE0R,EAAKqqB,OAAO/kF,OAA2C,QAAa,KAAK,QAAY,CACpG,MAAS,2BACT,QAAW06D,EAAKhB,UACfgB,EAAKwrB,WAAY,CAACzrB,EAAMzR,aAAezmD,EAAM+4E,QAHX7gB,EAAMzR,aAAezmD,EAAM+4E,WAM7D,CAAC,CACV,ICnCW0rB,IAAwB,EAAAnkC,EAAA,GAAa,CAChDxI,YAAa7lD,OACbywE,YAAazwE,OACb0tE,QAAS1tE,OACTg4D,MAAOh4D,OACP+uB,SAAU62B,QACV5xB,QAAS,CACP9a,KAAMlZ,OACNw0C,QAAS,KAEXm4B,KAAM,MACN9O,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,QAEd,YACA80B,QACAnG,QACAtE,EAAa,CACdvjE,IAAK,QAEN,gBACUm3F,IAAe,UAAmB,CAC7C9mG,KAAM,eACNoC,MAAOykG,KACP,KAAAxsC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,uBACJigE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,aAC9B,eACJy7E,GACED,GAAWx7E,IACT,eACJw1E,GACED,GAAWv1E,IACf,SAAgB,CACdskG,oBAAqB,CACnBr+D,SAAS,QAAMjmC,EAAO,YAExBwkG,iBAAkB,CAChB1sC,aAAa,QAAM93D,EAAO,eAC1B0iF,aAAa,QAAM1iF,EAAO,eAC1BiqE,OAAO,QAAMjqE,EAAO,SACpBghC,UAAU,QAAMhhC,EAAO,eAG3B,MAAM8vE,GAAQ,SAAS,IAAM9vE,EAAM8vE,MAAMvsE,KAAI0xB,GACpB,kBAATA,EAAoB,CAChCA,KAAM,CACJ8jD,MAAO9jD,GAET4K,IAAK5K,GACH,CACFA,OACA4K,IAAK5K,OAoDT,OAjDA,EAAA23C,EAAA,IAAU,KACR,MAAM4W,KAAgBtrB,EAAMjvC,UAAWjpB,EAAM4+E,MAC7C,OAAO,QAAa5+E,EAAMuN,IAAK,CAC7B,MAAS,CAAC,gBAAiB48D,EAAuB1sE,MAAOg+E,EAAeh+E,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OAC3G,MAAS,CAAC2R,EAAsB3sE,MAAOuC,EAAM2E,QAC5C,CACD8hD,QAAS,IAAM,CAAC+8B,IAAc,QAAa,KAAM,CAC/C,IAAO,UACP,MAAS,0BACR,CAAEtrB,EAAMjvC,SAIA,QAAa0rD,GAAmB,CACzC,IAAO,mBACP,UAAa30E,EAAM4+E,KACnB,SAAY,CACVC,MAAO,CACLD,KAAM5+E,EAAM4+E,KACZvoC,OAAO,KAGV6hB,EAAMjvC,UAbY,QAAa41D,GAAO,CACvC,IAAO,eACP,OAAS,EACT,KAAQ7+E,EAAM4+E,MACb,QASkB9O,EAAMryE,MAAM8F,KAAI,CAAC8P,EAAO+C,EAAOq4B,KAClD,IAAI,KACFxZ,EAAI,IACJ4K,GACExsB,EACJ,OAAO,QAAa,KAAW,KAAM,CAAC6kD,EAAMjjC,OAAO,CACjDA,OACA7e,YACI,QAAaouF,IAAkB,QAAY,CAC/C,IAAOpuF,EACP,SAAYA,GAASq4B,EAAMvuC,OAAS,GACnB,kBAAT+0B,EAAoB,CAC5B8jD,MAAO9jD,GACLA,GAAO,CACTwxB,QAASyR,EAAM6gB,MAAQ,IAAM7gB,EAAM6gB,QAAQ,CACzC9jD,OACA7e,eACG/M,IACH+M,EAAQq4B,EAAMvuC,OAAS,IAAK,QAAaokG,GAAqB,KAAM,CACtE79C,QAASyR,EAAMjyB,QAAU,IAAMiyB,EAAMjyB,UAAU,CAC7ChR,KAAM4K,EACNzpB,eACG/M,KACH,IACF6uD,EAAMzR,cACV,IAEG,CAAC,CACV,IC5HWk+C,IAAe,UAAmB,CAC7C/mG,KAAM,eACNoC,OAAO,SACP,KAAAi4D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAWJ,OAVA,SAAgB,CACdkvE,KAAM,CACJ2J,MAAM,EACN1J,QAAS,WAGb,EAAAzM,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,iBAAkB5sE,EAAMy4D,OAClC,MAASz4D,EAAM2E,OACd,CAACuzD,EAAMzR,gBACH,CAAC,CACV,IClBWm+C,IAAyB,EAAAtkC,EAAA,GAAa,CACjD95B,QAAS,CAACn0B,OAAQJ,YACf,YACA6+D,KACF,iBACU+zB,IAAgB,UAAmB,CAC9CjnG,KAAM,gBACNoC,MAAO4kG,KACP,KAAA3sC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAOJ,OANA,EAAA0iE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,kBAAmBvN,EAAMy4D,OACnC,MAAS,CAAC,CACR,4BAA6Bz4D,EAAMwmC,SAClCxmC,EAAM2E,QACRuzD,KACI,CAAC,CACV,ICtBW4sC,GAAa9gB,GAAuB,gBCSpC+gB,IAAoB,EAAAzkC,EAAA,GAAa,CAC5CyqB,aAAc94E,OACd4wE,WAAY,MACZqI,cAAej5E,OACf2wE,YAAa,MACb2N,SAAU,CAACt+E,OAAQI,QACnB0mE,MAAO,CAAC9mE,OAAQI,YACb,YACAkpE,MACF,aACUypB,IAAY,UAAmB,CAC1CpnG,KAAM,YACNoC,MAAO+kG,KACP,KAAA9sC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAuEJ,OAtEA,EAAA0iE,EAAA,IAAU,KACR,MAAM0e,KAAqBtrF,EAAMkrF,gBAAiBlrF,EAAM4iF,aAClDY,KAAgB8H,IAAmBpzB,EAAMjvC,SACzCmiE,KAAoBprF,EAAM+qF,eAAgB/qF,EAAM6iF,YAChDY,KAAe2H,IAAkBlzB,EAAMlwC,QACvCsxD,IAA6B,MAAft5E,EAAM+4E,QAAiB7gB,EAAM6gB,OAC3C2X,IAAmC,MAAlB1wF,EAAMuwF,WAAoBr4B,EAAMq4B,UACvD,OAAO,QAAa,MAAO,CACzB,MAAS,CAAC,cAAevwF,EAAMy4D,OAC/B,MAASz4D,EAAM2E,OACd,CAAC6+E,IAAc,QAAa,MAAO,CACpC,IAAO,UACP,MAAS,wBACR,CAAEtrB,EAAMjvC,SAQE,QAAa0rD,GAAmB,CAC3C,IAAO,mBACP,UAAa2W,EACb,SAAY,CACVxG,QAAS,CACPnM,QAAS34E,EAAM24E,QACf9uC,MAAO7pC,EAAMkrF,eAEfrM,MAAO,CACLlG,QAAS34E,EAAM24E,QACfiG,KAAM5+E,EAAM4iF,eAGf1qB,EAAMjvC,UArBY,QAAa,KAAW,KAAM,CAACjpB,EAAMkrF,gBAAiB,QAAapG,GAAS,CAC/F,IAAO,iBACP,QAAW9kF,EAAM24E,QACjB,MAAS34E,EAAMkrF,eACd,MAAOlrF,EAAM4iF,cAAe,QAAa/D,GAAO,CACjD,IAAO,eACP,QAAW7+E,EAAM24E,QACjB,KAAQ34E,EAAM4iF,aACb,WAakB,QAAa,MAAO,CACvC,MAAS,wBACR,CAACtJ,IAAY,QAAawrB,GAAY,CACvC,IAAO,SACN,CACDr+C,QAAS,IAAM,CAACyR,EAAM6gB,WAAa/4E,EAAM+4E,SACvC2X,IAAe,QAAamU,GAAe,CAC7C,IAAO,YACN,CACDp+C,QAAS,IAAM,CAACyR,EAAMq4B,cAAgBvwF,EAAMuwF,YAC1Cr4B,EAAMzR,cAAeg9B,IAAa,QAAa,MAAO,CACxD,IAAO,SACP,MAAS,uBACR,CAAEvrB,EAAMlwC,QAQE,QAAa2sD,GAAmB,CAC3C,IAAO,kBACP,UAAayW,EACb,SAAY,CACVtG,QAAS,CACPnM,QAAS34E,EAAM24E,QACf9uC,MAAO7pC,EAAM+qF,cAEflM,MAAO,CACLlG,QAAS34E,EAAM24E,QACfiG,KAAM5+E,EAAM6iF,cAGf3qB,EAAMlwC,SArBW,QAAa,KAAW,KAAM,CAAChoB,EAAM6iF,aAAc,QAAahE,GAAO,CACzF,IAAO,cACP,QAAW7+E,EAAM24E,QACjB,KAAQ34E,EAAM6iF,YACb,MAAO7iF,EAAM+qF,eAAgB,QAAajG,GAAS,CACpD,IAAO,gBACP,QAAW9kF,EAAM24E,QACjB,MAAS34E,EAAM+qF,cACd,WAaiB,IAEf,CAAC,CACV,IC9FWka,IAAqB,EAAA3kC,EAAA,GAAa,CAC7C95B,QAAS,CAACn0B,OAAQJ,YACf,YACA6+D,KACF,aACUo0B,IAAY,UAAmB,CAC1CtnG,KAAM,YACNoC,MAAOilG,KACP,KAAAhtC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAOJ,OANA,EAAA0iE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,cAAevN,EAAMy4D,OAC/B,MAAS,CAAC,CACR,wBAAyBz4D,EAAMwmC,SAC9BxmC,EAAM2E,QACRuzD,KACI,CAAC,CACV,ICKWitC,IAAiB,EAAA7kC,EAAA,GAAa,CACzCyqB,aAAc94E,OACd4wE,WAAY,MACZ7hD,SAAU62B,QACVnzB,KAAMmzB,QACNutC,MAAOvtC,QACPhuB,MAAO53B,OACPkmD,KAAM,CACJhtC,KAAM0sC,QACNpR,aAASp9C,GAEX6hF,cAAej5E,OACf2wE,YAAa,MACbK,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEX8pC,SAAU,CAACt+E,OAAQI,QACnBlF,KAAM,CAAC8E,OAAQI,QACf0mE,MAAO,CAAC9mE,OAAQI,WACb2lE,SACA,YACAuD,SACA,aACAnD,QACA0J,QACAvB,QACA6B,QACAhN,SACA,cACAtE,QACA,aACA+K,GAAiB,CAClBxC,QAAS,cAEV,SACUgsB,IAAQ,UAAmB,CACtCznG,KAAM,QACNktE,WAAY,CACVqb,OAAM,MAERnmF,MAAOmlG,KACP,KAAAltC,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,cACJm4E,GACED,GAAUl4E,IACR,aACJg8E,EAAY,YACZC,EAAW,eACXF,GACED,GAAW97E,IACT,eACJy7E,GACED,GAAWx7E,IACT,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,cACJiiF,GACED,GAAUhiF,IACR,eACJ0gF,GACEF,GAAYxgF,IACV,gBACJsiF,GACED,GAAYriF,IACV,eACJw1E,GACED,GAAWv1E,GACTm4D,GAAO,SAAQn4D,EAAO0lD,GACtB88B,GAAS,SAAS,KAAqB,IAAfxiF,EAAMm4D,MAAkBA,EAAKqqB,OAAO/kF,QAC5Dm+E,GAAc,SAAS,KAAO57E,EAAMghC,WAA2B,IAAfhhC,EAAMm4D,OAAmBn4D,EAAMm4D,MAAQA,EAAKyjB,YAAYn+E,SAmE9G,OAlEA,EAAAmvE,EAAA,IAAU,KACR,MAAM2W,EAAMf,EAAO/kF,MAAQ,IAAMuC,EAAMuN,IACjC+rE,KAAcphB,EAAM6gB,OAAwB,MAAf/4E,EAAM+4E,OACnC2X,KAAiBx4B,EAAMq4B,UAA8B,MAAlBvwF,EAAMuwF,UACzC+U,EAAYhsB,GAAYoX,EACxBjN,KAAevrB,EAAMlwC,QAAUhoB,EAAM+qF,cAAgB/qF,EAAM6iF,YAC3DW,KAAgBtrB,EAAMjvC,SAAWjpB,EAAMkrF,eAAiBlrF,EAAM4iF,aAC9DrJ,KAAcrhB,EAAMruB,QAAS7pC,EAAM6pC,OACnC07D,EAAcD,GAAa9hB,GAAcC,EACzCxS,KAAa/Y,EAAM/qD,MAAsB,MAAdnN,EAAMmN,MACvC,OAAO,SAAgB,QAAao2E,GAAK,QAAY,CACnD,MAAS,CAAC,SAAU,CAClB,mBAAoBvjF,EAAMghC,SAC1B,eAAgBhhC,EAAM0kC,KACtB,gBAAiB1kC,EAAMolG,SAAWplG,EAAMghC,UAAYhhC,EAAM0kC,MAC1D,eAAgBk3C,EAAYn+E,OAC3B6tE,EAAa7tE,MAAO06E,EAAc16E,MAAOu+E,EAAav+E,MAAOg+E,EAAeh+E,MAAO86E,EAAiB96E,MAAOwkF,EAAcxkF,MAAO6kF,EAAgB7kF,MAAO+3E,EAAe/3E,MAAOs+E,EAAet+E,MAAOuC,EAAMy4D,OAC5M,MAAS,CAACwjB,EAAYx+E,MAAOquE,EAAgBruE,MAAOijF,EAAejjF,MAAOuC,EAAM2E,OAChF,QAAWi3E,EAAYn+E,OAAS06D,EAAKhB,SACrC,SAAYn3D,EAAMghC,UAAY,OAAI33B,GACjC8uD,EAAKwrB,WAAY,CAClBl9B,QAAS,IAAM,CAAC8yB,IAAY,QAAa,MAAO,CAC9C,IAAO,QACP,MAAS,iBACR,CAAErhB,EAAMruB,OAIA,QAAa8qC,GAAmB,CACzC,IAAO,iBACP,UAAa30E,EAAM6pC,MACnB,SAAY,CACVssC,KAAM,CACJR,OAAO,EACPlyE,IAAKzD,EAAM6pC,SAGdquB,EAAMruB,QAbU,QAAassC,GAAM,CACpC,IAAO,YACP,OAAS,EACT,IAAOn2E,EAAM6pC,OACZ,SASgB,QAAaq4C,GAAY,CAC1C,KAAQ,SACR,SAAYliF,EAAM+hF,QAClB,MAAkC,mBAAlB/hF,EAAM+hF,aAAwB14E,EAAYrJ,EAAM+hF,SAC/D,CACDt7B,QAASyR,EAAM0rB,SACb2hB,IAAe,QAAaP,GAAW,CACzC,IAAO,OACP,cAAiBhlG,EAAMkrF,cACvB,YAAelrF,EAAM4iF,YACrB,MAAS5iF,EAAM+4E,MACf,SAAY/4E,EAAMuwF,SAClB,aAAgBvwF,EAAM+qF,aACtB,WAAc/qF,EAAM6iF,YACnB,CACDp8B,QAASyR,EAAMjjC,KACfhM,QAASivC,EAAMjvC,QACf8vD,MAAO7gB,EAAM6gB,MACbwX,SAAUr4B,EAAMq4B,SAChBvoE,OAAQkwC,EAAMlwC,SACZipD,IAAW,QAAai0B,GAAW,CACrC,IAAO,QACN,CACDz+C,QAAS,IAAM,CAACyR,EAAM/qD,UAAYnN,EAAMmN,QACtC+qD,EAAMzR,YAAayR,EAAMorC,UAAW,QAAaqB,GAAc,KAAM,CACvEl+C,QAASyR,EAAMorC,UACb3nB,GAAYC,EAAYn+E,MAAO,aACjC,CAAC,EAAC,QAAkB,UAAWm+E,EAAYn+E,OAASuC,EAAMijF,SAAS,IAElE,CAAC,CACV,I,eCpKK,MAAMuiB,GAAgBnkG,OAAOm+D,IAAI,oBAC3BimC,GAAqBpkG,OAAOm+D,IAAI,0BAChCkmC,IAAmB,EAAAplC,EAAA,GAAa,CAC3CqlC,WAAY9tC,QACZywB,SAAU,CACRn9D,KAAM,CAAC0sC,QAAS5lD,OAAQ/T,SAAUO,QAClCgoD,QAAS,SAEX8hC,SAAU,CACRp9D,KAAM,CAAC0sC,QAAS5lD,OAAQ/T,SAAUO,QAClCgoD,QAAS,SAEXgX,QAAS5F,QACT2wB,WAAY,CACVr9D,KAAM,CAAC0sC,QAAS5lD,QAChBuuD,UAAW5wD,GAAkB,mBAANA,GAAyB,UAANA,GAE5CS,MAAO,CACL8a,KAAM,CAAC1sB,OAAQo5D,SACfpR,aAASp9C,GAEXob,UAAW,CACT0G,KAAMlZ,OACNw0C,QAAS,cAEXujB,WAAY,KACZhpC,SAAU62B,QACV4kB,cAAe,CACbtxD,KAAMlZ,OACNw0C,QAAS,yBAGX+1B,UAAW,CACTrxD,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,QAAS,aAER,YACAqqB,QACA,WACF,WACU80B,IAAU,UAAmB,CACxChoG,KAAM,UACNktE,WAAY,CACV+6B,MAAK,MAEP7lG,MAAO0lG,KACPz6B,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,MACJ6gE,IACE,WACE,EACJ/9D,IACE,UACEquE,EAAQ8L,GAASj9E,EAAOylG,IACxBK,GAAU,UACVC,GAAe,SAAS,IAAMllC,EAAMpjE,OAASuC,EAAMy9D,QAAUz9D,EAAMy9D,UACnEgkB,GAAa,SAAW,GACxB58D,GAAa,SAAS,KAC1B,MAAMhd,EAA2B,aAApB7H,EAAMykB,UAA2B,IAAM,IAC9Cg5C,EAAUsoC,EAAatoG,OAASgkF,EAAWhkF,MAAQgkF,EAAWhkF,MAC9DgnB,EAAYg5C,EAAU,WAAa,GACzC,MAAO,YAAY51D,IAAO4c,cAAsB,IAE5CuhF,GAAkB,QAAW,GAC7BC,GAAmB,aAAI58F,GACvB+T,GAAc,SAAS,IACpB+zD,EAAMrB,MAAMryE,MAAMguC,WAAUxW,GAAQk8C,EAAM+L,SAASz/E,MAAMwP,SAASgoB,EAAK51B,SAEhF,QAAM+d,GAAa,CAAC6oE,EAAQ3d,KAC1B,MAAM49B,EAAc/0B,EAAMrB,MAAMryE,MAAMyC,OAChC+mB,EAAYi/E,EAAc,EAE9BzkB,EAAWhkF,MADTyoG,GAAe,EACEjgB,EAAS3d,EACnB2d,IAAWh/D,GAAwB,IAAXqhD,IAEb,IAAX2d,GAAgB3d,IAAWrhD,IAGjBg/D,EAAS3d,CAC9B,KAEF,QAAQk9B,GAAe,CACrB3gF,aACA48D,aACAukB,kBACAC,mBACAH,YAEF,MAAMK,GAAc,SAAS,IAAMnmG,EAAM2lG,YAAoC,IAAtBvoF,EAAY3f,QAC7D2oG,GAAiB,SAAS,IAAMpmG,EAAM2lG,YAAcvoF,EAAY3f,QAAU0zE,EAAMrB,MAAMryE,MAAMyC,OAAS,IAC3G,SAASsO,IACP23F,EAAY1oG,OAAS0zE,EAAM3iE,MAC7B,CACA,SAAS5M,IACPwkG,EAAe3oG,OAAS0zE,EAAMvvE,MAChC,CACA,MAAMykG,GAAS,SAAS,KACtB,MAAMA,EAAS,GACTC,EAAY,CAChB1nB,KAAM/d,EAAMpjE,MAAQuC,EAAMsoF,SAAWtoF,EAAMuoF,SAC3C9vB,MAAO,cAAastC,EAAatoG,MAAQ,QAAU,QACnDk0B,QAASw/C,EAAM3iE,KACf,aAAc1L,EAAE,2BAElBujG,EAAO7jG,KAAK2jG,EAAY1oG,MAAQy6D,EAAM1pD,KAAO0pD,EAAM1pD,KAAK,CACtDxO,MAAOsmG,KACJ,QAAaltB,GAAMktB,EAAW,OAAQ,QAAa,MAAO,KAAM,OACrE,MAAMC,EAAY,CAChB3nB,KAAM/d,EAAMpjE,MAAQuC,EAAMuoF,SAAWvoF,EAAMsoF,SAC3C7vB,MAAO,cAAastC,EAAatoG,MAAQ,OAAS,SAClDk0B,QAASw/C,EAAMvvE,KACf,aAAckB,EAAE,2BAKlB,OAHAujG,EAAO7jG,KAAK4jG,EAAe3oG,MAAQy6D,EAAMt2D,KAAOs2D,EAAMt2D,KAAK,CACzD5B,MAAOumG,KACJ,QAAantB,GAAMmtB,EAAW,OAAQ,QAAa,MAAO,KAAM,OAC9DF,CAAM,IAETG,GAAe,SAAS,KAC5B,IAAoB,IAAhBxmG,EAAMqQ,MAAiB,OAAOrQ,EAAMqQ,MACxC,MAAM8D,EAAU,CACd/F,KAAM,KACJ23F,EAAatoG,MAAQ+Q,IAAS5M,GAAM,EAEtCm/D,MAAO,KACLglC,EAAatoG,MAAQmE,IAAS4M,GAAM,EAEtC6nC,MAAOhjC,IACL,IAAI,cACF6X,GACE7X,EACJ6X,EAAcuD,iBAAiB,GAGnC,MAAO,IACFta,MACiB,IAAhBnU,EAAMqQ,MAAiB,CAAC,EAAIrQ,EAAMqQ,MACvC,IAsBH,OApBA,EAAAu8D,EAAA,IAAU,KAAM,SAAgB,QAAa5sE,EAAMuN,IAAK,CACtD,IAAOu4F,EACP,MAAS,CAAC,WAAY,CACpB,iCAAuD,UAArB9lG,EAAMwoF,YACvCld,EAAa7tE,MAAOuC,EAAMy4D,OAC7B,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,sBACT,MAAS,CACPv1C,OAAQ+0F,EAAiBxoG,QAE1B,CAACy6D,EAAMzR,UAAU,CAClB0qB,WACuB,IAArBnxE,EAAMwoF,aAAwB,QAAa,MAAO,CACpD,MAAS,sBACR,CAAC6d,EAAO5oG,UAAWy6D,EAAMid,aAAa,CACvChE,aAEA,CAAC,EAAC,QAAkB,SAAUq1B,EAAa/oG,WACxC,CACL0zE,QAEJ,IC3KWs1B,IAAqB,EAAAnmC,EAAA,GAAa,CAC7C2J,MAAOh4D,OACPy0F,MAAO7uC,QACP8uC,cAAe,CACbx7E,KAAM,MACNs7B,QAAS,cAEXv1C,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXmgD,eAAgB/uC,QAChBgvC,wBAAyBhvC,QACzBivC,SAAU,CACR37E,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IACT+Z,UAAW/iE,GAAS4U,OAAO5U,GAAS,GAEtC4N,SAAU,CAACwsD,QAAS5lD,QACpB80F,mBAAoB,CAAClvC,QAAS5lD,WAC3ByzF,GAAiB,CAClBC,YAAY,EACZnpB,UAAW,QACXgM,YAAY,KAEb,aACUwe,IAAY,UAAmB,CAC1CppG,KAAM,YACNoC,MAAOymG,KACPx7B,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,eAC/B,EACJ8C,IACE,UACEmkG,GAAY,UAClB,IAAIC,GAAgB,EAOpB,SAASC,IACFnnG,EAAM0mG,OAAUO,EAAUxpG,QAC/BypG,EAAelmG,OAAOyF,WAAWwgG,EAAUxpG,MAAM0zE,MAAMvvE,MAAO5B,EAAM8mG,SAAW,GAAK9mG,EAAM8mG,SAAW,KACvG,CACA,SAASM,IACPpmG,OAAO0F,aAAawgG,GACpBlmG,OAAO4F,sBAAsBugG,EAC/B,CA4DA,OAzEA,QAAM97B,EAAO+7B,IACb,SAAM,IAAMpnG,EAAM8mG,UAAUM,IAC5B,SAAM,IAAMpnG,EAAM0mG,QAAOhgF,IACnBA,EAAK0gF,IAAsBpmG,OAAO0F,aAAawgG,EAAa,KAElE,QAAUC,IASV,EAAAv6B,EAAA,IAAU,KACR,MAAMy6B,EAAczB,GAAQz4B,YAAYntE,GACxC,OAAO,QAAa4lG,IAAS,QAAY,CACvC,IAAOqB,GACNI,EAAa,CACd,WAAch8B,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAAS,CAAC,aAAc,CACtB,wCAAyCptE,EAAM6mG,wBAC/C,kCAAmC7mG,EAAM+mG,oBACxC/mG,EAAMy4D,OACT,MAAS,CAAC,CACRvnD,QAAQ,QAAclR,EAAMkR,SAC3BlR,EAAM2E,SACP,CACF8hD,QAASyR,EAAMzR,QACf0uB,WAAY9hE,IACV,IAAI,MACF89D,GACE99D,EACJ,OAAO,QAAa,KAAW,KAAM,EAAErT,EAAM4mG,iBAAkB,QAAa,MAAO,CACjF,MAAS,uBACT,MAAS,CACPx4F,KAAmC,SAA7BpO,EAAM+mG,oBAAiC/mG,EAAM+mG,mBAAqB,EAAI,OAC5EhmC,MAAoC,UAA7B/gE,EAAM+mG,mBAAiC,EAAI,SAEnD,CAAC51B,EAAMrB,MAAMryE,MAAMyC,OAAS,IAAK,QAAay0E,GAAmB,CAClE,SAAY,CACVyE,KAAM,CACJnP,MAAOjqE,EAAMiqE,MACb2U,KAAM5+E,EAAM2mG,cACZp3F,KAAM,UACN8pE,QAAS,SAGb,QAAU,GACT,CACD5yB,QAAS,IAAM,CAAC0qB,EAAMrB,MAAMryE,MAAM8F,KAAI,CAAC0xB,EAAM7e,KAC3C,MAAMpW,EAAQ,CACZX,GAAI,iBAAiB41B,EAAK51B,KAC1B,aAAcyD,EAAE,wCAAyCsT,EAAQ,EAAG+6D,EAAMrB,MAAMryE,MAAMyC,QACtFu4D,MAAO,CAAC,6BAA8B0Y,EAAM0L,WAAW5nD,EAAK51B,KAAO,iBACnEsyB,QAAS,IAAMw/C,EAAM6L,OAAO/nD,EAAK51B,IAAI,IAEvC,OAAO64D,EAAMjjC,KAAOijC,EAAMjjC,KAAK,CAC7Bj1B,QACAi1B,UACG,QAAamkD,IAAM,QAAYnkD,EAAMj1B,GAAQ,KAAK,SAErDA,EAAMqL,WAAY,QAAa81E,GAAiB,CACpD,MAAS,uBACT,MAAmC,kBAAnBnhF,EAAMqL,SAAwBrL,EAAMqL,cAAWhC,EAC/D,YAAe8nE,EAAM2M,aAAazS,EAAM5tE,OAAS,GAAK0zE,EAAMrB,MAAMryE,MAAMyC,OAAS,KAChF,OAAO,EAEZsO,KAAM0pD,EAAM1pD,KACZ5M,KAAMs2D,EAAMt2D,MACZ,IAEG,CAAC,CACV,I,eCvHK,MAAM0lG,IAAuB,EAAAhnC,EAAA,GAAa,CAC/CinC,kBAAmB,CACjBp8E,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,aAASp9C,GAEXwb,WAAY,CACVsG,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,aAASp9C,OAER,YACAqzE,SACA,WACF,eACU8qB,IAAc,UAAmB,CAC5C5pG,KAAM,cACNktE,WAAY,CACV+6B,MAAK,MAEP7lG,MAAOsnG,KACPr8B,MAAO,CACL,iBAAkBvkD,IAAO,GAE3B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMlJ,GAAS,QAAOwkG,IAChBiC,EAAY9qB,GAAa38E,EAAOylG,KAChC,SACJ3tB,GACE4C,KACJ,IAAK15E,IAAWymG,EAAW,MAAM,IAAI55C,MAAM,qDAC3C,MAAM65C,GAAkB,SAAW,GAC7BC,GAAgB,SAAS,IAAM7vB,EAASr6E,QAAUuD,EAAOygF,WAAWhkF,OAAoC,IAA5BuC,EAAMunG,mBAAmD,IAArBvnG,EAAM6kB,cAC5H,SAAS+iF,IACFF,EAAgBjqG,OAAUuD,IAK/B0mG,EAAgBjqG,OAAQ,EACpBuD,EAAOglG,gBAAgBvoG,MAAQ,IACjCuD,EAAOglG,gBAAgBvoG,OAAS,EAGK,IAAjCuD,EAAOglG,gBAAgBvoG,QACzBuD,EAAOilG,iBAAiBxoG,WAAQ4L,IAGtC,CACA,SAASw+F,KACHH,EAAgBjqG,OAAUuD,IAK9B0mG,EAAgBjqG,OAAQ,EACa,IAAjCuD,EAAOglG,gBAAgBvoG,QAEzBuD,EAAOilG,iBAAiBxoG,OAAQ,QAAcuD,EAAO8kG,QAAQroG,OAAOqZ,eAEtE9V,EAAOglG,gBAAgBvoG,OAAS,EAClC,CACA,SAASqqG,IACPF,GACF,CACA,SAASG,EAAkBrgG,GACpBggG,EAAgBjqG,QAGrB,SAAS,KAEFkqG,EAAclqG,OAAUiqG,EAAgBjqG,OAAUuD,IAKvDA,EAAOilG,iBAAiBxoG,OAAQ,QAAciK,EAAGoP,cAAa,GAElE,CACA,MAAM+N,GAAa,SAAS,KAC1B,MAAMjnB,EAAOoD,EAAOygF,WAAWhkF,MAAQuC,EAAMunG,kBAAoBvnG,EAAM6kB,WACvE,QAAQ8iF,EAAclqG,OAAgB,CACpCG,KAAsB,kBAATA,EAAoBoD,EAAO6jB,WAAWpnB,MAAQG,EAC3D4zE,cAAeq2B,EACfp7B,aAAcm7B,EACdv1B,iBAAkBy1B,EAClB70B,cAAe40B,EACfp8B,aAAcm8B,EACdt1B,iBAAkBw1B,EAClB51B,QAAS61B,EACV,KAEG,WACJv8B,IACE,QAAQxrE,EAAOynG,EAAU5qB,YAU7B,OATA,EAAAjQ,EAAA,IAAU,KAAM,QAAa,KAAiB,CAC5C,WAAc/nD,EAAWpnB,MACzB,UAAaq6E,EAASr6E,OACrB,CACDgpD,QAAS,IAAM,EAAC,SAAgB,QAAa,MAAO,CAClD,MAAS,CAAC,gBAAiBghD,EAAUhrB,cAAch/E,MAAOuC,EAAMy4D,OAChE,MAASz4D,EAAM2E,OACd,CAAC6mE,EAAW/tE,OAASy6D,EAAMzR,cAAe,CAAC,CAAC,KAAQghD,EAAU5qB,WAAWp/E,cAEvE,CACLgqG,YAEJ,IClHWO,IAAyB,EAAA1nC,EAAA,GAAa,IAC9CmV,QACA6xB,MACF,iBACUW,IAAgB,UAAmB,CAC9CrqG,KAAM,gBACN07D,cAAc,EACdt5D,MAAOgoG,KACP,KAAA/vC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,MACLxS,GACEx7C,GACJ,EAAA0iE,EAAA,IAAU,KACR,MAAMs7B,EAAW/xB,GAAKhJ,YAAYntE,GAC5BmoG,EAAkBX,GAAYr6B,YAAYntE,GAChD,OAAO,QAAawnG,IAAa,QAAY,CAC3C,MAAS,CAAC,kBAAmBxnG,EAAMy4D,QAClC0vC,GAAkB,CACnB1hD,QAAS,IAAM,EAAC,QAAa0vB,IAAM,QAAYzwB,EAAOwiD,GAAWhwC,KACjE,GAEN,IChBWkwC,IAAqB,EAAA9nC,EAAA,GAAa,IAC1C43B,SACA,QAAKrR,KAAyB,CAAC,YACjC,aACUwhB,IAAY,UAAmB,CAC1CzqG,KAAM,YACN07D,cAAc,EACdt5D,MAAOooG,KACPn9B,MAAO,CACL,oBAAqBxtE,IAAS,EAC9B,iBAAkB42F,IAAW,GAE/B,KAAAp8B,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,eAC/B,UACJ2mE,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACPopE,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,YAAY+pE,MAsClD,OArCA,EAAAwD,EAAA,IAAU,KACR,MAAO8Z,EAAW4hB,IAAgB,QAAiB5iD,GAC7Cs0C,EAAazB,GAAOprB,YAAYntE,GAChCuoG,EAAgBxhB,GAAa5Z,YAAYntE,GAC/C,OAAO,QAAau4F,IAAQ,QAAY,CACtC,MAAS,CAAC,aAAcv4F,EAAMy4D,QAC7BiuB,EAAWsT,EAAY,CACxB,WAAc3uB,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,GAAM/tE,EAAG5B,MACT,QAAWkpE,EAAUlpE,MACrB,MAASuC,EAAM2E,QACb,IACCuzD,EACHzR,QAASpzC,IACP,IAAI,GACFhU,EAAE,WACF81F,EAAU,WACV/R,EAAU,WACVmT,EAAU,QACVS,GACE3jF,EACJ,OAAO,QAAa0zE,IAAc,QAAYwhB,EAAe,CAC3D,GAAMlpG,EAAG5B,MACT,mBAAoB03F,EAAW13F,MAC/B,SAAY2lF,EAAW3lF,MACvB,SAAY84F,EAAW94F,OACtB6qG,EAAc,CACf,OAA2B,IAAlBtR,EAAQv5F,MACjB,WAAc4tE,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,QAAWb,EACX,OAAUtoE,IACRi0D,EAAM,GAEZ,IAEG,CAAC,CACV,ICrEWswC,GAAQxkB,GAAuB,SAAU,QCIzCykB,IAA8B,EAAAnoC,EAAA,GAAa,CACtD2J,MAAO,CACL9+C,KAAM1sB,QAERuiC,SAAU62B,QACV6wC,QAAS,CACPv9E,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEXv1C,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXz1C,MAAO,CACLma,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,SAER,UACF,sBACUkiD,IAAqB,EAAArZ,EAAA,IAAgB,CAChD1xF,KAAM,qBACNoC,MAAOyoG,KACPx9B,MAAO,CACL,eAAgBhB,IAAS,EACzB,kBAAmB2+B,IAAO,GAE5B,KAAA3wC,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,GACE6G,EACJ,MAAM2+F,GAAgB,SAAW,GAC3BC,GAAY,UACZC,GAAc,QAAWlgG,WAAW7I,EAAMgR,QAC1Cg4F,GAAe,QAAWngG,WAAW7I,EAAMkR,SAC3C+3F,GAAe,QAAI,CACvB1lF,EAAG,EACHC,EAAG,IAEC0lF,GAAc,QAAS,CAC3BlmG,IAAK,IAAMimG,EAAaxrG,MACxB,GAAAwF,CAAIyjB,GACF,IAAKoiF,EAAUrrG,MAAO,OACtB,MAAM,EACJ8lB,EAAC,EACDC,GACEkD,EACJuiF,EAAaxrG,MAAQipB,EACrBrjB,EAAK,eAAgB,CACnBm1D,EAAGx4D,EAAMiqE,OAAOzR,GAAK,EACrB/zB,GAAG,QAAMlhB,EAAG,EAAGwlF,EAAYtrG,OAASsrG,EAAYtrG,MAChDmS,EAAG,GAAI,QAAM4T,EAAG,EAAGwlF,EAAavrG,OAASurG,EAAavrG,MACtD4K,EAAGrI,EAAMiqE,OAAO5hE,GAAK,GAEzB,IAEI8gG,GAAY,SAAS,KACzB,MAAM,EACJ5lF,EAAC,EACDC,GACE0lF,EAAYzrG,MACV2rG,EAASnyF,SAASjX,EAAM0oG,QAAS,IAAM,EAC7C,MAAO,CACL13F,OAAO,QAAchR,EAAM0oG,SAC3Bx3F,QAAQ,QAAclR,EAAM0oG,SAC5BvgG,UAAW,cAAa,QAAcob,EAAI6lF,QAAY,QAAc5lF,EAAI4lF,MACzE,KAEG,UACJ77B,GACED,GAAkBp6D,IACpB,IAAKq6D,EAAU7lE,IAAIq4D,aAAc,OACjC,MAAM,MACJ/uD,EAAK,OACLE,GACEgC,EAAQ,GAAGK,YACfw1F,EAAYtrG,MAAQuT,EACpBg4F,EAAavrG,MAAQyT,CAAM,IAE7B,SAASm4F,EAAkB9lF,EAAGC,EAAGw+C,GAC/B,MAAM,KACJ5zD,EAAI,IACJD,EAAG,MACH6C,EAAK,OACLE,GACE8wD,EACJknC,EAAYzrG,MAAQ,CAClB8lB,GAAG,QAAMA,EAAInV,EAAM,EAAG4C,GACtBwS,GAAG,QAAMA,EAAIrV,EAAK,EAAG+C,GAEzB,CACA,SAASo4F,EAAgBvmG,GACR,cAAXA,EAAEooB,MAEJpoB,EAAEioB,iBAEAhrB,EAAMghC,WACVuoE,EAAgBxmG,GAChB/B,OAAO8C,iBAAiB,YAAaylG,GACrCvoG,OAAO8C,iBAAiB,UAAW0lG,GACnCxoG,OAAO8C,iBAAiB,YAAaylG,GACrCvoG,OAAO8C,iBAAiB,WAAY0lG,GACtC,CACA,SAASD,EAAgBxmG,GACvB,GAAI/C,EAAMghC,WAAa8nE,EAAUrrG,MAAO,OACxCorG,EAAcprG,OAAQ,EACtB,MAAMgsG,GAAS,QAAoB1mG,GACnCsmG,EAAkBI,EAAO9iE,QAAS8iE,EAAO7iE,QAASkiE,EAAUrrG,MAAMmQ,wBACpE,CACA,SAAS47F,IACPxoG,OAAO+C,oBAAoB,YAAawlG,GACxCvoG,OAAO+C,oBAAoB,UAAWylG,GACtCxoG,OAAO+C,oBAAoB,YAAawlG,GACxCvoG,OAAO+C,oBAAoB,WAAYylG,EACzC,CACA,SAASE,IACP,IAAKZ,EAAUrrG,MAAO,OACtB,MAAMksG,EAASb,EAAUrrG,MACnBQ,EAAM0rG,EAAOC,WAAW,MAC9B,IAAK3rG,EAAK,OACV,MAAM4rG,EAAqB5rG,EAAI6rG,qBAAqB,EAAG,EAAGH,EAAO34F,MAAO,GACxE64F,EAAmBE,aAAa,EAAG,wBACnCF,EAAmBE,aAAa,EAAG,QAAQ/pG,EAAMiqE,OAAOzR,GAAK,oBAC7Dv6D,EAAI+rG,UAAYH,EAChB5rG,EAAIgsG,SAAS,EAAG,EAAGN,EAAO34F,MAAO24F,EAAOz4F,QACxC,MAAMg5F,EAAgBjsG,EAAI6rG,qBAAqB,EAAG,EAAG,EAAGH,EAAOz4F,QAC/Dg5F,EAAcH,aAAa,EAAG,sBAC9BG,EAAcH,aAAa,EAAG,sBAC9B9rG,EAAI+rG,UAAYE,EAChBjsG,EAAIgsG,SAAS,EAAG,EAAGN,EAAO34F,MAAO24F,EAAOz4F,OAC1C,CA8CA,OA7CA,SAAM,IAAMlR,EAAMiqE,OAAOzR,GAAGkxC,EAAc,CACxChmC,WAAW,KAEb,SAAM,IAAM,CAACqlC,EAAYtrG,MAAOurG,EAAavrG,SAAQ,CAACwoF,EAAQ3d,KAC5DohC,IACAT,EAAaxrG,MAAQ,CACnB8lB,EAAG2lF,EAAYzrG,MAAM8lB,EAAI0iE,EAAO,GAAK3d,EAAO,GAC5C9kD,EAAG0lF,EAAYzrG,MAAM+lB,EAAIyiE,EAAO,GAAK3d,EAAO,GAC7C,GACA,CACDrO,MAAO,UAET,SAAM,IAAMj6D,EAAMiqE,QAAO,KACnB4+B,EAAcprG,MAChBorG,EAAcprG,OAAQ,EAGxBwrG,EAAaxrG,MAAQuC,EAAMiqE,MAAQ,CACjC1mD,EAAGvjB,EAAMiqE,MAAMxlC,EAAIskE,EAAYtrG,MAC/B+lB,GAAI,EAAIxjB,EAAMiqE,MAAMr6D,GAAKo5F,EAAavrG,OACpC,CACF8lB,EAAG,EACHC,EAAG,EACJ,GACA,CACDyzE,MAAM,EACNvzB,WAAW,KAEb,SAAU,IAAMgmC,OAChB,EAAA98B,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,IAAOW,EACP,MAAS,CAAC,wBAAyBvtE,EAAMy4D,OACzC,MAASz4D,EAAM2E,MACf,YAAe2kG,EACf,oBAAuBA,GACtB,EAAC,QAAa,SAAU,CACzB,IAAOR,EACP,MAASC,EAAYtrG,MACrB,OAAUurG,EAAavrG,OACtB,MAAOuC,EAAMiqE,QAAS,QAAa,MAAO,CAC3C,MAAS,CAAC,6BAA8B,CACtC,uCAAwCjqE,EAAMghC,WAEhD,MAASmoE,EAAU1rG,OAClB,UACI,CAAC,CACV,I,eCtLF,SAAS0sG,GAAWlgC,EAAOkgC,GACzB,GAAIA,EAAY,CACd,MAAM,EACJ9hG,KACG6hE,GACDD,EACJ,OAAOC,CACT,CACA,OAAOD,CACT,CACO,SAASmgC,GAAangC,EAAOoc,GAClC,GAAa,MAATA,GAAkC,kBAAVA,EAAoB,CAC9C,MAAMgkB,GAAM,SAASpgC,GACrB,OAAgB,IAAZA,EAAM5hE,EAAgBgiG,EAAI/mG,MAAM,EAAG,GAAe+mG,CACxD,CACA,GAAqB,kBAAVhkB,EAAoB,CAC7B,IAAIikB,EAEJ,OADI,QAAIjkB,EAAO,CAAC,IAAK,IAAK,MAAOikB,GAAY,SAASrgC,IAAgB,QAAIoc,EAAO,CAAC,IAAK,IAAK,MAAOikB,GAAY,SAASrgC,IAAgB,QAAIoc,EAAO,CAAC,IAAK,IAAK,QAAOikB,EAAYrgC,GAC1KkgC,GAAWG,IAAY,QAAIjkB,EAAO,CAAC,OAAqB,IAAZpc,EAAM5hE,EAC3D,CACA,OAAO4hE,CACT,CAWO,MAAMsgC,GAAY,CACvB/xC,EAAG,EACH/zB,EAAG,EACH70B,EAAG,EACHvH,EAAG,GAECmiG,GAAO,CACXxQ,WAAY,CACV7uE,KAAM,SACN3f,IAAK,GAEPi/F,OAAQ,CAAC,CACPnzF,MAAO,IACP/L,IAAK,IACLmZ,KAAM,EACNgmF,SAAUrjG,GAAKiE,KAAK8lC,MAAM/pC,EAAE01C,GAC5B4tD,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACH01C,EAAG1qC,OAAOzC,MAEX,CACD0H,MAAO,IACP/L,IAAK,IACLmZ,KAAM,EACNgmF,SAAUrjG,GAAKiE,KAAK8lC,MAAM/pC,EAAEujG,GAC5BD,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACHujG,EAAGv4F,OAAOzC,MAEX,CACD0H,MAAO,IACP/L,IAAK,IACLmZ,KAAM,EACNgmF,SAAUrjG,GAAKiE,KAAK8lC,MAAM/pC,EAAEwtB,GAC5B81E,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACHwtB,EAAGxiB,OAAOzC,MAEX,CACD0H,MAAO,IACP/L,IAAK,EACLmZ,KAAM,IACNgmF,SAAUxgG,IACR,IAAI,EACF7B,GACE6B,EACJ,OAAY,MAAL7B,EAAYiD,KAAK8lC,MAAU,IAAJ/oC,GAAW,IAAM,CAAC,EAElDsiG,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACHgB,EAAGgK,OAAOzC,OAGdzG,GAAI,MACJqY,KAAM,OAEFqpF,GAAM,IACPL,GACHC,OAAQD,GAAKC,QAAQnnG,MAAM,EAAG,IAE1BwnG,GAAO,CACX9Q,WAAY,CACV7uE,KAAM,SACN3f,IAAK,GAEPi/F,OAAQ,CAAC,CACPnzF,MAAO,IACP/L,IAAK,IACLmZ,KAAM,EACNgmF,SAAUrjG,GAAKiE,KAAK8lC,MAAM/pC,EAAEmxD,GAC5BmyC,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACHmxD,EAAGnmD,OAAOzC,MAEX,CACD0H,MAAO,IACP/L,IAAK,EACLmZ,KAAM,IACNgmF,SAAUrjG,GAAKiE,KAAK8lC,MAAY,IAAN/pC,EAAEo9B,GAAW,IACvCkmE,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACHo9B,EAAGpyB,OAAOzC,MAEX,CACD0H,MAAO,IACP/L,IAAK,EACLmZ,KAAM,IACNgmF,SAAUrjG,GAAKiE,KAAK8lC,MAAY,IAAN/pC,EAAE65C,GAAW,IACvCypD,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACH65C,EAAG7uC,OAAOzC,MAEX,CACD0H,MAAO,IACP/L,IAAK,EACLmZ,KAAM,IACNgmF,SAAUr3F,IACR,IAAI,EACFhL,GACEgL,EACJ,OAAY,MAALhL,EAAYiD,KAAK8lC,MAAU,IAAJ/oC,GAAW,IAAM,CAAC,EAElDsiG,SAAU,CAACtjG,EAAGuI,KAAM,IACfvI,EACHgB,EAAGgK,OAAOzC,OAGdzG,GAAI,MACJqY,KAAM,OAEFupF,GAAM,IACPD,GACHL,OAAQK,GAAKL,OAAOnnG,MAAM,EAAG,IAEzB0nG,GAAO,CACXhR,WAAY,CACV7uE,KAAM,QAERs/E,OAAQ,CAAC,CACPnzF,MAAO,OACPozF,SAAUrjG,GAAKA,EACfsjG,SAAU,CAACtjG,EAAGuI,IAAMA,IAEtBzG,GAAI,MACJqY,KAAM,OAEF6oF,GAAM,IACPW,GACHP,OAAQ,CAAC,CACPnzF,MAAO,MACPozF,SAAUrjG,GAAKA,EAAE/D,MAAM,EAAG,GAC1BqnG,SAAU,CAACtjG,EAAGuI,IAAMA,KAGXq7F,GAAQ,CACnBJ,OACAL,QACAO,OACAD,QACAT,OACAW,SCrKIE,GAAoBhhG,IACxB,IAAI,MACFoN,KACG4yD,GACDhgE,EACJ,OAAO,QAAa,MAAO,CACzB,MAAS,8BACR,EAAC,QAAa,QAASggE,EAAM,OAAO,QAAa,OAAQ,KAAM,CAAC5yD,KAAS,EAEjE6zF,IAA4B,EAAA7qC,EAAA,GAAa,CACpD2J,MAAOxrE,OACPuiC,SAAU62B,QACVxT,KAAM,CACJl5B,KAAMlZ,OACNw0C,QAAS,OACT+Z,UAAW5wD,GAAKnR,OAAO0D,KAAK8oG,IAAOh+F,SAAS2C,IAE9Cq7F,MAAO,CACL9/E,KAAMrpB,MACN2kD,QAAS,IAAMhoD,OAAO0D,KAAK8oG,IAC3BzqC,UAAW5wD,GAAK9N,MAAMC,QAAQ6N,IAAMA,EAAE+5C,OAAMnwB,GAAK/6B,OAAO0D,KAAK8oG,IAAOh+F,SAASusB,UAE5E,UACF,oBACU4xE,IAAmB,EAAA9b,EAAA,IAAgB,CAC9C1xF,KAAM,mBACNoC,MAAOmrG,KACPlgC,MAAO,CACL,eAAgBhB,IAAS,EACzB,cAAe5lB,IAAQ,GAEzB,KAAA4T,CAAMj4D,EAAOqT,GACX,IAAI,KACFhQ,GACEgQ,EACJ,MAAMg4F,GAAe,SAAS,IACrBrrG,EAAMirG,MAAM1nG,KAAI/C,IAAO,IACzByqG,GAAMzqG,GACT5C,KAAM4C,QAGJiqG,GAAS,SAAS,KACtB,MAAMpmD,EAAOgnD,EAAa5tG,MAAM2iB,MAAKoZ,GAAKA,EAAE57B,OAASoC,EAAMqkD,OAC3D,IAAKA,EAAM,MAAO,GAClB,MAAM4lB,EAAQjqE,EAAMiqE,MAAQ5lB,EAAKl7C,GAAGnJ,EAAMiqE,OAAS,KACnD,OAAO5lB,EAAKomD,QAAQlnG,KAAI6oF,IACtB,IAAI,SACFse,EAAQ,SACRC,KACG3Q,GACD5N,EACJ,MAAO,IACF/nC,EAAK21C,cACLA,EACHh5D,SAAUhhC,EAAMghC,SAChBvjC,MAAOwsE,GAASygC,EAASzgC,GACzB+c,SAAUjkF,IACR,MAAMhD,EAASgD,EAAEhD,OACZA,GACLsD,EAAK,eAAgBghD,EAAK7iC,KAAKmpF,EAAS1gC,GAAS5lB,EAAKl7C,GAAGohG,IAAYxqG,EAAOtC,QAAQ,EAEvF,GACD,IAcJ,OAZA,EAAAmvE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,sBAAuB5sE,EAAMy4D,OACvC,MAASz4D,EAAM2E,OACd,CAAC8lG,EAAOhtG,OAAO8F,KAAIvD,IAAS,QAAakrG,GAAmBlrG,EAAO,QAAQqrG,EAAa5tG,MAAMyC,OAAS,IAAK,QAAak5E,GAAM,CAChI,KAAQ,UACR,KAAQ,UACR,QAAW,QACX,QAAW,KACT,MAAMkyB,EAAKD,EAAa5tG,MAAMguC,WAAUjS,GAAKA,EAAE57B,OAASoC,EAAMqkD,OAC9DhhD,EAAK,cAAegoG,EAAa5tG,OAAO6tG,EAAK,GAAKD,EAAa5tG,MAAMyC,QAAQtC,KAAK,GAEnF,UACI,CAAC,CACV,IChFW2tG,GAAgBlqG,OAAOm+D,IAAI,oBACjC,SAASE,GAAU38D,EAAG2E,EAAI+c,GAC/B,MAAMwsE,EAAyB,aAAdxsE,EACXu9C,EAAOt6D,EAAGkG,wBACVyC,EAAQ,YAAatN,EAAIA,EAAE0oB,QAAQ,GAAK1oB,EAC9C,OAAOkuF,EAAW5gF,EAAMu2B,SAAWo7B,EAAK7zD,IAAM6zD,EAAK9wD,OAAS,GAAKb,EAAMs2B,SAAWq7B,EAAK5zD,KAAO4zD,EAAKhxD,MAAQ,EAC7G,CACA,SAASw6F,GAAYzoG,EAAGq9B,GACtB,MAAI,YAAar9B,GAAKA,EAAE0oB,QAAQvrB,OAAe6C,EAAE0oB,QAAQ,GAAG2U,GAAmB,mBAAoBr9B,GAAKA,EAAE4qB,eAAeztB,OAAe6C,EAAE4qB,eAAe,GAAGyS,GAAsBr9B,EAAEq9B,EACtL,CACO,MAAMqrE,IAAkB,EAAAnrC,EAAA,GAAa,CAC1Ct/B,SAAU,CACR7V,KAAM0sC,QACNpR,QAAS,MAEXwG,MAAO4K,QACPirB,SAAU,CACR33D,KAAM0sC,QACNpR,QAAS,MAEXl7C,IAAK,CACH4f,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXj7C,IAAK,CACH2f,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEX/hC,KAAM,CACJyG,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXilD,WAAYz5F,OACZ05F,WAAY,CACVxgF,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,aAASp9C,EACTm3D,UAAW5wD,GAAkB,mBAANA,GAAyB,WAANA,GAE5Cg8F,UAAW,CACTzgF,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEXolD,UAAW,CACT1gF,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,SAAS,EACT+Z,UAAW5wD,GAAkB,mBAANA,GAAyB,WAANA,GAE5Ck8F,MAAO,CACL3gF,KAAM,CAACrpB,MAAOrD,SAEhBstG,SAAU,CACR5gF,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXwjB,MAAOh4D,OACP+5F,WAAY/5F,OACZg6F,eAAgBh6F,OAChB+zB,UAAW,CACT7a,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXhiC,UAAW,CACT0G,KAAMlZ,OACNw0C,QAAS,aACT+Z,UAAW5wD,GAAK,CAAC,WAAY,cAAc3C,SAAS2C,IAEtD6tD,QAAS5F,WACNud,QACAgD,GAAmB,CACpBC,UAAW,IAEb4K,OAAQ,CACN93D,KAAM0sC,QACNpR,SAAS,IAEV,UACUylD,GAAWlsG,IACtB,MAAMwL,GAAM,SAAS,IAAM3C,WAAW7I,EAAMwL,OACtCD,GAAM,SAAS,IAAM1C,WAAW7I,EAAMuL,OACtCmZ,GAAO,SAAS,KAAO1kB,EAAM0kB,KAAO,EAAI7b,WAAW7I,EAAM0kB,MAAQ,IACjEynF,GAAW,SAAS,IAAM7gG,KAAKC,KAAI,QAAYmZ,EAAKjnB,QAAQ,QAAY+N,EAAI/N,UAClF,SAAS2uG,EAAW3uG,GAElB,GADAA,EAAQoL,WAAWpL,GACfinB,EAAKjnB,OAAS,EAAG,OAAOA,EAC5B,MAAM4uG,GAAU,QAAM5uG,EAAO+N,EAAI/N,MAAO8N,EAAI9N,OACtCw8B,EAASzuB,EAAI/N,MAAQinB,EAAKjnB,MAC1BwkD,EAAW32C,KAAK8lC,OAAOi7D,EAAUpyE,GAAUvV,EAAKjnB,OAASinB,EAAKjnB,MAAQw8B,EAC5E,OAAOpxB,WAAWyC,KAAKE,IAAIy2C,EAAU12C,EAAI9N,OAAO6uG,QAAQH,EAAS1uG,OACnE,CACA,MAAO,CACL+N,MACAD,MACAmZ,OACAynF,WACAC,aACD,EAEUG,GAAYriG,IACvB,IAAI,MACFlK,EAAK,MACLwsG,EAAK,cACLC,EAAa,aACbC,EAAY,YACZC,EAAW,eACXC,GACE1iG,EACJ,MAAM,MACJ22D,IACE,UACE4gB,GAAa,QAAMzhF,EAAO,WAC1BixF,GAAW,SAAS,IAA0B,aAApBjxF,EAAMykB,YAChCooF,GAAe,SAAS,IAAM5b,EAASxzF,QAAUgkF,EAAWhkF,SAC5D,IACJ+N,EAAG,IACHD,EAAG,KACHmZ,EAAI,SACJynF,EAAQ,WACRC,GACEI,EACEZ,GAAY,SAAS,IAAM30F,SAASjX,EAAM4rG,UAAW,MACrDG,GAAW,SAAS,IAAM90F,SAASjX,EAAM+rG,SAAU,MACnD/lE,GAAY,SAAS,IAAM/uB,SAASjX,EAAMgmC,UAAW,MACrD8mE,GAAW,SAAS,KAAOvhG,EAAI9N,MAAQ+N,EAAI/N,OAASinB,EAAKjnB,QACzDujC,GAAW,QAAMhhC,EAAO,YACxB0rG,GAAa,SAAS,IAAM1rG,EAAMitD,OAASjtD,EAAMghC,cAAW33B,EAAYrJ,EAAM0rG,YAAc1rG,EAAMiqE,QAClG+hC,GAAa,SAAS,IAAMhsG,EAAMitD,OAASjtD,EAAMghC,cAAW33B,EAAYrJ,EAAMgsG,YAAchsG,EAAMiqE,QAClGgiC,GAAiB,SAAS,IAAMjsG,EAAMitD,OAASjtD,EAAMghC,cAAW33B,EAAYrJ,EAAMisG,gBAAkBjsG,EAAMiqE,QAC1G8iC,GAAe,SAAW,GAC1BC,GAAc,QAAW,GACzBC,GAAoB,UACpBC,GAAiB,UACvB,SAASC,EAAepqG,GACtB,MAAMkuF,EAA+B,aAApBjxF,EAAMykB,UACjB4xB,EAAQ46C,EAAW,MAAQ,OAC3B/wF,EAAS+wF,EAAW,SAAW,QAC/B7wD,EAAW6wD,EAAW,UAAY,WAEtC,CAAC56C,GAAQ+2D,EACT,CAACltG,GAASmtG,GACRJ,EAAkBxvG,OAAO+qE,IAAI56D,wBAC3B0/F,EAAc9B,GAAYzoG,EAAGq9B,GAGnC,IAAImtE,EAAWjiG,KAAKE,IAAIF,KAAKC,KAAK+hG,EAAcF,EAAaJ,EAAYvvG,OAAS4vG,EAAa,GAAI,IAAM,EAEzG,OADIpc,EAAW4b,EAAapvG,MAAQovG,EAAapvG,QAAUojE,EAAMpjE,SAAO8vG,EAAW,EAAIA,GAChFnB,EAAW5gG,EAAI/N,MAAQ8vG,GAAYhiG,EAAI9N,MAAQ+N,EAAI/N,OAC5D,CACA,MAAM+vG,EAAazqG,IACjB4pG,EAAY,CACVlvG,MAAO0vG,EAAepqG,KAExBgqG,EAAatvG,OAAQ,EACrBuvG,EAAYvvG,MAAQ,CAAC,EAEjBgwG,EAAc1qG,IAClBmqG,EAAezvG,MAAQmvG,EAAe7pG,GACjCmqG,EAAezvG,QACpByvG,EAAezvG,MAAM8uE,QACrBwgC,EAAatvG,OAAQ,EACjByvG,EAAezvG,MAAMuP,SAASjK,EAAEhD,QAClCitG,EAAYvvG,MAAQiiE,GAAU38D,EAAGmqG,EAAezvG,MAAOuC,EAAMykB,YAE7DuoF,EAAYvvG,MAAQ,EACpBivG,EAAa,CACXjvG,MAAO0vG,EAAepqG,MAG1B0pG,EAAc,CACZhvG,MAAO0vG,EAAepqG,KACtB,EAEE2qG,EAAsB,CAC1Bn7E,SAAS,EACTH,SAAS,GAEX,SAAS4Z,EAAYjpC,GACnB2pG,EAAa,CACXjvG,MAAO0vG,EAAepqG,IAE1B,CACA,SAAS4qG,EAAgB5qG,GACvBA,EAAE0rB,kBACF1rB,EAAEioB,iBACFwiF,EAAWzqG,GACX/B,OAAO+C,oBAAoB,YAAaioC,EAAa0hE,GACrD1sG,OAAO+C,oBAAoB,UAAW4pG,EACxC,CACA,SAASC,EAAiB7qG,GACxByqG,EAAWzqG,GACX/B,OAAO+C,oBAAoB,YAAaioC,EAAa0hE,GACrD3qG,EAAEhD,QAAQgE,oBAAoB,WAAY6pG,EAC5C,CACA,SAASC,EAAmB9qG,GAC1B0qG,EAAY1qG,GACZ/B,OAAO8C,iBAAiB,YAAakoC,EAAa0hE,GAClD3qG,EAAEhD,QAAQ+D,iBAAiB,WAAY8pG,EAAkB,CACvDr7E,SAAS,GAEb,CACA,SAASu7E,EAAkB/qG,GACzBA,EAAEioB,iBACFyiF,EAAY1qG,GACZ/B,OAAO8C,iBAAiB,YAAakoC,EAAa0hE,GAClD1sG,OAAO8C,iBAAiB,UAAW6pG,EAAiB,CAClDp7E,SAAS,GAEb,CACA,MAAM6N,EAAW1Z,IACf,MAAMqnF,GAAcrnF,EAAMlb,EAAI/N,QAAU8N,EAAI9N,MAAQ+N,EAAI/N,OAAS,IACjE,OAAO,QAAMyZ,MAAM62F,GAAc,EAAIA,EAAY,EAAG,IAAI,EAEpDlC,GAAY,QAAM7rG,EAAO,aACzBguG,GAAc,SAAS,IACtBnC,EAAUpuG,MACVuC,EAAM8rG,MASPhqG,MAAMC,QAAQ/B,EAAM8rG,OAAe9rG,EAAM8rG,MAAMvoG,KAAIT,IAAK,CAC1DrF,MAAOqF,EACPs9B,SAAUA,EAASt9B,GACnBwU,MAAOxU,EAAE/E,eAEJU,OAAO0D,KAAKnC,EAAM8rG,OAAOvoG,KAAI/C,IAAO,CACzC/C,MAAOoL,WAAWrI,GAClB4/B,SAAUA,EAASv3B,WAAWrI,IAC9B8W,MAAOtX,EAAM8rG,MAAMtrG,OAhBZssG,EAASrvG,QAAUgkE,KAAW,QAAYqrC,EAASrvG,MAAQ,GAAG8F,KAAIT,IACvE,MAAMrF,EAAQ+N,EAAI/N,MAAQqF,EAAI4hB,EAAKjnB,MACnC,MAAO,CACLA,QACA2iC,SAAUA,EAAS3iC,GACpB,IACE,GARsB,KAqBzBwwG,GAAY,SAAS,IAAMD,EAAYvwG,MAAMw7D,MAAK5lD,IACtD,IAAI,MACFiE,GACEjE,EACJ,QAASiE,CAAK,MAEVhB,EAAO,CACX42F,iBACAjjC,OAAO,QAAMjqE,EAAO,SACpBmsG,WACAnrE,WACAvc,WAAW,QAAMzkB,EAAO,aACxBq4E,WAAW,QAAMr4E,EAAO,aACxBiuG,YACAxsB,aACAorB,eACArhG,MACAD,MACAwhG,eACAD,WACAgB,oBACAD,qBACAG,cACAb,iBACA/sE,WACA0iD,UAAU,QAAM9iF,EAAO,YACvBq1E,SAAS,QAAMr1E,EAAO,WACtBosG,aACAP,YACAmB,cACAtoF,OACAknF,YACAF,aACAC,YAAY,QAAM3rG,EAAO,cACzB8rG,OAAO,QAAM9rG,EAAO,SACpB+rG,WACAC,aACAiB,oBACAhB,iBACAjmE,YACAirD,YAGF,OADA,QAAQsa,GAAej1F,GAChBA,CAAI,EC9QA43F,IAAwB,EAAA5tC,EAAA,GAAa,CAChD+zB,QAASx8B,QACTtsD,IAAK,CACH4f,KAAM9Y,OACNulD,UAAU,GAEZpsD,IAAK,CACH2f,KAAM9Y,OACNulD,UAAU,GAEZoS,WAAY,CACV7+C,KAAM9Y,OACNulD,UAAU,GAEZx3B,SAAU,CACRjV,KAAM9Y,OACNulD,UAAU,GAEZqrB,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEX7oD,KAAMqU,WACH,UACF,gBACUk8F,IAAe,UAAmB,CAC7CvwG,KAAM,eACNktE,WAAY,CACVqb,OAAM,MAERnmF,MAAOkuG,KACPjjC,MAAO,CACL,oBAAqBr7D,IAAK,GAE5B,KAAAqoD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,KACL70D,GACE6G,EACJ,MAAMkkG,GAAS,QAAO7C,KAChB,MACJ1qC,EAAK,WACL0K,IACE,UACJ,IAAK6iC,EAAQ,MAAM,IAAIvgD,MAAM,2EAC7B,MAAM,WACJ69C,EAAU,KACVhnF,EAAI,SACJsc,EAAQ,UACR4qE,EAAS,WACTD,EAAU,UACVlnF,EAAS,WACTg9D,EAAU,SACVwP,EAAQ,SACRnO,EAAQ,UACRzK,EAAS,aACT00B,EAAY,SACZZ,EAAQ,aACRU,GACEuB,EACEC,GAAiB,SAAS,IAAOrtE,EAASvjC,WAA0B4L,EAAlBgvE,EAAU56E,SAC5D,iBACJ86E,GACED,GAAa+1B,IACX,iBACJrvB,EAAgB,gBAChBC,IACE,SAAaysB,IACX,OACJ4C,EAAM,SACNC,EAAQ,IACRpgD,EAAG,KACHqgD,EAAI,KACJpgG,EAAI,MACJ2yD,EAAK,KACL0tC,EAAI,GACJC,GACE,EAAAC,UACEC,EAAe,CAACN,EAAQC,EAAUpgD,EAAKqgD,EAAMpgG,EAAM2yD,EAAO0tC,EAAMC,GAChEG,GAAc,SAAS,IACvBnqF,EAAKjnB,MAAc,CAAC,EAAG,EAAG,GAAe,CAAC,EAAG,EAAG,MAEtD,SAASqxG,EAAa/rG,EAAGtF,GACvB,IAAKmxG,EAAa3hG,SAASlK,EAAEvC,KAAM,OACnCuC,EAAEioB,iBACF,MAAM+jF,EAAQrqF,EAAKjnB,OAAS,GACtB+uG,GAASxsG,EAAMuL,IAAMvL,EAAMwL,KAAOujG,EACxC,GAAI,CAAC3gG,EAAM2yD,EAAO0tC,EAAMC,GAAIzhG,SAASlK,EAAEvC,KAAM,CAC3C,MAAMwuG,EAAW/d,EAASxzF,MAAQ,CAACojE,EAAMpjE,MAAQ2Q,EAAO2yD,EAAO0gB,EAAWhkF,MAAQgxG,EAAOC,GAAM7B,EAAapvG,QAAUojE,EAAMpjE,MAAQ,CAAC2Q,EAAMsgG,GAAM,CAAC3tC,EAAO2tC,GACnJjqF,EAAYuqF,EAAS/hG,SAASlK,EAAEvC,KAAO,GAAK,EAC5Cqe,EAAa9b,EAAE25B,SAAW,EAAI35B,EAAE65B,QAAU,EAAI,EACpDn/B,GAAgBgnB,EAAYsqF,EAAQF,EAAYpxG,MAAMohB,EACxD,MAAO,GAAI9b,EAAEvC,MAAQguG,EACnB/wG,EAAQuC,EAAMwL,SACT,GAAIzI,EAAEvC,MAAQ2tD,EACnB1wD,EAAQuC,EAAMuL,QACT,CACL,MAAMkZ,EAAY1hB,EAAEvC,MAAQ+tG,EAAW,GAAK,EAC5C9wG,GAAgBgnB,EAAYsqF,GAASvC,EAAQ,IAAMA,EAAQ,GAAK,GAClE,CACA,OAAOlhG,KAAKC,IAAIvL,EAAMwL,IAAKF,KAAKE,IAAIxL,EAAMuL,IAAK9N,GACjD,CACA,SAAS6uE,EAAUvpE,GACjB,MAAMk/C,EAAW6sD,EAAa/rG,EAAG/C,EAAMgqE,YAC3B,MAAZ/nB,GAAoB5+C,EAAK,oBAAqB4+C,EAChD,CA4CA,OA3CA,EAAA2qB,EAAA,IAAU,KACR,MAAMqiC,GAAqB,QAAcpC,EAAapvG,MAAQ,IAAMuC,EAAMogC,SAAWpgC,EAAMogC,SAAU,KACrG,OAAO,QAAa,MAAO,CACzB,MAAS,CAAC,iBAAkB,CAC1B,0BAA2BpgC,EAAMq0F,QACjC,0BAA2Br0F,EAAMq0F,SAAW0Y,EAAatvG,OACxDuC,EAAMy4D,MAAO8S,EAAW9tE,OAC3B,MAAS,CAAC,CACR,4BAA6BwxG,EAC7B,yBAAyB,QAAcrD,EAAUnuG,QAChDuC,EAAM2E,OACT,KAAQ,SACR,SAAYq8B,EAASvjC,OAAS,EAAI,EAClC,aAAcuC,EAAMpC,KACpB,gBAAiBoC,EAAMwL,IACvB,gBAAiBxL,EAAMuL,IACvB,gBAAiBvL,EAAMgqE,WACvB,kBAAmB8Y,EAASrlF,MAC5B,mBAAoBgnB,EAAUhnB,MAC9B,UAAcqlF,EAASrlF,WAAoB4L,EAAZijE,GAC9B,EAAC,QAAa,MAAO,CACtB,MAAS,CAAC,0BAA2B0S,EAAiBvhF,MAAO86E,EAAiB96E,OAC9E,MAAS,IACJwhF,EAAgBxhF,QAEpB,OAAO,SAAgB,QAAa,MAAO,CAC5C,MAAS,CAAC,yBAA0BuhF,EAAiBvhF,OACrD,MAASwhF,EAAgBxhF,OACxB,MAAO,CAAC,EAAC,QAAkB,UAAWuC,EAAMijF,OAAQ,KAAM,CAC3DisB,QAAQ,EACRzwD,QAAQ,OACJ,QAAaq1B,EAAkB,CACnC,OAAU,iBACT,CACDrtB,QAAS,IAAM,EAAC,SAAgB,QAAa,MAAO,CAClD,MAAS,mCACR,EAAC,QAAa,MAAO,CACtB,MAAS,CAAC,0BACT,EAAC,QAAa,MAAO,KAAM,CAACyR,EAAM,iBAAiB,CACpD8R,WAAYhqE,EAAMgqE,cACdhqE,EAAMgqE,WAAWsiC,QAAQ5nF,EAAKjnB,MAAQ0uG,EAAS1uG,MAAQ,SAAU,CAAC,CAAC,KAAQkuG,EAAWluG,OAASuC,EAAMq0F,SAAgC,WAArBsX,EAAWluG,aAC/H,IAEC,CAAC,CACV,ICzJW0xG,IAAwB,EAAA7uC,EAAA,GAAa,CAChDjqB,MAAO,CACLlrB,KAAM9Y,OACNulD,UAAU,GAEZl3B,KAAM,CACJvV,KAAM9Y,OACNulD,UAAU,OAET,UACF,gBACUw3C,IAAe,UAAmB,CAC7CxxG,KAAM,eACNoC,MAAOmvG,KACPlkC,MAAO,CAAC,EACR,KAAAhT,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMkkG,GAAS,QAAO7C,IACtB,IAAK6C,EAAQ,MAAM,IAAIvgD,MAAM,sEAC7B,MAAM,MACJoc,EAAK,YACL+jC,EAAW,QACX34B,EAAO,UACPw2B,EAAS,SACTE,EAAQ,WACRC,EAAU,eACVC,EAAc,UACdjmE,EAAS,SACTirD,EAAQ,IACRzlF,EAAG,IACHD,EAAG,aACHshG,GACEuB,GACE,eACJ54B,GACED,GAAWF,IAEblL,uBAAwBklC,EACxBjlC,sBAAuBklC,IACrB,SAAmBrD,IAErB9hC,uBAAwBolC,EACxBnlC,sBAAuBolC,IACrB,SAAmBxD,GACjByD,GAAW,SAAS,IAAM,SAASxe,EAASxzF,MAAQ,QAAU,YAAYovG,EAAapvG,MAAQ,MAAQ,YACvGiyG,GAAS,SAAS,IAAMze,EAASxzF,MAAQ,SAAW,UACpDkyG,GAAmB,SAAS,KACzB,CACL,CAACF,EAAShyG,OAAQ,KAClB,CAACiyG,EAAOjyG,OAAQ,WAGdmyG,GAAiB,SAAS,IAAM5vG,EAAM0gC,KAAO1gC,EAAMq2C,QACnDw5D,GAAkB,SAAS,KACxB,CACL,CAACJ,EAAShyG,QAAQ,QAAcuC,EAAMq2C,MAAO,KAC7C,CAACq5D,EAAOjyG,QAAQ,QAAcmyG,EAAenyG,MAAO,SAGlDqyG,GAAgB,SAAS,KAC7B,IAAKjE,EAAUpuG,MAAO,MAAO,GAC7B,MAAMquG,EAAQ7a,EAASxzF,MAAQuwG,EAAYvwG,MAAM6F,QAAQm6D,UAAYuwC,EAAYvwG,MACjF,OAAOquG,EAAMvoG,KAAI,CAACwsG,EAAM35F,KACtB,MAAM45F,EAAiBD,EAAKtyG,QAAU+N,EAAI/N,OAASsyG,EAAKtyG,QAAU8N,EAAI9N,OAAQ,QAAcsyG,EAAK3vE,SAAU,UAAO/2B,EAClH,OAAO,QAAa,MAAO,CACzB,IAAO0mG,EAAKtyG,MACZ,MAAS,CAAC,uBAAwB,CAChC,+BAAgCsyG,EAAK3vE,UAAYpgC,EAAMq2C,OAAS05D,EAAK3vE,UAAYpgC,EAAM0gC,KACvF,8BAA+BqvE,EAAKtyG,QAAU+N,EAAI/N,MAClD,6BAA8BsyG,EAAKtyG,QAAU8N,EAAI9N,QAEnD,MAAS,CACP,CAACgyG,EAAShyG,OAAQuyG,IAEnB,EAAED,EAAKz4F,OAAS4gD,EAAM,iBAAkB,QAAa,MAAO,CAC7D,MAAS,8BACR,CAACA,EAAM,gBAAgB,CACxB63C,OACA35F,WACI25F,EAAKz4F,SAAS,GACpB,IA6BJ,OA3BA,EAAAs1D,EAAA,IAAU,KACD,QAAa,MAAO,CACzB,MAAS,CAAC,iBAAkB4I,EAAe/3E,MAAOuC,EAAMy4D,OACxD,MAAS,CAAC,CACR,yBAAyB,QAAczyB,EAAUvoC,OACjD,wBAAwB,QAAcsuG,EAAStuG,QAC9CuC,EAAM2E,QACR,EAAC,QAAa,MAAO,CACtB,MAAS,CAAC,6BAA8B4qG,EAAkB9xG,MAAO,CAC/D,wCAAyCwsE,EAAMxsE,QAAUwuG,EAAexuG,QAE1E,MAAS,IACJkyG,EAAiBlyG,SACjB+xG,EAAiB/xG,QAErB,OAAO,QAAa,MAAO,CAC5B,MAAS,CAAC,uBAAwB4xG,EAAsB5xG,OACxD,MAAS,IACJoyG,EAAgBpyG,SAChB6xG,EAAqB7xG,QAEzB,MAAOouG,EAAUpuG,QAAS,QAAa,MAAO,CAC/C,MAAS,CAAC,wBAAyB,CACjC,qCAA0D,WAApBouG,EAAUpuG,SAEjD,CAACqyG,EAAcryG,YAEb,CAAC,CACV,IC5GWwyG,IAAmB,EAAA3vC,EAAA,GAAa,IACxC8zB,QACAqX,QACAvT,KACHluB,WAAY,CACV7+C,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEV,WACUypD,IAAU,UAAmB,CACxCtyG,KAAM,UACNoC,MAAOiwG,KACPhlC,MAAO,CACL,iBAAkBxtE,IAAS,EAC3B,oBAAqBmS,IAAK,EAC1BymC,MAAO54C,IAAS,EAChB0wD,IAAK1wD,IAAS,GAEhB,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,KACL70D,GACE6G,EACJ,MAAMimG,GAAoB,WACpB,WACJ5kC,IACE,UACEihC,EAAQN,GAASlsG,GACjBqrE,GAAQ,QAAgBrrE,EAAO,kBAAcqJ,GAAW5L,GACrD+uG,EAAMJ,WAAoB,MAAT3uG,EAAgB+uG,EAAMhhG,IAAI/N,MAAQA,MAEtD,IACJ+N,EAAG,IACHD,EAAG,aACHwhG,EAAY,WACZX,EAAU,kBACV0B,EAAiB,mBACjBD,EAAkB,kBAClBZ,EAAiB,SACjB7sE,EAAQ,UACR6tE,EAAS,SACTnrB,GACEypB,GAAU,CACZvsG,QACAwsG,QACAC,cAAe,KACbppG,EAAK,QAASgoE,EAAM5tE,MAAM,EAE5BkvG,YAAat5F,IACX,IAAI,MACF5V,GACE4V,EACJ,MAAM+8F,EAAehE,EAAW3uG,GAChC4tE,EAAM5tE,MAAQ2yG,EACd/sG,EAAK,MAAO+sG,EAAa,EAE3B1D,aAActgB,IACZ,IAAI,MACF3uF,GACE2uF,EACJ,OAAO/gB,EAAM5tE,MAAQ2uG,EAAW3uG,EAAM,EAExCmvG,eAAgB,IAAMuD,EAAkB1yG,OAAO+qE,OAE3C,UACJ7B,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACPqwG,GAAY,SAAS,IAAMjwE,EAASirC,EAAM5tE,SA+DhD,OA9DA,EAAAmvE,EAAA,IAAU,KACR,MAAMotB,EAAazB,GAAOprB,YAAYntE,GAChCwjF,KAAgBxjF,EAAMsX,OAAS4gD,EAAM5gD,OAAS4gD,EAAMjvC,SAC1D,OAAO,QAAasvE,IAAQ,QAAY,CACtC,MAAS,CAAC,WAAY,CACpB,yBAA0BrgC,EAAM,eAAiB+1C,EAAUxwG,MAC3D,oBAAqBkpE,EAAUlpE,MAC/B,oBAAqBsvG,EAAatvG,MAClC,qBAAsBuC,EAAMghC,UAC3BuqC,EAAW9tE,MAAOuC,EAAMy4D,OAC3B,MAASz4D,EAAM2E,OACdq1F,EAAY,CACb,QAAWrzB,EAAUlpE,QACnB,IACCy6D,EACHjvC,QAASu6D,EAAa2G,IAAa,QAAa,KAAW,KAAM,CAACjyB,EAAM5gD,QAAQ6yE,KAAenqF,EAAMsX,OAAQ,QAAa0tE,GAAQ,CAChI,GAAMmF,EAAU9qF,GAAG5B,MACnB,MAAS,kBACT,KAAQuC,EAAMsX,OACb,WAAQjO,GAAY6uD,EAAMjvC,UAAUkhE,UAAe9gF,EACtDo9C,QAAS6lC,IACP,IAAI,GACFjtF,EAAE,WACF81F,GACE7I,EACJ,OAAO,QAAa,MAAO,CACzB,MAAS,sBACT,YAAgBxJ,EAASrlF,WAA4B4L,EAApBykG,EACjC,oBAAwBhrB,EAASrlF,WAA6B4L,EAArBwkG,GACxC,EAAC,QAAa,QAAS,CACxB,GAAMxuG,EAAG5B,MACT,KAAQuC,EAAMpC,MAAQyB,EAAG5B,MACzB,WAAcuC,EAAMghC,SACpB,WAAchhC,EAAM8iF,SACpB,SAAY,KACZ,MAASzX,EAAM5tE,OACd,OAAO,QAAa2xG,GAAc,CACnC,IAAOnC,EACP,MAAS,EACT,KAAQoD,EAAU5yG,OACjB,CACD,aAAcy6D,EAAM,iBAClB,QAAai2C,GAAc,CAC7B,IAAOgC,EACP,mBAAoBhb,EAAW13F,MAC/B,QAAWkpE,EAAUlpE,MACrB,IAAO+N,EAAI/N,MACX,IAAO8N,EAAI9N,MACX,WAAc4tE,EAAM5tE,MACpB,sBAAuBmS,GAAKy7D,EAAM5tE,MAAQmS,EAC1C,SAAYygG,EAAU5yG,MACtB,UAAauC,EAAMq4E,UACnB,QAAW9L,EACX,OAAUtoE,EACV,OAAUjE,EAAMijF,OAChB,KAAQjjF,EAAMpC,MACb,CACD,cAAes6D,EAAM,kBACnB,GAEN,IAEG,CAAC,CACV,ICzIWo4C,IAA+B,EAAAhwC,EAAA,GAAa,CACvD2J,MAAO,CACL9+C,KAAM1sB,QAERuiC,SAAU62B,QACV04C,UAAW14C,YACR,UACF,uBACU24C,IAAsB,EAAAlhB,EAAA,IAAgB,CACjD1xF,KAAM,sBACNoC,MAAOswG,KACPrlC,MAAO,CACL,eAAgBhB,IAAS,GAE3B,KAAAhS,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,GACE6G,EACJ,MAAMumG,EAAkB,IAAIC,gBAE5B7rC,eAAe8rC,IACb,IAAK,KAAsB,OAC3B,MAAMC,EAAa,IAAI5vG,OAAO6vG,WAC9B,IACE,MAAMltC,QAAeitC,EAAWpkB,KAAK,CACnCskB,OAAQL,EAAgBK,SAEpBC,GAAgB,SAASptC,EAAOqtC,SACtC3tG,EAAK,eAAgB,IACfrD,EAAMiqE,OAASsgC,MAChBwG,GAEP,CAAE,MAAOhuG,GAAI,CACf,CAqDA,OAnEA,SAAY,IAAM0tG,EAAgBQ,WAelC,EAAArkC,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,yBAA0B,CAClC,qCAAsC5sE,EAAMuwG,WAC3CvwG,EAAMy4D,OACT,MAASz4D,EAAM2E,OACd,CAAC,OAAwB,QAAa,MAAO,CAC9C,MAAS,sCACT,IAAO,cACN,EAAC,QAAay0E,GAAM,CACrB,QAAWu3B,EACX,KAAQ,cACR,QAAW,QACX,QAAW,eACV,SAAS,QAAa,MAAO,CAC9B,MAAS,+BACR,EAAC,QAAa,MAAO,CACtB,MAAS,CACPO,YAAY,SAASlxG,EAAMiqE,OAASsgC,MAErC,SAAS,QAAa,MAAO,CAC9B,MAAS,mCACR,EAAC,QAAa2F,GAAS,CACxB,MAAS,4DACT,WAAclwG,EAAMiqE,OAAOzR,EAC3B,sBAAuBA,GAAKn1D,EAAK,eAAgB,IAC3CrD,EAAMiqE,OAASsgC,GACnB/xC,MAEF,KAAQ,EACR,IAAO,EACP,IAAO,IACP,SAAYx4D,EAAMghC,SAClB,UAAa,GACb,UAAa,EACb,eAAkB,QAClB,aAAe,GACd,OAAQhhC,EAAMuwG,YAAa,QAAaL,GAAS,CAClD,MAAS,8DACT,WAAclwG,EAAMiqE,OAAO5hE,GAAK,EAChC,sBAAuBA,GAAKhF,EAAK,eAAgB,IAC3CrD,EAAMiqE,OAASsgC,GACnBliG,MAEF,KAAQ,EAAI,IACZ,IAAO,EACP,IAAO,EACP,SAAYrI,EAAMghC,SAClB,UAAa,GACb,UAAa,EACb,eAAkB,QAClB,aAAe,GACd,YACI,CAAC,CACV,IClGWmwE,GAAM,CACjB7mF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEC,GAAO,CAClB3nF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEE,GAAS,CACpB5nF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEG,GAAa,CACxB7nF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEI,GAAS,CACpB9nF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEK,GAAO,CAClB/nF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEM,GAAY,CACvBhoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEO,GAAO,CAClBjoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEQ,GAAO,CAClBloF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEES,GAAQ,CACnBnoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEU,GAAa,CACxBpoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEW,GAAO,CAClBroF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEY,GAAS,CACpBtoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEa,GAAQ,CACnBvoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEc,GAAS,CACpBxoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEe,GAAa,CACxBzoF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEgB,GAAQ,CACnB1oF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEqB,GAAW,CACtB3oF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEsB,GAAO,CAClB5oF,KAAM,UACN8mF,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEEuB,GAAS,CACpBC,MAAO,UACPC,MAAO,UACPC,YAAa,aAEf,QACEnC,OACAc,QACAC,UACAC,cACAC,UACAC,QACAC,aACAC,QACAC,QACAC,SACAC,cACAC,QACAC,UACAC,SACAC,UACAC,cACAC,SACAC,YACAC,QACAC,WCpTK,MAAMI,IAAgC,EAAAjzC,EAAA,GAAa,CACxDkzC,SAAU,CACRroF,KAAMrpB,MACN2kD,QAAS,IAAMgtD,GAAmBC,KAEpC1yE,SAAU62B,QACVoS,MAAOxrE,OACP+iE,UAAW,CAACnvD,OAAQJ,YACjB,UACF,wBACH,SAASwhG,GAAmBC,GAC1B,OAAOj1G,OAAO0D,KAAKuxG,GAAQnwG,KAAI/C,IAC7B,MAAMypE,EAAQypC,EAAOlzG,GACrB,OAAOypE,EAAM3/C,KAAO,CAAC2/C,EAAM3/C,KAAM2/C,EAAM2nC,QAAS3nC,EAAM0nC,QAAS1nC,EAAMynC,QAASznC,EAAMwnC,QAASxnC,EAAMunC,SAAUvnC,EAAMsnC,SAAUtnC,EAAMqnC,SAAUrnC,EAAMonC,SAAUpnC,EAAMmnC,UAAY,CAACnnC,EAAMmpC,MAAOnpC,EAAMopC,MAAOppC,EAAMqpC,YAAY,GAEhO,CACO,MAAMK,IAAuB,EAAArkB,EAAA,IAAgB,CAClD1xF,KAAM,uBACNoC,MAAOuzG,KACPtoC,MAAO,CACL,eAAgBhB,IAAS,GAE3B,KAAAhS,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,GACE6G,EAyBJ,OAxBA,EAAA0iE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,0BAA2B5sE,EAAMy4D,OAC3C,MAAS,CAAC,CACR+I,WAAW,QAAcxhE,EAAMwhE,YAC9BxhE,EAAM2E,QACR,EAAC,QAAa,MAAO,KAAM,CAAC3E,EAAMwzG,SAASjwG,KAAIqwG,IAAU,QAAa,MAAO,CAC9E,MAAS,mCACR,CAACA,EAAOrwG,KAAI0mE,IACb,MAAMugC,GAAO,SAAWvgC,GAClB4pC,GAAO,SAASrJ,GAChB0G,GAAa,SAAS1G,GAC5B,OAAO,QAAa,MAAO,CACzB,MAAS,iCACT,QAAW,IAAMqJ,GAAQxwG,EAAK,eAAgBwwG,IAC7C,EAAC,QAAa,MAAO,CACtB,MAAS,CACP3C,eAED,CAAClxG,EAAMiqE,QAAS,QAAUjqE,EAAMiqE,MAAO4pC,IAAQ,QAAah1B,GAAO,CACpE,KAAQ,UACR,KAAQ,WACR,OAAS,SAAY5U,EAAO,WAAa,EAAI,QAAU,SACtD,WAAQ5gE,KAAa,cAEnB,CAAC,CACV,IC3CWyqG,IAAkB,EAAAxzC,EAAA,GAAa,CAC1C2J,MAAOh4D,UACJ+lE,SACA,aACA,aACAI,QACAmI,QACA6B,QACAhN,QACAtE,QACA,WACF,UACUijC,IAAS,UAAmB,CACvCn2G,KAAM,SACNoC,MAAO8zG,KACP,KAAA77C,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,cACJm4E,GACED,GAAUl4E,IACR,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,eACJ0gF,GACEF,GAAYxgF,IACV,gBACJsiF,GACED,GAAYriF,IACV,eACJw1E,GACED,GAAWv1E,GAKf,OAJA,EAAA4sE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,UAAW+9D,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO06E,EAAc16E,MAAO86E,EAAiB96E,MAAO6kF,EAAgB7kF,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACvK,MAAS,CAAC2R,EAAsB3sE,MAAOquE,EAAgBruE,MAAOijF,EAAejjF,MAAOuC,EAAM2E,QACzFuzD,KACI,CAAC,CACV,IClDW87C,IAAwB,EAAA1zC,EAAA,GAAa,CAChD0oC,aAAc,CACZ79E,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,KAEXzlB,SAAU62B,QACV6wC,QAAS,CACPv9E,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEXwtD,WAAYp8C,QACZq8C,YAAar8C,QACbs8C,WAAYt8C,QACZxT,KAAM,CACJl5B,KAAMlZ,OACNw0C,QAAS,OACT+Z,UAAW5wD,GAAKnR,OAAO0D,KAAK8oG,IAAOh+F,SAAS2C,IAE9Cq7F,MAAO,CACL9/E,KAAMrpB,MACN2kD,QAAS,IAAMhoD,OAAO0D,KAAK8oG,IAC3BzqC,UAAW5wD,GAAK9N,MAAMC,QAAQ6N,IAAMA,EAAE+5C,OAAMnwB,GAAK/6B,OAAO0D,KAAK8oG,IAAOh+F,SAASusB,MAE/E46E,aAAcv8C,QACd27C,SAAU1xG,MACVuyG,kBAAmB,CACjBlpF,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXujB,WAAY,CACV7+C,KAAM,CAAC1sB,OAAQwT,aAEd,QAAK6hG,GAAgB,CACtB9iG,MAAO,MACL,CAAC,SAAU,WAAY,YAAa,YAAa,WAAY,cAChE,gBACUsjG,IAAe,EAAAhlB,EAAA,IAAgB,CAC1C1xF,KAAM,eACNoC,MAAOg0G,KACP/oC,MAAO,CACL,oBAAqBhB,IAAS,EAC9B,cAAe5lB,IAAQ,GAEzB,KAAA4T,CAAMj4D,GACJ,MAAMqkD,GAAO,QAAgBrkD,EAAO,QAC9B4oG,GAAM,QAAI,MACVv9B,GAAQ,QAAgBrrE,EAAO,kBAAcqJ,GAAWuG,IAC5D,GAAS,MAALA,GAAmB,KAANA,EAAU,OAAO,KAClC,IAAIvI,EACJ,IACEA,GAAI,UAAS,SAAWuI,GAC1B,CAAE,MAAOtC,GAEP,OADA,SAAYA,GACL,IACT,CACA,OAAOjG,CAAC,IACPuI,GACIA,EACEw6F,GAAax6F,EAAG5P,EAAMgqE,YADd,OAGXuqC,GAAe,SAAS,IACrBlpC,EAAM5tE,MAAQ,IAChB4tE,EAAM5tE,MACT+6D,EAAGowC,EAAInrG,OAAS4tE,EAAM5tE,MAAM+6D,GAC1B,QAEA,WACJ+S,IACE,UACJ,IAAIipC,GAAiB,GACrB,QAAMnpC,GAAOz7D,IACN4kG,EAKA5kG,IACLg5F,EAAInrG,MAAQmS,EAAE4oD,GAJZg8C,GAAiB,CAIJ,GACd,CACD9wC,WAAW,IAEb,MAAM+wC,EAAcZ,IAClBW,GAAiB,EACjB5L,EAAInrG,MAAQo2G,EAAKr7C,EACjB6S,EAAM5tE,MAAQo2G,CAAI,EA+DpB,OA7DA,SAAc,KACP7zG,EAAMirG,MAAMh+F,SAASo3C,EAAK5mD,SAAQ4mD,EAAK5mD,MAAQuC,EAAMirG,MAAM,GAAE,KAEpE,SAAgB,CACdiF,QAAS,CACPjmC,WAAO5gE,EACP2iG,gBAAY3iG,EACZ4iG,oBAAgB5iG,MAGpB,EAAAujE,EAAA,IAAU,KACR,MAAM8nC,EAAaX,GAAO5mC,YAAYntE,GACtC,OAAO,QAAa+zG,IAAQ,QAAY,CACtC,QAAW/zG,EAAMq1E,QACjB,UAAar1E,EAAMq4E,UACnB,MAASr4E,EAAM6wE,MACf,MAAS,CAAC,iBAAkBtF,EAAW9tE,MAAOuC,EAAMy4D,OACpD,MAAS,CAAC,CACR,8BAA8B,SAAS,IACjC87C,EAAa92G,OAAS8sG,GAC1BliG,EAAG,KAEJrI,EAAM2E,QACR+vG,EAAY,CACb,SAAY10G,EAAMgR,QAChB,CACFy1C,QAAS,IAAM,EAAEzmD,EAAMi0G,aAAc,QAAatL,GAAoB,CACpE,IAAO,SACP,MAAS4L,EAAa92G,MACtB,iBAAkBg3G,EAClB,SAAYz0G,EAAMghC,SAClB,QAAWhhC,EAAM0oG,QACjB,MAAS1oG,EAAMgR,MACf,OAAUhR,EAAMgpG,cACf,QAAShpG,EAAMk0G,cAAgBl0G,EAAMm0G,cAAe,QAAa,MAAO,CACzE,IAAO,WACP,MAAS,4BACR,EAAEn0G,EAAMk0G,cAAe,QAAa1D,GAAqB,CAC1D,IAAO,UACP,MAAS+D,EAAa92G,MACtB,iBAAkBg3G,EAClB,WAAcpwD,EAAK5mD,MAAM2xD,SAAS,KAClC,SAAYpvD,EAAMghC,UACjB,OAAQhhC,EAAMm0G,aAAc,QAAa/I,GAAkB,CAC5D,IAAO,OACP,MAASprG,EAAMirG,MACf,KAAQ5mD,EAAK5mD,MACb,gBAAiB+7B,GAAK6qB,EAAK5mD,MAAQ+7B,EACnC,MAAS+6E,EAAa92G,MACtB,iBAAkBg3G,EAClB,SAAYz0G,EAAMghC,UACjB,QAAShhC,EAAMo0G,eAAgB,QAAaT,GAAsB,CACnE,IAAO,WACP,MAASY,EAAa92G,MACtB,iBAAkBg3G,EAClB,UAAaz0G,EAAMq0G,kBACnB,SAAYr0G,EAAMwzG,SAClB,SAAYxzG,EAAMghC,UACjB,QACH,IAEG,CAAC,CACV,ICzIF,SAAS,GAAgB7zB,EAAMZ,EAASrM,GACtC,GAAe,MAAXqM,EAAiB,OAAOY,EAC5B,GAAIrL,MAAMC,QAAQwK,GAAU,MAAM,IAAIshD,MAAM,uCAC5C,MAA0B,kBAAZthD,IAAyBA,GAAU,QAAa,KAAW,KAAM,EAAC,QAAa,OAAQ,CACnG,MAAS,sBACR,CAACY,EAAKwnB,OAAO,EAAGpoB,MAAY,QAAa,OAAQ,CAClD,MAAS,oBACR,CAACY,EAAKwnB,OAAOpoB,EAASrM,MAAW,QAAa,OAAQ,CACvD,MAAS,sBACR,CAACiN,EAAKwnB,OAAOpoB,EAAUrM,OAAciN,CAC1C,CACO,MAAMwnG,IAAqB,EAAAr0C,EAAA,GAAa,CAC7CohC,gBAAiB,CACfv2E,KAAM,CAAC0sC,QAAS5lD,SAElB0vF,cAAe,CACbx2E,KAAM0sC,QACNpR,SAAS,GAEXmuD,WAAY9yG,SACTm+F,GAAgB,CACjBG,WAAY,CAAC,cAEZ3C,GAAgB,CACjBK,YAAY,EACZzM,cAAc,QAEb,QAAKuH,GAAoB,CAC1B5uB,WAAY,KACZt4B,KAAM,aACJ,CAAC,kBAAmB,QAAS,wBAC9B,QAAoB,CACrB7sB,YAAY,KAEb,aACUgwF,IAAY,UAAmB,CAC1Cj3G,KAAM,YACNoC,MAAO20G,KACP1pC,MAAO,CACL,iBAAkBopB,IAAW,EAC7B,oBAAqB52F,IAAS,EAC9B,gBAAiBA,IAAS,EAC1B,cAAeA,IAAS,GAE1B,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,EACJpH,IACE,UACE27F,GAAgB,UAChB93B,GAAY,SAAW,GACvBgxB,GAAa,SAAW,GACxBkK,GAAe,SAAW,GAC1BnD,GAAW,UACXC,GAAoB,UACpBC,GAAQ,QAAgB5+F,EAAO,QAC/BynE,GAAO,QAAS,CACpBzkE,IAAK,IAAM47F,EAAMnhG,MACjBwF,IAAK2M,IACCgvF,EAAMnhG,QAAUmS,GAAK8uF,EAASjhG,OAAO,cAAc8R,OACvDqvF,EAAMnhG,MAAQmS,EAAC,IAGbkyF,GAAiB,SAAY,GACnC,IAAIgT,GAAU,EACd,MAAM7qC,GAAQ,SAAS,IAAMw0B,EAAchhG,OAAOwsE,QAC5C3yD,GAAQ,SAAS,IAAMmwD,EAAKhqE,MAAQuC,EAAM49F,UAAY59F,EAAM69F,YAC5D,MACJ/tB,EAAK,YACLuiB,EAAW,aACXC,GACEH,GAASnyF,IACP,iBACJg/E,EAAgB,gBAChBC,IACE,SAAahV,GACXoB,GAAQ,QAAgBrrE,EAAO,aAAc,IAAI4P,GAAKyiF,GAAY,QAAYziF,MAAKA,IACvF,MAAMivF,EAAcvM,EAAa1iF,GACjC,OAAO5P,EAAMu8E,SAAWsiB,EAAcA,EAAY,IAAM,IAAI,IAExDpH,EAAOP,KACPsI,GAAW,SAAS,OAASx/F,EAAM09F,QAASxlC,EAAMunC,QAClDuC,GAAmB,SAAS,IAAMxC,EAAS/hG,SAAWy6D,EAAM4mC,YAC5DiW,GAAU,QAAY/0G,EAAMu8E,UAAaylB,EAAiBvkG,MAAsC,GAA9B4tE,EAAM5tE,MAAM,IAAIs7E,OAAS,IAC3FvzE,GAAS,QAAS,CACtBxC,IAAK,IACI+xG,EAAQt3G,MAEjBwF,IAAKyjB,IAKH,GAJAquF,EAAQt3G,MAAQipB,GAAO,GAClB1mB,EAAMu8E,UAAaylB,EAAiBvkG,QACvC4tE,EAAM5tE,MAAQ,CAACw0F,GAAcjyF,EAAO0mB,KAElCA,GAAO1mB,EAAMu8E,UAAYv8E,EAAM40G,YAAY10G,OAAQ,CACrD,MAAMw0D,EAAShuC,EAAItf,MAAM,IAAI8nD,OAAO,MAAMlvD,EAAM40G,WAAWrsG,KAAK,WAC5DmsD,EAAOx0D,OAAS,IAClBw0D,EAAO/wD,SAAQiM,IACbA,EAAIA,EAAEzI,OACFyI,GAAGotE,EAAOiV,GAAcjyF,EAAO4P,GAAG,IAExCmlG,EAAQt3G,MAAQ,GAEpB,CACKipB,IAAKo7E,EAAerkG,OAAS,GAClCk6F,EAAWl6F,OAASipB,CAAG,IAGrBoyE,GAAe,SAAS,IACS,oBAAvB94F,EAAM84F,aAA8B94F,EAAM84F,aAAaztB,EAAM5tE,OAAuC,kBAAvBuC,EAAM84F,aAA4B94F,EAAM84F,aAAe94F,EAAMu8E,SAAWlR,EAAM5tE,MAAMyC,OAASsF,EAAO/H,MAAMyC,UAEvM,QAAM60G,GAASt3G,IACTq3G,GAGF,SAAS,IAAMA,GAAU,IAChBnuC,EAAUlpE,QAAUgqE,EAAKhqE,QAClCgqE,EAAKhqE,OAAQ,GAEf4F,EAAK,gBAAiB5F,EAAM,KAE9B,QAAM4tE,GAAO5tE,IACNuC,EAAMu8E,UAAaylB,EAAiBvkG,QACvCs3G,EAAQt3G,MAAQA,EAAM,IAAIs7E,OAAS,GACrC,IAEF,MAAM,cACJgoB,EAAa,WACbG,GACEJ,GAAU9gG,EAAO8vE,GAAO,IAAM6nB,EAAWl6F,MAAQ,GAAK+H,EAAO/H,QAC3DwhG,GAAe,SAAS,IACxBj/F,EAAM+9F,aACDgD,EAActjG,MAAM4E,QAAO0/F,IAAiB12B,EAAM5tE,MAAMw7D,MAAKx0B,GAAKA,EAAEhnC,QAAUskG,EAAatkG,UAE7FsjG,EAActjG,QAEjBswF,GAAiB,SAAS,IAAM1iB,EAAM5tE,MAAM8F,KAAIu7F,GAAaA,EAAUrhG,UACvEwkG,GAAiB,SAAS,KAC9B,MAAMC,GAAwC,IAA1BliG,EAAM0hG,iBAAsD,UAA1B1hG,EAAM0hG,iBAA+Bl8F,EAAO/H,QAAUwhG,EAAaxhG,MAAM,IAAIs7E,MACnI,OAAOmpB,GAAejD,EAAaxhG,MAAMyC,OAAS,IAAMy3F,EAAWl6F,QAAUokG,EAAapkG,KAAK,IAE3FyhG,GAAe,SAAS,IAAMl/F,EAAM89F,aAAemB,EAAaxhG,MAAMyC,QAAUF,EAAM8iF,UAAY2U,GAAMlB,WAAW94F,QACnHy/F,GAAU,UACVkC,EAAanC,GAAaC,EAASuB,GACzC,SAAS9E,EAAQ52F,GACf+xG,GAAU,EACN90G,EAAMo+F,cACR32B,EAAKhqE,OAAQ,EAEjB,CACA,SAAS4hG,IACHH,EAAazhG,QACjBgqE,EAAKhqE,OAAQ,EACf,CACA,SAAS0kG,EAAoBp/F,GACvBm8F,EAAazhG,QACbkpE,EAAUlpE,QACZsF,EAAEioB,iBACFjoB,EAAE0rB,mBAEJg5C,EAAKhqE,OAASgqE,EAAKhqE,MACrB,CACA,SAAS8/F,EAAcx6F,IACjB,QAAeA,IACjB07F,EAAchhG,OAAO8uE,OAEzB,CAEA,SAASD,EAAUvpE,GACjB,IAAI,QAAqBA,IAAM/C,EAAM8iF,UAAY2U,GAAMlB,WAAW94F,MAAO,OACzE,MAAMo8F,EAAiB4E,EAAchhG,MAAMo8F,eACrC35F,EAASmrE,EAAM5tE,MAAMyC,OA4B3B,IA3BI4hG,EAAerkG,OAAS,GAAK,CAAC,QAAS,YAAa,WAAWwP,SAASlK,EAAEvC,OAC5EuC,EAAEioB,iBAEA,CAAC,QAAS,aAAa/d,SAASlK,EAAEvC,OACpCinE,EAAKhqE,OAAQ,GAEX,CAAC,UAAUwP,SAASlK,EAAEvC,OACxBinE,EAAKhqE,OAAQ,GAEX,CAAC,QAAS,SAAU,OAAOwP,SAASlK,EAAEvC,OACpCyhG,EAAexkG,OAAS,CAAC,QAAS,OAAOwP,SAASlK,EAAEvC,OAAS6qE,EAAM5tE,MAAMw7D,MAAK5lD,IAChF,IAAI,MACF5V,GACE4V,EACJ,OAAO5V,IAAUwhG,EAAaxhG,MAAM,GAAGA,KAAK,KAE5Cu/E,EAAO+jB,EAActjG,MAAM,IAE7Bk6F,EAAWl6F,OAAQ,GAEP,cAAVsF,EAAEvC,KAAuByhG,EAAexkG,OAC1Cy/F,EAAQz/F,OAAO8uE,MAAM,QAET,UAAVxpE,EAAEvC,KAAmBgF,EAAO/H,QAC9Bu/E,EAAOiV,GAAcjyF,EAAOwF,EAAO/H,QAC/BukG,EAAiBvkG,QAAOs3G,EAAQt3G,MAAQ,KAE1C,CAAC,YAAa,UAAUwP,SAASlK,EAAEvC,KAAM,CAC3C,IAAKR,EAAMu8E,UAAYylB,EAAiBvkG,OAAS4tE,EAAM5tE,MAAMyC,OAAS,IAAMsF,EAAO/H,MAAO,OAAOu/E,EAAO3R,EAAM5tE,MAAM,IAAI,GACxH,IAAKqkG,EAAerkG,MAAO,CACzB,MAAM2kG,EAAyBN,EAAerkG,MAC9Cu/E,EAAO3R,EAAM5tE,MAAMqkG,EAAerkG,QAAQ,GAC1CqkG,EAAerkG,MAAQ2kG,GAA0BliG,EAAS,EAAIA,EAAS,EAAIkiG,CAC7E,KAAqB,cAAVr/F,EAAEvC,KAAwBgF,EAAO/H,QAC1CqkG,EAAerkG,MAAQyC,EAAS,EAEpC,CACA,GAAKF,EAAMu8E,SAAX,CACA,GAAc,cAAVx5E,EAAEvC,IAAqB,CACzB,GAAIshG,EAAerkG,MAAQ,GAAKo8F,EAAiB,EAAG,OACpD,MAAMrrF,EAAOszF,EAAerkG,OAAS,EAAIqkG,EAAerkG,MAAQ,EAAIyC,EAAS,EACzEmrE,EAAM5tE,MAAM+Q,GACdszF,EAAerkG,MAAQ+Q,GAEvBszF,EAAerkG,OAAS,EACxBghG,EAAchhG,MAAM4kG,kBAAkB78F,EAAO/H,MAAMyC,OAAQsF,EAAO/H,MAAMyC,QAE5E,CACA,GAAc,eAAV6C,EAAEvC,IAAsB,CAC1B,GAAIshG,EAAerkG,MAAQ,EAAG,OAC9B,MAAMmE,EAAOkgG,EAAerkG,MAAQ,EAChC4tE,EAAM5tE,MAAMmE,GACdkgG,EAAerkG,MAAQmE,GAEvBkgG,EAAerkG,OAAS,EACxBghG,EAAchhG,MAAM4kG,kBAAkB,EAAG,GAE7C,CApB2B,CAqB7B,CACA,SAAS51B,IACHzsE,EAAM+sE,OACR4xB,EAAkBlhG,OAAO+9F,uBAE7B,CACA,SAAS/vB,IACH9E,EAAUlpE,QACZk6F,EAAWl6F,OAAQ,EACnBghG,EAAchhG,OAAO8uE,QAEzB,CAEA,SAASyQ,EAAO/nD,GACd,IAAIhyB,IAAMmG,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,KAAmBA,UAAU,GACzE,GAAK6rB,IAAQA,EAAKj1B,MAAMghC,SACxB,GAAIhhC,EAAMu8E,SAAU,CAClB,MAAMnmE,EAAQi1D,EAAM5tE,MAAMguC,WAAUqzD,GAAa9+F,EAAMslF,gBAAgBwZ,EAAUrhG,MAAOw3B,EAAKx3B,SACvFgQ,EAAa,MAAPxK,IAAgBmT,EAAQnT,EACpC,IAAKmT,EAAO,CACV,MAAM3Y,EAAQgQ,EAAM,IAAI49D,EAAM5tE,MAAOw3B,GAAQ,IAAIo2C,EAAM5tE,OACvDA,EAAM0F,OAAOiT,EAAO,GACpBi1D,EAAM5tE,MAAQA,CAChB,MAAWgQ,IACT49D,EAAM5tE,MAAQ,IAAI4tE,EAAM5tE,MAAOw3B,IAE7Bj1B,EAAM2hG,gBACRn8F,EAAO/H,MAAQ,GAEnB,KAAO,CACL,MAAMgQ,GAAc,IAARxK,EACZooE,EAAM5tE,MAAQgQ,EAAM,CAACwnB,GAAQ,GAC7B8/E,EAAQt3G,MAAQgQ,IAAQu0F,EAAiBvkG,MAAQw3B,EAAK8jD,MAAQ,IAG9D,SAAS,KACPtR,EAAKhqE,OAAQ,EACbk6F,EAAWl6F,OAAQ,CAAI,GAE3B,CACF,CACA,SAAS8pE,EAAUxkE,GACjB4jE,EAAUlpE,OAAQ,EAClBgJ,YAAW,KACTo7F,EAAapkG,OAAQ,CAAI,GAE7B,CACA,SAAS+pE,EAAWzkE,GAClB8+F,EAAapkG,OAAQ,CACvB,CACA,SAAS6kG,EAAmB1yF,GACjB,MAALA,IAAmB,KAANA,GAAa5P,EAAMu8E,UAAaylB,EAAiBvkG,SAAO4tE,EAAM5tE,MAAQ,GACzF,CAuNA,OAtNA,QAAMkpE,GAAW,CAACjgD,EAAK4hD,KACrB,IAAI5hD,GAAOA,IAAQ4hD,IACnBw5B,EAAerkG,OAAS,EACxBgqE,EAAKhqE,OAAQ,EACT+H,EAAO/H,OAAO,CAChB,GAAIuC,EAAMu8E,SAER,YADAS,EAAOiV,GAAcjyF,EAAOwF,EAAO/H,QAGrC,IAAKukG,EAAiBvkG,MAAO,OACzB4tE,EAAM5tE,MAAMw7D,MAAKmzB,IACnB,IAAI,MACFrT,GACEqT,EACJ,OAAOrT,IAAUvzE,EAAO/H,KAAK,IAE7Bs3G,EAAQt3G,MAAQ,GAEhBu/E,EAAOiV,GAAcjyF,EAAOwF,EAAO/H,OAEvC,MAEF,QAAMgqE,GAAM,KACV,IAAKznE,EAAM+9F,cAAgBt2B,EAAKhqE,OAAS4tE,EAAM5tE,MAAMyC,OAAQ,CAC3D,MAAMkW,EAAQ6oF,EAAaxhG,MAAMguC,WAAUxW,GAAQo2C,EAAM5tE,MAAMw7D,MAAKx0B,GAAKzkC,EAAMslF,gBAAgB7gD,EAAEhnC,MAAOw3B,EAAKx3B,WAC7G,MAAcuD,OAAO4F,uBAAsB,KACzCwP,GAAS,GAAKuoF,EAAkBlhG,OAAOg+F,cAAcrlF,EAAM,GAE/D,MAEF,SAAM,IAAMpW,EAAM8vE,QAAO,CAACmW,EAAQ3d,KAC5Bb,EAAKhqE,OACLkpE,EAAUlpE,QAAU6qE,EAAOpoE,QAAU+lF,EAAO/lF,SAC9CunE,EAAKhqE,OAAQ,EACf,KAEF,EAAAmvE,EAAA,IAAU,KACR,MAAM8yB,MAAc1/F,EAAM89F,YAAcmB,EAAaxhG,MAAMyC,QAAUg4D,EAAM,iBAAmBA,EAAM,gBAAkBA,EAAM,YACtH0/B,EAAUvsB,EAAM5tE,MAAMyC,OAAS,EAC/By/F,EAAiBzG,GAAW/rB,YAAYntE,GAC9C,OAAO,QAAak5F,IAAY,QAAY,CAC1C,IAAOuF,GACNkB,EAAgB,CACjB,WAAcn6F,EAAO/H,MACrB,sBAAuB,CAAC2vE,GAAU5nE,EAAO/H,MAAQ2vE,EAAQk1B,GACzD,QAAW37B,EAAUlpE,MACrB,mBAAoB2vE,GAAUzG,EAAUlpE,MAAQ2vE,EAChD,gBAAmB/B,EAAMu0B,cACzB,aAAgB9G,EAAar7F,MAC7B,MAASm6F,EACT,MAAS,CAAC,aAAc,CACtB,0BAA2BnwB,EAAKhqE,MAChC,sBAAuBuC,EAAM09F,MAC7B,+BAAgCsE,EAAiBvkG,MACjD,8BAA+BqkG,EAAerkG,OAAS,EACvD,CAAC,gBAAeuC,EAAMu8E,SAAW,WAAa,YAAa,GAC1Dv8E,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,SAAY3E,EAAM8iF,SAClB,YAAe8U,OAAUvuF,EAAYrJ,EAAM03E,YAC3C,gBAAiBiiB,EACjB,sBAAuB0F,EACvB,UAAa/yB,IACX,IACCpU,EACHzR,QAAS,KAAM,QAAa,KAAW,KAAM,EAAC,QAAawsC,IAAO,QAAY,CAC5E,IAAOyL,EACP,WAAcj3B,EAAKhqE,MACnB,sBAAuB2vE,GAAU3F,EAAKhqE,MAAQ2vE,EAC9C,UAAa,SACb,aAAgB,sBAChB,SAAY8xB,EAAazhG,MACzB,MAASuC,EAAM+sE,MACf,UAAa,IACb,aAAe,EACf,qBAAuB,EACvB,WAAc/sE,EAAM6kB,WACpB,aAAgB4nD,EAChB,aAAgBhB,GACfzrE,EAAMk+F,WAAY,CACnBz3C,QAAS,IAAM,CAACi5C,IAAW,QAAa/M,IAAO,QAAY,CACzD,IAAOuK,EACP,SAAYnP,EAAetwF,MAC3B,eAAkBuC,EAAMu8E,SAAW,cAAgB,qBACnD,YAAex5E,GAAKA,EAAEioB,iBACtB,UAAauyE,EACb,UAAah2B,EACb,WAAcC,EACd,SAAY,KACZ,YAAa,SACb,MAASxnE,EAAMq+F,WAAar+F,EAAMiqE,OACjCm1B,EAAYp/F,EAAMg+F,WAAY,CAC/Bv3C,QAAS,IAAM,CAACyR,EAAM,qBAAsB+mC,EAAaxhG,MAAMyC,SAAWF,EAAM89F,aAAe5lC,EAAM,iBAAkB,QAAa83B,GAAW,CAC7I,MAASltF,EAAE9C,EAAMm+F,aAChB,QAAQ,QAAapB,GAAgB,CACtC,IAAO4B,EACP,YAAc,EACd,MAASM,EAAaxhG,OACrB,CACDgpD,QAAS6lC,IACP,IAAI,KACFr3D,EAAI,MACJ7e,EAAK,QACLkkF,GACEhO,EACJ,MAAMiF,GAAY,QAAWt8D,EAAKj1B,MAAO,CACvC26D,IAAK2/B,EACL95F,IAAK4V,EACL0uD,UAAQm9B,EAAexkG,OAAmB,IAAV2Y,SAAqB/M,EACrDsoB,QAAS,IAAMqrD,EAAO/nD,EAAM,QAE9B,OAAOijC,EAAMjjC,OAAO,CAClBA,OACA7e,QACApW,MAAOuxF,MACH,QAAavB,IAAW,QAAYuB,EAAW,CACnD,KAAQ,WACN,CACFtoE,QAASgkE,IACP,IAAI,WACFpQ,GACEoQ,EACJ,OAAO,QAAa,KAAW,KAAM,CAACjtF,EAAMu8E,WAAav8E,EAAM+9F,cAAe,QAAahX,GAAc,CACvG,IAAO9xD,EAAKx3B,MACZ,WAAco/E,EACd,QAAU,EACV,SAAY,MACX,WAAQxzE,EAAW4rB,EAAKj1B,MAAMkrF,gBAAiB,QAAapG,GAAS,CACtE,MAAS7vD,EAAKj1B,MAAMkrF,eACnB,MAAOj2D,EAAKj1B,MAAM4iF,cAAe,QAAa/D,GAAO,CACtD,KAAQ5pD,EAAKj1B,MAAM4iF,aAClB,OAAO,EAEZ7J,MAAO,IACE4e,EAAWl6F,MAAQw3B,EAAK8jD,MAAQ,GAAgB9jD,EAAK8jD,MAAOmoB,EAAWjsE,IAAO8jD,MAAOvzE,EAAO/H,OAAOyC,QAAU,IAEtH,IAEFg4D,EAAM,yBAEVmT,EAAM5tE,MAAM8F,KAAI,CAAC0xB,EAAM7e,KACzB,SAASypF,EAAY98F,GACnBA,EAAE0rB,kBACF1rB,EAAEioB,iBACFgyD,EAAO/nD,GAAM,EACf,CACA,MAAMk1D,EAAY,CAChB,gBAAiB0V,EACjB,SAAAvzB,CAAUvpE,GACM,UAAVA,EAAEvC,KAA6B,MAAVuC,EAAEvC,MAC3BuC,EAAEioB,iBACFjoB,EAAE0rB,kBACFoxE,EAAY98F,GACd,EACA,WAAA6vF,CAAY7vF,GACVA,EAAEioB,iBACFjoB,EAAE0rB,iBACJ,EACAu7C,YAAY,EACZ,2BAAuB3gE,GAEnBy2F,EAAUN,EAAS/hG,QAAUy6D,EAAMunC,OAASvnC,EAAM4mC,UAClDlkC,EAAcklC,GAAU,QAAiBN,EAAS/hG,MAAQy6D,EAAMunC,KAAK,CACzExqE,OACA7e,QACApW,MAAOmqF,IACJjyB,EAAM4mC,UAAU,CACnB7pE,OACA7e,gBACI/M,EACN,IAAIy2F,GAAYllC,EAChB,OAAO,QAAa,MAAO,CACzB,IAAO3lC,EAAKx3B,MACZ,MAAS,CAAC,wBAAyB2Y,IAAU0rF,EAAerkG,OAAS,CAAC,kCAAmCuhF,EAAiBvhF,QAC1H,MAAS2Y,IAAU0rF,EAAerkG,MAAQwhF,EAAgBxhF,MAAQ,CAAC,GAClE,CAAC+hG,EAAS/hG,MAASy6D,EAAMunC,MAML,QAAa9qB,GAAmB,CACrD,IAAO,gBACP,SAAY,CACViW,MAAO,CACLtG,SAAUtkF,EAAM29F,cAChBpuF,KAAM,QACNpC,KAAM8nB,EAAK8jD,SAGd,CACDtyB,QAAS,IAAM,CAACmU,MAhBiB,QAAagwB,IAAO,QAAY,CACjE,IAAO,OACP,SAAY5qF,EAAM29F,cAClB,KAAQ,QACR,KAAQ1oE,EAAK8jD,MACb,SAAY9jD,EAAKj1B,MAAMghC,UACtBmpD,GAAY,MAWVvvB,IAAe,QAAa,OAAQ,CACvC,MAAS,8BACR,CAAC3lC,EAAK8jD,MAAO/4E,EAAMu8E,UAAYnmE,EAAQi1D,EAAM5tE,MAAMyC,OAAS,IAAK,QAAa,OAAQ,CACvF,MAAS,+BACR,EAAC,QAAiB,UAAU,MAEjC,eAAgB,WACd,IAAK,IAAI4V,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzB,OAAO,QAAa,KAAW,KAAM,CAACkiD,EAAM,qBAAqBniD,GAAS/V,EAAM89F,aAAc99F,EAAM8vE,MAAM5vE,SAAWF,EAAMi+F,cAQhH50F,GAR2H,QAAaw1E,GAAO,CACxJ,MAAS,wBACT,KAAQ7+E,EAAMi+F,SACd,YAAekE,EACf,QAAW,KACX,aAAcr/F,EAAEwU,EAAM7Z,OACtB,MAASqF,EAAEwU,EAAM7Z,OACjB,SAAY,MACX,OACL,GACA,KAEG,EAAA4vE,GAAA,GAAY,CACjB1G,YACAgxB,aACAlwB,OACAjiE,SACAs8F,iBACAf,gBACA/jB,UACCyhB,EACL,IChhBWuW,IAAwB,EAAA10C,EAAA,GAAa,CAChD0J,WAAY,KACZC,MAAOh4D,OACPgjG,WAAY,CACV9pF,KAAMlZ,OACNw0C,QAAS,+BAEXyuD,OAAQ,CACN/pF,KAAMlZ,OACNw0C,QAAS,4BAEV,gBACU0uD,IAAe,UAAmB,CAC7Cv3G,KAAM,eACNoC,MAAOg1G,KACP/pC,MAAO,CACLmqC,OAAQ,KAAM,EACdC,KAAM53G,IAAS,EACf,oBAAqBA,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,cAC/Bs1G,GAAgB,WACtB,SAAY,KACVA,EAAc73G,MAAQ83G,iBAAgB,QAAMlqC,EAAM5tE,OAAO,IAE3D,MAAM,EACJqF,IACE,UACE60F,GAAa,SAAS,KACnB,QAAUtsB,EAAM5tE,MAAO63G,EAAc73G,SAE9C,SAAS43G,IACPhqC,EAAM5tE,MAAQ63G,EAAc73G,MAC5B4F,EAAK,OAAQiyG,EAAc73G,MAC7B,CACA,SAAS23G,IACPE,EAAc73G,MAAQ83G,iBAAgB,QAAMlqC,EAAM5tE,QAClD4F,EAAK,SACP,CACA,IAAImyG,GAAc,EA0BlB,OAzBA,EAAA5oC,EAAA,IAAU,KACR,MAAM02B,GAAU,QAAa,KAAW,KAAM,EAAC,QAAalqB,GAAM,CAChE,SAAYue,EAAWl6F,MACvB,QAAW,OACX,MAASuC,EAAMiqE,MACf,QAAWmrC,EACX,KAAQtyG,EAAE9C,EAAMi1G,aACf,OAAO,QAAa77B,GAAM,CAC3B,SAAYue,EAAWl6F,MACvB,QAAW,OACX,MAASuC,EAAMiqE,MACf,QAAWorC,EACX,KAAQvyG,EAAE9C,EAAMk1G,SACf,QACH,OAAO,QAAa,KAAW,KAAM,CAACh9C,EAAMzR,UAAU,CACpD4kB,MAAOiqC,EACPD,OACAD,SACAzd,WAAYA,EAAWl6F,MACvB,WAAI6lG,GAEF,OADAkS,GAAc,EACPlS,CACT,KACGkS,GAAelS,GAAS,IAExB,CACL+R,OACAD,SACAzd,aAEJ,IC9EW8d,IAA2B,EAAAn1C,EAAA,GAAa,CACnDo1C,cAAe79C,QACf89C,WAAY99C,QACZ+9C,SAAU,CACRzqF,KAAMrpB,MACN2kD,QAAS,IAAM,KAEhB,oBACUovD,GAAwBx0G,OAAOm+D,IAAI,8BACzC,SAASs2C,GAAgB91G,GAC9B,MAAM01G,GAAgB,QAAM11G,EAAO,iBAC7B41G,GAAW,QAAgB51G,EAAO,WAAYA,EAAM41G,UAAUhmG,GAC3D,IAAI2jD,IAAI3jD,KACdA,GACM,IAAIA,EAAE8kD,YAEf,SAASqhD,EAAO9gF,EAAMx3B,GACpB,MAAMu4G,EAAc,IAAIziD,IAAIqiD,EAASn4G,OAChCA,EAGHu4G,EAAYvoG,IAAIwnB,EAAKx3B,OAFrBu4G,EAAYxqD,OAAOv2B,EAAKx3B,OAI1Bm4G,EAASn4G,MAAQu4G,CACnB,CACA,SAASC,EAAWhhF,GAClB,OAAO2gF,EAASn4G,MAAMkB,IAAIs2B,EAAKx3B,MACjC,CACA,SAASy4G,EAAajhF,GACpB8gF,EAAO9gF,GAAOghF,EAAWhhF,GAC3B,CACA,MAAM3e,EAAO,CACXy/F,SACAH,WACAF,gBACAO,aACAC,gBAGF,OADA,QAAQL,GAAuBv/F,GACxBA,CACT,CACO,SAAS6/F,KACd,MAAM7/F,GAAO,QAAOu/F,IACpB,IAAKv/F,EAAM,MAAM,IAAIu3C,MAAM,OAC3B,OAAOv3C,CACT,CC7CO,MAAM8/F,IAA0B,EAAA91C,EAAA,GAAa,CAClD+1C,QAAS,CACPlrF,KAAMrpB,MACN2kD,QAAS,IAAM,KAEhB,mBACG6vD,GAAwBj1G,OAAOm+D,IAAI,4BAClC,SAAS+2C,GAAcv2G,GAC5B,MAAMq2G,GAAU,QAAgBr2G,EAAO,WACvC,MAAO,CACLq2G,UAEJ,CACO,SAASG,GAAeriG,GAC7B,MAAM,YACJsiG,EAAW,QACXJ,EAAO,OACPK,GACEviG,EACEs4E,GAAS,QAAI,IAAIl5B,KACjBojD,GAAmB,SAAS,IACzBN,EAAQ54G,MAAM8F,KAAImjB,IAAO,IAC3BA,EACHwzB,MAAOxzB,EAAIwzB,QAAS,MAClB0Y,OAAO6jD,GAAah5G,MAAQ,GAAKi5G,EAAOj5G,SAE9C,SAASm5G,EAAYzlC,GACnB,OAAOsb,EAAOhvF,MAAMkB,IAAIwyE,EAAM9xE,GAChC,CACA,SAASw3G,EAAY1lC,GACnB,MAAMub,EAAY,IAAIn5B,IAAIk5B,EAAOhvF,OAC5Bm5G,EAAYzlC,GAAqCub,EAAUlhC,OAAO2lB,EAAM9xE,IAApDqtF,EAAUj/E,IAAI0jE,EAAM9xE,IAC7CotF,EAAOhvF,MAAQivF,CACjB,CACA,SAASoqB,EAAYhnC,GACnB,SAASinC,EAAK5lC,GACZ,MAAMiM,EAAM,GACZ,IAAK,MAAMnoD,KAAQk8C,EAAMrB,MACnB,SAAU76C,GAAsB,UAAdA,EAAK9J,KACzBiyD,EAAI56E,QAAQu0G,EAAK9hF,IAEjBmoD,EAAI56E,KAAKyyB,GAGb,OAAOmoD,CACT,CACA,OAAO25B,EAAK,CACV5rF,KAAM,QACN2kD,QACAzwE,GAAI,QACJmB,IAAK,QACL/C,MAAO,QACP8gD,MAAO,GAEX,CAQA,MAAMjoC,EAAO,CACXqgG,mBACAE,cACApqB,SACA4pB,UACAS,cACAF,eAGF,OADA,QAAQN,GAAuBhgG,GACxBA,CACT,CACO,SAAS0gG,KACd,MAAM1gG,GAAO,QAAOggG,IACpB,IAAKhgG,EAAM,MAAM,IAAIu3C,MAAM,kBAC3B,OAAOv3C,CACT,CACA,SAAS2gG,GAAqBnnC,EAAOumC,GACnC,IAAKvmC,EAAM5vE,OAAQ,MAAO,GAC1B,MAAMib,EAAS,IAAIvY,IACnB,IAAK,MAAMqyB,KAAQ66C,EAAO,CACxB,MAAMryE,GAAQ,QAAqBw3B,EAAK4K,IAAKw2E,GACxCl7F,EAAOxc,IAAIlB,IACd0d,EAAOlY,IAAIxF,EAAO,IAEpB0d,EAAOnY,IAAIvF,GAAO+E,KAAKyyB,EACzB,CACA,OAAO9Z,CACT,CACA,SAAS+7F,GAAWpnC,EAAOumC,GACzB,IAAI93D,EAAQn1C,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,EAC5E2rB,EAAS3rB,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,OACjF,IAAKitG,EAAQn2G,OAAQ,MAAO,GAC5B,MAAMi3G,EAAeF,GAAqBnnC,EAAOumC,EAAQ,IACnDl7F,EAAS,GACT+uD,EAAOmsC,EAAQ/yG,MAAM,GAa3B,OAZA6zG,EAAaxzG,SAAQ,CAACmsE,EAAOryE,KAC3B,MAAM+C,EAAM61G,EAAQ,GACdh3G,EAAK,GAAG01B,KAAUv0B,KAAO/C,IAC/B0d,EAAO3Y,KAAK,CACV+7C,QACAl/C,KACAmB,MACA/C,QACAqyE,MAAO5F,EAAKhqE,OAASg3G,GAAWpnC,EAAO5F,EAAM3rB,EAAQ,EAAGl/C,GAAMywE,EAC9D3kD,KAAM,SACN,IAEGhQ,CACT,CACA,SAASi8F,GAAatnC,EAAO2c,GAC3B,MAAM4qB,EAAY,GAClB,IAAK,MAAMpiF,KAAQ66C,EAEb,SAAU76C,GAAsB,UAAdA,EAAK9J,MACP,MAAd8J,EAAKx3B,OACP45G,EAAU70G,KAAKyyB,IAEbw3D,EAAO9tF,IAAIs2B,EAAK51B,KAAqB,MAAd41B,EAAKx3B,QAC9B45G,EAAU70G,QAAQ40G,GAAaniF,EAAK66C,MAAO2c,KAG7C4qB,EAAU70G,KAAKyyB,GAGnB,OAAOoiF,CACT,CACO,SAASC,GAAgBxnC,EAAOumC,EAAS5pB,GAC9C,MAAM4qB,GAAY,SAAS,KACzB,IAAKhB,EAAQ54G,MAAMyC,OAAQ,OAAO4vE,EAAMryE,MACxC,MAAM05G,EAAeD,GAAWpnC,EAAMryE,MAAO44G,EAAQ54G,MAAM8F,KAAI0xB,GAAQA,EAAKz0B,OAC5E,OAAO42G,GAAaD,EAAc1qB,EAAOhvF,MAAM,IAEjD,MAAO,CACL45G,YAEJ,CC1IO,SAASE,GAAWrtG,GACzB,IAAI,KACFstG,EAAI,aACJC,EAAY,OACZf,EAAM,QACNL,EAAO,OACP7wG,GACE0E,EACJ,MAAMq8D,GAAK,EAAAC,EAAA,IAAmB,cACxBryD,GAAU,SAAS,KAAM,CAC7BqjG,KAAMA,EAAK/5G,MACXg6G,aAAcA,EAAah6G,MAC3Bi5G,OAAQA,EAAOj5G,MACf44G,QAASA,EAAQ54G,MACjB+H,OAAQA,EAAO/H,UAEjB,IAAIi6G,EAAa,MACjB,QAAMvjG,GAAS,MACT,QAAUujG,EAAYvjG,EAAQ1W,SAG9Bi6G,GAAcA,EAAWlyG,SAAW2O,EAAQ1W,MAAM+H,SACpDgyG,EAAK/5G,MAAQ,GAEf8oE,EAAGljE,KAAK,iBAAkB8Q,EAAQ1W,OAClCi6G,EAAavjG,EAAQ1W,MAAK,GACzB,CACDw5F,MAAM,EACNvzB,WAAW,GAEf,CC7BO,MAAMi0C,IAA6B,EAAAr3C,EAAA,GAAa,CACrDk3C,KAAM,CACJrsF,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXgxD,aAAc,CACZtsF,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEV,sBACGmxD,GAA6Bv2G,OAAOm+D,IAAI,iCACvC,SAASq4C,GAAiB73G,GAC/B,MAAMw3G,GAAO,QAAgBx3G,EAAO,YAAQqJ,GAAW5L,KAAWA,GAAS,KACrEg6G,GAAe,QAAgBz3G,EAAO,oBAAgBqJ,GAAW5L,KAAWA,GAAS,MAC3F,MAAO,CACL+5G,OACAC,eAEJ,CACO,SAASK,GAAkB3jG,GAChC,MAAM,KACJqjG,EAAI,aACJC,EAAY,YACZvR,GACE/xF,EACE4jG,GAAa,SAAS,KACE,IAAxBN,EAAah6G,MAAqB,EAC/Bg6G,EAAah6G,OAAS+5G,EAAK/5G,MAAQ,KAEtC8yB,GAAY,SAAS,KACG,IAAxBknF,EAAah6G,MAAqByoG,EAAYzoG,MAC3C6N,KAAKE,IAAI06F,EAAYzoG,MAAOs6G,EAAWt6G,MAAQg6G,EAAah6G,SAE/Du6G,GAAY,SAAS,KACG,IAAxBP,EAAah6G,OAAsC,IAAtByoG,EAAYzoG,MAAoB,EAC1D6N,KAAK8P,KAAK8qF,EAAYzoG,MAAQg6G,EAAah6G,SASpD,SAASw6G,EAAgBx6G,GACvBg6G,EAAah6G,MAAQA,EACrB+5G,EAAK/5G,MAAQ,CACf,CACA,SAASy6G,IACPV,EAAK/5G,OAAQ,QAAM+5G,EAAK/5G,MAAQ,EAAG,EAAGu6G,EAAUv6G,MAClD,CACA,SAAS06G,IACPX,EAAK/5G,OAAQ,QAAM+5G,EAAK/5G,MAAQ,EAAG,EAAGu6G,EAAUv6G,MAClD,CACA,SAAS26G,EAAQ36G,GACf+5G,EAAK/5G,OAAQ,QAAMA,EAAO,EAAGu6G,EAAUv6G,MACzC,EAjBA,QAAM,CAAC+5G,EAAMQ,IAAY,KACnBR,EAAK/5G,MAAQu6G,EAAUv6G,QACzB+5G,EAAK/5G,MAAQu6G,EAAUv6G,MACzB,IAeF,MAAM6Y,EAAO,CACXkhG,OACAC,eACAM,aACAxnF,YACAynF,YACA9R,cACAgS,WACAC,WACAC,UACAH,mBAGF,OADA,QAAQL,GAA4BthG,GAC7BA,CACT,CACO,SAAS+hG,KACd,MAAM/hG,GAAO,QAAOshG,IACpB,IAAKthG,EAAM,MAAM,IAAIu3C,MAAM,uBAC3B,OAAOv3C,CACT,CACO,SAASgiG,GAAkBnkG,GAChC,MAAMoyD,GAAK,EAAAC,EAAA,IAAmB,sBACxB,MACJsJ,EAAK,WACLioC,EAAU,UACVxnF,EAAS,aACTknF,GACEtjG,EACEokG,GAAiB,SAAS,IAC1Bd,EAAah6G,OAAS,EAAUqyE,EAAMryE,MACnCqyE,EAAMryE,MAAM6F,MAAMy0G,EAAWt6G,MAAO8yB,EAAU9yB,SAKvD,OAHA,QAAM86G,GAAgB7xF,IACpB6/C,EAAGljE,KAAK,sBAAuBqjB,EAAI,IAE9B,CACL6xF,iBAEJ,CC/FA,MAAMC,GAAuB,CAC3BC,eAAe,EACfC,YAAa,IAAM,GACnB17B,OAAQ9yE,IACN,IAAI,MACF4lE,EAAK,MACLryE,GACEyM,EACJ,OAAO,IAAIqpD,IAAI91D,EAAQ,CAACqyE,EAAM,IAAIryE,OAAS,GAAG,EAEhDk7G,UAAWtlG,IACT,IAAI,SACF6pE,GACE7pE,EACJ,OAAO6pE,CAAQ,GAGb07B,GAAqB,CACzBH,eAAe,EACfC,YAAatsB,IACX,IAAI,YACFysB,GACEzsB,EACJ,OAAOysB,CAAW,EAEpB77B,OAAQsP,IACN,IAAI,MACFxc,EAAK,MACLryE,EAAK,SACLy/E,GACEoP,EACJ,IAAK,MAAMr3D,KAAQ66C,EACbryE,EAAOy/E,EAASzvE,IAAIwnB,EAAKx3B,OAAYy/E,EAAS1xB,OAAOv2B,EAAKx3B,OAEhE,OAAOy/E,CAAQ,EAEjBy7B,UAAW1rB,IACT,IAAI,MACFxvF,EAAK,YACLo7G,EAAW,SACX37B,GACE+P,EACJ,OAAO2rB,GAAmB57B,OAAO,CAC/BlN,MAAO+oC,EACPp7G,QACAy/E,YACA,GAGA47B,GAAoB,CACxBL,eAAe,EACfC,YAAavrB,IACX,IAAI,SACF4rB,GACE5rB,EACJ,OAAO4rB,CAAQ,EAEjB/7B,OAAQyQ,IACN,IAAI,MACF3d,EAAK,MACLryE,EAAK,SACLy/E,GACEuQ,EACJ,IAAK,MAAMx4D,KAAQ66C,EACbryE,EAAOy/E,EAASzvE,IAAIwnB,EAAKx3B,OAAYy/E,EAAS1xB,OAAOv2B,EAAKx3B,OAEhE,OAAOy/E,CAAQ,EAEjBy7B,UAAWK,IACT,IAAI,MACFv7G,EAAK,SACLs7G,EAAQ,SACR77B,GACE87B,EACJ,OAAOF,GAAkB97B,OAAO,CAC9BlN,MAAOipC,EACPt7G,QACAy/E,YACA,GAGO+7B,IAA2B,EAAA34C,EAAA,GAAa,CACnD44C,WAAYrhD,QACZs2B,eAAgB,CACdhjE,KAAM,CAAClZ,OAAQxT,QACfgoD,QAAS,QAEXujB,WAAY,CACV7+C,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjB6+B,gBAAiB,CACfn6D,KAAMjtB,SACNuoD,QAAS,OAEV,oBACU0yD,GAA4B93G,OAAOm+D,IAAI,gCAC7C,SAAS45C,GAAiBp5G,EAAOq5G,GACtC,IAAI,SACFN,EAAQ,YACRF,GACEQ,EACJ,MAAMn8B,GAAW,QAAgBl9E,EAAO,aAAcA,EAAMgqE,YAAYp6D,GAC/D,IAAI2jD,KAAI,QAAY3jD,GAAGrM,KAAIqM,GACzBmpG,EAASt7G,MAAM2iB,MAAK6U,GAAQj1B,EAAMslF,gBAAgB11E,EAAGqlB,EAAKx3B,UAASA,OAASmS,OAEpFA,GACM,IAAIA,EAAE8kD,YAET4kD,GAAgB,SAAS,IAAMP,EAASt7G,MAAM4E,QAAO4yB,GAAQA,EAAK64D,eAClEyrB,GAAwB,SAAS,IAAMV,EAAYp7G,MAAM4E,QAAO4yB,GAAQA,EAAK64D,eAC7EK,GAAiB,SAAS,KAC9B,GAAoC,kBAAzBnuF,EAAMmuF,eAA6B,OAAOnuF,EAAMmuF,eAC3D,OAAQnuF,EAAMmuF,gBACZ,IAAK,SACH,OAAOqqB,GACT,IAAK,MACH,OAAOM,GACT,IAAK,OACL,QACE,OAAOF,GACX,IAEF,SAAS/7B,EAAW/M,GAClB,OAAO,QAAYA,GAAOnmB,OAAM10B,GAAQioD,EAASz/E,MAAMkB,IAAIs2B,EAAKx3B,QAClE,CACA,SAAS+7G,EAAe1pC,GACtB,OAAO,QAAYA,GAAO7W,MAAKhkC,GAAQioD,EAASz/E,MAAMkB,IAAIs2B,EAAKx3B,QACjE,CACA,SAASu/E,EAAOlN,EAAOryE,GACrB,MAAMixF,EAAcP,EAAe1wF,MAAMu/E,OAAO,CAC9ClN,QACAryE,QACAy/E,SAAU,IAAI3pB,IAAI2pB,EAASz/E,SAE7By/E,EAASz/E,MAAQixF,CACnB,CACA,SAAS+qB,EAAaxkF,GACpB+nD,EAAO,CAAC/nD,IAAQ4nD,EAAW,CAAC5nD,IAC9B,CACA,SAAS0jF,EAAUl7G,GACjB,MAAMixF,EAAcP,EAAe1wF,MAAMk7G,UAAU,CACjDl7G,QACAs7G,SAAUO,EAAc77G,MACxBo7G,YAAaU,EAAsB97G,MACnCy/E,SAAU,IAAI3pB,IAAI2pB,EAASz/E,SAE7By/E,EAASz/E,MAAQixF,CACnB,CACA,MAAMgrB,GAAe,SAAS,IAAMx8B,EAASz/E,MAAM8R,KAAO,IACpDmpG,GAAc,SAAS,KAC3B,MAAM5oC,EAAQqe,EAAe1wF,MAAMi7G,YAAY,CAC7CK,SAAUO,EAAc77G,MACxBo7G,YAAaU,EAAsB97G,QAErC,QAASqyE,EAAM5vE,QAAU28E,EAAW/M,EAAM,IAEtC2oC,GAAgB,SAAS,IAAMtqB,EAAe1wF,MAAMg7G,gBACpDniG,EAAO,CACXmjG,eACAz8B,SACA27B,YACA97B,aACA28B,iBACAE,eACAhB,cACAD,iBAGF,OADA,QAAQU,GAA2B7iG,GAC5BA,CACT,CACO,SAASqjG,KACd,MAAMrjG,GAAO,QAAO6iG,IACpB,IAAK7iG,EAAM,MAAM,IAAIu3C,MAAM,sBAC3B,OAAOv3C,CACT,CC9KO,MAAMsjG,IAAyB,EAAAt5C,EAAA,GAAa,CACjDo2C,OAAQ,CACNvrF,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBozD,cAAep7G,OACfq7G,UAAWjiD,QACXkiD,SAAUliD,SACT,kBACGmiD,GAAuB34G,OAAOm+D,IAAI,2BACjC,SAASy6C,GAAWj6G,GACzB,MAAM02G,GAAS,QAAgB12G,EAAO,UAChC+5G,GAAW,QAAM/5G,EAAO,YACxB85G,GAAY,QAAM95G,EAAO,aAC/B,MAAO,CACL02G,SACAqD,WACAD,YAEJ,CACO,SAASI,GAAY/lG,GAC1B,MAAM,OACJuiG,EAAM,SACNqD,EAAQ,UACRD,EAAS,KACTtC,GACErjG,EACEgmG,EAAa95F,IACjB,GAAkB,MAAdA,EAAO7f,IAAa,OACxB,IAAI45G,EAAY1D,EAAOj5G,MAAM8F,KAAIggB,IAAK,IACjCA,OACE,GACP,MAAM0R,EAAOmlF,EAAUh6F,MAAKmD,GAAKA,EAAE/iB,MAAQ6f,EAAO7f,MAC7Cy0B,EAQqB,SAAfA,EAAKilB,MACV6/D,EAASt8G,MACXw3B,EAAKilB,MAAQ,MAEbkgE,EAAYA,EAAU/3G,QAAOkhB,GAAKA,EAAE/iB,MAAQ6f,EAAO7f,MAGrDy0B,EAAKilB,MAAQ,OAdQkgE,EAAjBN,EAAUr8G,MAAmB,IAAI28G,EAAW,CAC9C55G,IAAK6f,EAAO7f,IACZ05C,MAAO,QACW,CAAC,CACnB15C,IAAK6f,EAAO7f,IACZ05C,MAAO,QAWXw8D,EAAOj5G,MAAQ28G,EACX5C,IAAMA,EAAK/5G,MAAQ,EAAC,EAE1B,SAAS48G,EAASh6F,GAChB,QAASq2F,EAAOj5G,MAAM2iB,MAAK6U,GAAQA,EAAKz0B,MAAQ6f,EAAO7f,KACzD,CACA,MAAM8V,EAAO,CACXogG,SACAyD,aACAE,YAGF,OADA,QAAQL,GAAsB1jG,GACvBA,CACT,CACO,SAASgkG,KACd,MAAMhkG,GAAO,QAAO0jG,IACpB,IAAK1jG,EAAM,MAAM,IAAIu3C,MAAM,iBAC3B,OAAOv3C,CACT,CAGO,SAASikG,GAAev6G,EAAO8vE,EAAO4mC,EAAQviG,GACnD,MAAMqmG,GAAS,UACTC,GAAc,SAAS,IACtB/D,EAAOj5G,MAAMyC,OACXw6G,GAAU5qC,EAAMryE,MAAOi5G,EAAOj5G,MAAO+8G,EAAOtvG,QAAQzN,MAAO,CAChE0K,UAAWgM,GAAShM,UACpBwyG,cAAe,IACV36G,EAAM65G,iBACN1lG,GAASwmG,eAAel9G,OAE7Bm9G,iBAAkBzmG,GAASymG,kBAAkBn9G,QAPdqyE,EAAMryE,QAUzC,MAAO,CACLg9G,cAEJ,CACO,SAASC,GAAU5qC,EAAO+qC,EAAaL,EAAQrmG,GACpD,MAAM2mG,EAAiB,IAAIC,KAAKC,SAASR,EAAQ,CAC/C38E,YAAa,SACbo9E,MAAO,SAEHha,EAAmBnxB,EAAMvsE,KAAI0xB,GAAQ,CAACA,EAAM9gB,GAAShM,UAAYgM,EAAQhM,UAAU8sB,GAAQA,KACjG,OAAOgsE,EAAiBrsE,MAAK,CAACvsB,EAAGwsB,KAC/B,IAAK,IAAI50B,EAAI,EAAGA,EAAI46G,EAAY36G,OAAQD,IAAK,CAC3C,IAAIi7G,GAAkB,EACtB,MAAMC,EAAUN,EAAY56G,GAAGO,IACzBwzD,EAAY6mD,EAAY56G,GAAGi6C,OAAS,MAC1C,IAAkB,IAAd8Z,EAAqB,SACzB,IAAIonD,GAAQ,QAAqB/yG,EAAE,GAAI8yG,GACnCE,GAAQ,QAAqBxmF,EAAE,GAAIsmF,GACnCG,EAAWjzG,EAAE,GAAGw3B,IAChB07E,EAAW1mF,EAAE,GAAGgL,IAKpB,GAJkB,SAAdm0B,KACDonD,EAAOC,GAAS,CAACA,EAAOD,IACxBE,EAAUC,GAAY,CAACA,EAAUD,IAEhCnnG,GAASymG,mBAAmBO,GAAU,CACxC,MAAMK,EAAernG,EAAQymG,iBAAiBO,GAASG,EAAUC,GACjE,GAAoB,MAAhBC,EAAsB,SAE1B,GADAN,GAAkB,EACdM,EAAc,OAAOA,CAC3B,CACA,GAAIrnG,GAASwmG,gBAAgBQ,GAAU,CACrC,MAAMK,EAAernG,EAAQwmG,cAAcQ,GAASC,EAAOC,GAC3D,GAAoB,MAAhBG,EAAsB,SAE1B,GADAN,GAAkB,EACdM,EAAc,OAAOA,CAC3B,CACA,IAAIN,EAAJ,CAGA,GAAIE,aAAiB17G,MAAQ27G,aAAiB37G,KAC5C,OAAO07G,EAAMhwG,UAAYiwG,EAAMjwG,UAGjC,IADCgwG,EAAOC,GAAS,CAACD,EAAOC,GAAO93G,KAAIkhC,GAAU,MAALA,EAAYA,EAAE1mC,WAAWiiG,oBAAsBv7D,IACpF22E,IAAUC,EACZ,OAAI,QAAQD,KAAU,QAAQC,GAAe,GACzC,QAAQD,IAAgB,GACxB,QAAQC,GAAe,EACtBnkG,MAAMkkG,IAAWlkG,MAAMmkG,GACrBP,EAAeW,QAAQL,EAAOC,GADMhpG,OAAO+oG,GAAS/oG,OAAOgpG,EAXvC,CAc/B,CACA,OAAO,CAAC,IACP93G,KAAI2G,IACL,IAAK+qB,GAAQ/qB,EACb,OAAO+qB,CAAI,GAEf,CC7IO,MAAMymF,IAA6B,EAAAp7C,EAAA,GAAa,CACrDwP,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBsrC,UAAW,CACT5mE,KAAM,CAAClZ,OAAQnQ,MAAO5D,UACtBuoD,QAAS,MAEXk1D,eAAgB,CACdxwF,KAAM,CAAClZ,OAAQnQ,MAAO5D,UACtBuoD,QAAS,MAEX4qC,aAAcx5B,SACb,sBACI,SAAS,GAAc73D,EAAOi1B,GACnC,MAAMx3B,EAAQuC,EAAMqxF,aAAep8D,GAAO,QAAoBA,EAAMj1B,EAAM+xF,WACpEjE,GAAa,QAAoB74D,EAAMj1B,EAAM27G,gBAAgB,GACnE,MAAO,CACLxwF,KAAM,OACN1tB,QACAqwF,aACAjuD,IAAK5K,EAET,CACO,SAAS,GAAej1B,EAAO8vE,GACpC,MAAMrhC,EAAQ,GACd,IAAK,MAAMxZ,KAAQ66C,EACjBrhC,EAAMjsC,KAAK,GAAcxC,EAAOi1B,IAElC,OAAOwZ,CACT,CACO,SAASmtE,GAAqB57G,GACnC,MAAM8vE,GAAQ,SAAS,IAAM,GAAe9vE,EAAOA,EAAM8vE,SACzD,MAAO,CACLA,QAEJ,CCvBO,MAAM+rC,IAAyB,EAAAv7C,EAAA,GAAa,CACjD96D,OAAQyM,OACR8vE,QAASlqB,YACN,YACA6jD,QACAzC,QACAW,QACAjC,GAA2B,CAC5BF,aAAc,OAEbhC,QACAW,QACAnW,QACAnvB,QACA,QAAoB,CACrBjsD,WAAY,CACVwhC,UAAWwtB,EACXzC,aAAa,MAGhB,iBACU0qC,IAAgB,UAAmB,CAC9Cl+G,KAAM,gBACNoC,MAAO67G,KACP5wC,MAAO,CACL,oBAAqBxtE,IAAS,EAC9B,iBAAkBA,IAAS,EAC3B,cAAeA,IAAS,EACxB,sBAAuBA,IAAS,EAChC,gBAAiBA,IAAS,EAC1B,iBAAkBA,IAAS,EAC3B,kBAAmBA,IAAS,EAC5B,sBAAuBA,IAAS,GAElC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMmsG,GAAU,QAAgBr2G,EAAO,WACjCwF,GAAS,QAAMxF,EAAO,WACtB,MACJ8vE,GACE8rC,GAAqB57G,IACnB,cACJ+gG,GACED,GAAU9gG,EAAO8vE,EAAOtqE,EAAQ,CAClC2C,UAAW8sB,GAAQA,EAAK4K,OAEpB,OACJ62E,EAAM,UACNoD,EAAS,SACTC,GACEE,GAAWj6G,IACT,KACJw3G,EAAI,aACJC,GACEI,GAAiB73G,IACf,WACJm6G,GACED,GAAY,CACdxD,SACAoD,YACAC,WACAvC,UAEI,iBACJb,EAAgB,OAChBlqB,EAAM,YACNqqB,EAAW,YACXF,EAAW,YACXC,GACEL,GAAe,CACjBH,UACAK,YAEI,YACJ+D,GACEF,GAAev6G,EAAO+gG,EAAe4V,EAAkB,CACzDxuG,UAAW8sB,GAAQA,EAAK4K,OAEpB,UACJw3E,GACEC,GAAgBmD,EAAapE,EAAS5pB,GACpCyZ,GAAc,SAAS,IAAMmR,EAAU55G,MAAMyC,UAC7C,WACJ63G,EAAU,UACVxnF,EAAS,UACTynF,EAAS,SACTG,EAAQ,SACRD,EAAQ,gBACRD,EAAe,QACfG,GACEN,GAAkB,CACpBN,OACAC,eACAvR,iBAEI,eACJqS,GACED,GAAkB,CACpBxoC,MAAOunC,EACPU,aACAxnF,YACAknF,iBAEIsE,GAA8B,SAAS,IAAMjF,EAAYyB,EAAe96G,UACxE,WACJo/E,EAAU,OACVG,EAAM,UACN27B,EAAS,aACTc,GACEL,GAAiBp5G,EAAO,CAC1B+4G,SAAUjpC,EACV+oC,YAAakD,KAET,WACJ9F,EAAU,aACVC,GACEJ,GAAgB91G,GACpBu3G,GAAW,CACTC,OACAC,eACAf,SACAL,UACA7wG,WAEF,MAAM2kF,GAAY,SAAS,KAAM,CAC/BqtB,KAAMA,EAAK/5G,MACXg6G,aAAcA,EAAah6G,MAC3Bi5G,OAAQA,EAAOj5G,MACfu6G,UAAWA,EAAUv6G,MACrB08G,aACAhC,WACAD,WACAE,UACAH,kBACAp7B,aACAG,SACA27B,YACAc,eACAxD,aACAC,eACAU,cACAC,cACA/mC,MAAOisC,EAA4Bt+G,MACnC05G,aAAcoB,EAAe96G,UAsB/B,OApBA,EAAAmvE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,kBAAmB,CAC3B,2BAA4BvN,EAAM+hF,SACjC/hF,EAAMy4D,OACT,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,CAACyR,EAAM05B,SAASzH,EAAU1sF,QAAQ,QAAa,KAAiB,CAC7E,WAAcuC,EAAM6kB,YACnB,CACD4hC,QAAS,IAAM,CAACzmD,EAAM+hF,SAAU,QAAaG,GAAY,CACvD,IAAO,SACP,KAAQ,kBACR,QAAU,GACT,CACDz7B,QAAS0jC,GAAajyB,EAAM0rB,SAASuG,MAClC,QAAa,MAAO,CACvB,IAAO,SACN,CAAEouB,EAAe96G,MAAMyC,OAAgCg4D,EAAMzR,UAAU0jC,EAAU1sF,OAAjDy6D,EAAM,oBACvCA,EAAM8jD,SAAS7xB,EAAU1sF,YAExB,CAAC,CACV,ICrLK,SAASw+G,KACd,MAAMC,GAAO,QAAI,IAEjB,SAASC,EAAUp5G,EAAG9C,GACpBi8G,EAAKz+G,MAAMwC,GAAK8C,CAClB,CACA,OAJA,SAAe,IAAMm5G,EAAKz+G,MAAQ,KAI3B,CACLy+G,OACAC,YAEJ,CCSO,MAAMC,IAAuB,EAAA97C,EAAA,GAAa,CAC/CoiB,YAAazwE,OACbokC,MAAO,CACLlrB,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXujB,WAAY,CACV7+C,KAAM9Y,OACNo0C,QAASzmD,GAASA,EAAMq2C,OAE1BrV,SAAU62B,QACV33D,OAAQ,CACNirB,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,EACT+Z,UAAW95C,GAAOA,EAAM,IAAM,GAEhC21F,aAAc,CAAChqG,OAAQJ,QACvBqqG,UAAW,CACTnxF,KAAM,MACNs7B,QAAS,UAEX8hC,SAAU,CACRp9D,KAAM,MACNs7B,QAAS,SAEX6hC,SAAU,CACRn9D,KAAM,MACNs7B,QAAS,SAEX81D,SAAU,CACRpxF,KAAM,MACNs7B,QAAS,SAEX+1D,UAAW,CACTrxF,KAAMlZ,OACNw0C,QAAS,sCAEXg2D,cAAe,CACbtxF,KAAMlZ,OACNw0C,QAAS,sCAEXi2D,qBAAsB,CACpBvxF,KAAMlZ,OACNw0C,QAAS,6CAEXk2D,eAAgB,CACdxxF,KAAMlZ,OACNw0C,QAAS,uCAEXm2D,kBAAmB,CACjBzxF,KAAMlZ,OACNw0C,QAAS,0CAEXo2D,cAAe,CACb1xF,KAAMlZ,OACNw0C,QAAS,sCAEXq2D,cAAe,CACb3xF,KAAMlZ,OACNw0C,QAAS,sCAEXs2D,SAAU,CACR5xF,KAAMlZ,OACNw0C,QAAS,OAEXu2D,kBAAmBnlD,WAChBmgB,SACA,YACAuD,QACAnD,QACAhD,QACAmJ,QACAzN,EAAa,CACdvjE,IAAK,YAEJ,aACAsuE,GAAiB,CAClBxC,QAAS,UAEV,eACU4jC,IAAc,UAAmB,CAC5Cr/G,KAAM,cACNoC,MAAOo8G,KACPnxC,MAAO,CACL,oBAAqBxtE,IAAS,EAC9Bo9F,MAAOp9F,IAAS,EAChB+Q,KAAM/Q,IAAS,EACfmE,KAAMnE,IAAS,EACfoyD,KAAMpyD,IAAS,GAEjB,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,KACL70D,GACE6G,EACJ,MAAMstG,GAAO,QAAgBx3G,EAAO,eAC9B,EACJ8C,EAAC,EACDJ,IACE,WACE,MACJm+D,IACE,WACE,aACJyK,IACE,QAAatrE,IACX,MACJgR,IACE,WACEksG,GAAa,SAAY,IAC/B,cAAgB7zG,EAAW,CACzBqrE,QAAQ,IAEV,MAAM,UACJnH,GACED,GAAkBp6D,IACpB,IAAKA,EAAQhT,OAAQ,OACrB,MAAM,OACJH,EAAM,YACNwT,GACEL,EAAQ,GACNiqG,EAAYp9G,EAAOoE,cAAc,2BACvC,IAAKg5G,EAAW,OAChB,MAAMC,EAAa7pG,EAAYvC,MACzBqsG,EAAYF,EAAU1tG,YAAoE,EAAtD5G,WAAWxC,iBAAiB82G,GAAWjkG,aACjFgkG,EAAWz/G,MAAQ6/G,EAAOF,EAAYC,EAAU,IAE5Cn9G,GAAS,SAAS,IAAM+W,SAASjX,EAAME,OAAQ,MAC/Cm2C,GAAQ,SAAS,IAAMp/B,SAASjX,EAAMq2C,MAAO,MAC7CgmE,GAAe,SAAS,IACF,MAAtBr8G,EAAMq8G,aAA6BplG,SAASjX,EAAMq8G,aAAc,IAAaa,EAAWz/G,OAAS,EAAUy/G,EAAWz/G,MACnH6/G,EAAOtsG,EAAMvT,MAAO,MAE7B,SAAS6/G,EAAOF,EAAYC,GAC1B,MAAME,EAAav9G,EAAMg9G,kBAAoB,EAAI,EACjD,OAAO1xG,KAAKC,IAAI,EAAGD,KAAKmP,SAErB2iG,EAAaC,EAAYE,GAAcF,GAAW/Q,QAAQ,IAC/D,CACA,MAAMkR,GAAQ,SAAS,KACrB,GAAIt9G,EAAOzC,OAAS,GAAKyZ,MAAMhX,EAAOzC,QAAUyC,EAAOzC,MAAQ4U,OAAOorG,iBAAkB,MAAO,GAC/F,GAAIpB,EAAa5+G,OAAS,EAAG,MAAO,GAAQ,GAA2B,IAAvB4+G,EAAa5+G,MAAa,MAAO,CAAC+5G,EAAK/5G,OACvF,GAAIyC,EAAOzC,OAAS4+G,EAAa5+G,MAC/B,OAAO,QAAYyC,EAAOzC,MAAO44C,EAAM54C,OAEzC,MAAMigH,EAAOrB,EAAa5+G,MAAQ,IAAM,EAClCkgH,EAASD,EAAOrB,EAAa5+G,MAAQ,EAAI6N,KAAKmP,MAAM4hG,EAAa5+G,MAAQ,GACzE2Q,EAAOsvG,EAAOC,EAASA,EAAS,EAChC58C,EAAQ7gE,EAAOzC,MAAQkgH,EAC7B,GAAIvvG,EAAOopG,EAAK/5G,OAAS,EACvB,MAAO,KAAI,QAAY6N,KAAKC,IAAI,EAAG8wG,EAAa5+G,MAAQ,GAAI44C,EAAM54C,OAAQuC,EAAM+8G,SAAU78G,EAAOzC,OAC5F,GAAI+5G,EAAK/5G,MAAQsjE,IAAU28C,EAAO,EAAI,GAAI,CAC/C,MAAME,EAAcvB,EAAa5+G,MAAQ,EACnCogH,EAAa39G,EAAOzC,MAAQmgH,EAAcvnE,EAAM54C,MACtD,MAAO,CAAC44C,EAAM54C,MAAOuC,EAAM+8G,aAAa,QAAYa,EAAaC,GACnE,CAAO,CACL,MAAMD,EAActyG,KAAKC,IAAI,EAAG8wG,EAAa5+G,MAAQ,GAC/CogH,EAA6B,IAAhBD,EAAoBpG,EAAK/5G,MAAQ+5G,EAAK/5G,MAAQ6N,KAAK8P,KAAKwiG,EAAc,GAAKvnE,EAAM54C,MACpG,MAAO,CAAC44C,EAAM54C,MAAOuC,EAAM+8G,aAAa,QAAYa,EAAaC,GAAa79G,EAAM+8G,SAAU78G,EAAOzC,MACvG,KAIF,SAASqgH,EAAS/6G,EAAGtF,EAAOiY,GAC1B3S,EAAEioB,iBACFwsF,EAAK/5G,MAAQA,EACbiY,GAASrS,EAAKqS,EAAOjY,EACvB,CACA,MAAM,KACJy+G,EAAI,UACJC,GACEF,MACJ,SAAgB,CACd8B,eAAgB,CACd9zC,OAAO,QAAMjqE,EAAO,SACpBi4E,QAAQ,QAAMj4E,EAAO,UACrB24E,SAAS,QAAM34E,EAAO,WACtBuP,MAAM,QAAMvP,EAAO,QACnBq5E,SAAS,QAAMr5E,EAAO,WACtBq1E,SAAS,QAAMr1E,EAAO,WACtBq4E,WAAW,QAAMr4E,EAAO,gBAG5B,MAAM8vE,GAAQ,SAAS,IACd0tC,EAAM//G,MAAM8F,KAAI,CAAC0xB,EAAM7e,KAC5B,MAAMukD,EAAM53D,GAAKo5G,EAAUp5G,EAAGqT,GAC9B,GAAoB,kBAAT6e,EACT,MAAO,CACLge,UAAU,EACVzyC,IAAK,YAAY4V,IACjBohG,KAAMviF,EACNj1B,MAAO,CACL26D,MACAoiD,UAAU,EACVn+B,MAAM,EACN59C,UAAU,IAGT,CACL,MAAMiS,EAAWhe,IAASuiF,EAAK/5G,MAC/B,MAAO,CACLw1C,WACAzyC,IAAKy0B,EACLuiF,KAAM90G,EAAEuyB,GACRj1B,MAAO,CACL26D,MACAoiD,UAAU,EACVn+B,MAAM,EACN59C,WAAYhhC,EAAMghC,WAAahhC,EAAME,OAAS,EAC9C+pE,MAAOh3B,EAAWjzC,EAAM0iF,YAAc1iF,EAAMiqE,MAC5C,eAAgBh3B,EAChB,aAAcnwC,EAAEmwC,EAAWjzC,EAAM08G,qBAAuB18G,EAAMy8G,cAAexnF,GAC7EtD,QAAS5uB,GAAK+6G,EAAS/6G,EAAGkyB,IAGhC,OAGE6c,GAAW,SAAS,KACxB,MAAMksE,IAAiBh+G,EAAMghC,UAAYw2E,EAAK/5G,OAAS44C,EAAM54C,MACvDwgH,IAAiBj+G,EAAMghC,UAAYw2E,EAAK/5G,OAAS44C,EAAM54C,MAAQyC,EAAOzC,MAAQ,EACpF,MAAO,CACLo9F,MAAO76F,EAAMg9G,kBAAoB,CAC/Bp+B,KAAM/d,EAAMpjE,MAAQuC,EAAMu8G,SAAWv8G,EAAMs8G,UAC3C3qF,QAAS5uB,GAAK+6G,EAAS/6G,EAAGszC,EAAM54C,MAAO,SACvCujC,SAAUg9E,EACV,aAAcl7G,EAAE9C,EAAM28G,gBACtB,gBAAiBqB,QACf30G,EACJmF,KAAM,CACJowE,KAAM/d,EAAMpjE,MAAQuC,EAAMsoF,SAAWtoF,EAAMuoF,SAC3C52D,QAAS5uB,GAAK+6G,EAAS/6G,EAAGy0G,EAAK/5G,MAAQ,EAAG,QAC1CujC,SAAUg9E,EACV,aAAcl7G,EAAE9C,EAAM48G,mBACtB,gBAAiBoB,GAEnBp8G,KAAM,CACJg9E,KAAM/d,EAAMpjE,MAAQuC,EAAMuoF,SAAWvoF,EAAMsoF,SAC3C32D,QAAS5uB,GAAK+6G,EAAS/6G,EAAGy0G,EAAK/5G,MAAQ,EAAG,QAC1CujC,SAAUi9E,EACV,aAAcn7G,EAAE9C,EAAM68G,eACtB,gBAAiBoB,GAEnBpuD,KAAM7vD,EAAMg9G,kBAAoB,CAC9Bp+B,KAAM/d,EAAMpjE,MAAQuC,EAAMs8G,UAAYt8G,EAAMu8G,SAC5C5qF,QAAS5uB,GAAK+6G,EAAS/6G,EAAGszC,EAAM54C,MAAQyC,EAAOzC,MAAQ,EAAG,QAC1DujC,SAAUi9E,EACV,aAAcn7G,EAAE9C,EAAM88G,eACtB,gBAAiBmB,QACf50G,EACL,IAEH,SAAS60G,IACP,MAAMtgC,EAAe45B,EAAK/5G,MAAQ44C,EAAM54C,MACxCy+G,EAAKz+G,MAAMmgF,IAAepV,IAAI+D,OAChC,CACA,SAASD,EAAUvpE,GACbA,EAAEvC,MAAQ,EAAAmuG,UAAUvgG,OAASpO,EAAMghC,UAAYw2E,EAAK/5G,OAASuC,EAAMq2C,OACrEmhE,EAAK/5G,MAAQ+5G,EAAK/5G,MAAQ,GAC1B,QAASygH,IACAn7G,EAAEvC,MAAQ,EAAAmuG,UAAU5tC,QAAU/gE,EAAMghC,UAAYw2E,EAAK/5G,MAAQ44C,EAAM54C,MAAQyC,EAAOzC,MAAQ,IACnG+5G,EAAK/5G,MAAQ+5G,EAAK/5G,MAAQ,GAC1B,QAASygH,GAEb,CAgDA,OA/CA,EAAAtxC,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,IAAOggE,EACP,MAAS,CAAC,eAAgBjC,EAAa7tE,MAAOuC,EAAMy4D,OACpD,MAASz4D,EAAM2E,MACf,KAAQ,aACR,aAAc7B,EAAE9C,EAAMw8G,WACtB,UAAalwC,EACb,YAAa,qBACZ,CACD7lB,QAAS,IAAM,EAAC,QAAa,KAAM,CACjC,MAAS,sBACR,CAACzmD,EAAMg9G,oBAAqB,QAAa,KAAM,CAChD,IAAO,QACP,MAAS,sBACT,YAAa,sBACZ,CAAC9kD,EAAM2iC,MAAQ3iC,EAAM2iC,MAAM/oD,EAASr0C,MAAMo9F,QAAS,QAAazhB,IAAM,QAAY,CACnF,IAAO,kBACNtnC,EAASr0C,MAAMo9F,OAAQ,SAAS,QAAa,KAAM,CACpD,IAAO,OACP,MAAS,qBACT,YAAa,qBACZ,CAAC3iC,EAAM1pD,KAAO0pD,EAAM1pD,KAAKsjC,EAASr0C,MAAM+Q,OAAQ,QAAa4qE,IAAM,QAAY,CAChF,IAAO,kBACNtnC,EAASr0C,MAAM+Q,MAAO,QAASshE,EAAMryE,MAAM8F,KAAI,CAAC0xB,EAAM7e,KAAU,QAAa,KAAM,CACpF,IAAO6e,EAAKz0B,IACZ,MAAS,CAAC,qBAAsB,CAC9B,gCAAiCy0B,EAAKge,WAExC,YAAa,qBACZ,CAACilB,EAAMjjC,KAAOijC,EAAMjjC,KAAKA,IAAQ,QAAamkD,IAAM,QAAY,CACjE,IAAO,kBACNnkD,EAAKj1B,OAAQ,CACdymD,QAAS,IAAM,CAACxxB,EAAKuiF,aAChB,QAAa,KAAM,CACxB,IAAO,OACP,MAAS,qBACT,YAAa,qBACZ,CAACt/C,EAAMt2D,KAAOs2D,EAAMt2D,KAAKkwC,EAASr0C,MAAMmE,OAAQ,QAAaw3E,IAAM,QAAY,CAChF,IAAO,kBACNtnC,EAASr0C,MAAMmE,MAAO,QAAS5B,EAAMg9G,oBAAqB,QAAa,KAAM,CAC9E,IAAO,OACP,MAAS,qBACT,YAAa,qBACZ,CAAC9kD,EAAMrI,KAAOqI,EAAMrI,KAAK/d,EAASr0C,MAAMoyD,OAAQ,QAAaupB,IAAM,QAAY,CAChF,IAAO,kBACNtnC,EAASr0C,MAAMoyD,MAAO,eAEpB,CAAC,CACV,ICrUWsuD,IAA4B,EAAA79C,EAAA,GAAa,CACpDioB,SAAU,CACRp9D,KAAM,MACNs7B,QAAS,SAEX6hC,SAAU,CACRn9D,KAAM,MACNs7B,QAAS,SAEX61D,UAAW,CACTnxF,KAAM,MACNs7B,QAAS,UAEX81D,SAAU,CACRpxF,KAAM,MACNs7B,QAAS,SAEX23D,iBAAkB,CAChBjzF,KAAMlZ,OACNw0C,QAAS,wCAEX43D,SAAU,CACRlzF,KAAMlZ,OACNw0C,QAAS,gCAEX63D,eAAgB,CACdnzF,KAAMlZ,OACNw0C,QAAS,iCAEX83D,cAAe,CACbpzF,KAAMlZ,OACNw0C,QAAS,gCAEX+3D,cAAe,CACbrzF,KAAMlZ,OACNw0C,QAAS,gCAEXg4D,cAAe,CACbtzF,KAAMlZ,OACNw0C,QAAS,gCAEXi4D,oBAAqB,CACnBvzF,KAAMrpB,MACN2kD,QAAS,IAAM,CAAC,CACdhpD,MAAO,GACPs7E,MAAO,MACN,CACDt7E,MAAO,GACPs7E,MAAO,MACN,CACDt7E,MAAO,GACPs7E,MAAO,MACN,CACDt7E,MAAO,IACPs7E,MAAO,OACN,CACDt7E,OAAQ,EACRs7E,MAAO,yCAGX4lC,gBAAiB9mD,SAChB,oBACU+mD,IAAmB,UAAmB,CACjDhhH,KAAM,mBACNoC,MAAOm+G,KACP,KAAAlmD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,EACJpH,IACE,WACE,KACJ00G,EAAI,UACJQ,EAAS,WACTD,EAAU,UACVxnF,EAAS,YACT21E,EAAW,aACXuR,EAAY,gBACZQ,GACEI,KACEqG,GAAsB,SAAS,IAAM1+G,EAAM0+G,oBAAoBn7G,KAAIs7G,GACjD,kBAAXA,EACF,CACLphH,MAAOohH,EACP9lC,OAAmB,IAAZ8lC,EAAgB/7G,EAAE,uCAAyCmP,OAAO4sG,IAGtE,IACFA,EACH9lC,MAAQ7hE,MAAM7E,OAAOwsG,EAAO9lC,QAAyBj2E,EAAE+7G,EAAO9lC,OAAxB8lC,EAAO9lC,WAmCjD,OAhCA,EAAAnM,EAAA,IAAU,KACR,MAAMkyC,EAAkB7B,GAAY9vC,YAAYntE,GAChD,OAAO,QAAa,MAAO,CACzB,MAAS,uBACR,CAACk4D,EAAMjvC,aAAa,QAAa,MAAO,CACzC,MAAS,uCACR,EAAC,QAAa,OAAQ,KAAM,CAACnmB,EAAE9C,EAAMo+G,qBAAqB,QAAa7f,GAAS,CACjF,MAASmgB,EAAoBjhH,MAC7B,WAAcg6G,EAAah6G,MAC3B,sBAAuBmS,GAAKqoG,EAAgB5lG,OAAOzC,IACnD,QAAW,UACX,QAAW,WACX,gBAAgB,GACf,SAAS,QAAa,MAAO,CAC9B,MAAS,6BACR,EAAC,QAAa,MAAO,KAAM,CAAC9M,EAAE9C,EAAMq+G,SAAWnY,EAAYzoG,MAAYs6G,EAAWt6G,MAAQ,EAAvB,EAA0B8yB,EAAU9yB,MAAOyoG,EAAYzoG,YAAY,QAAa,MAAO,CAC3J,MAAS,mCACR,EAAC,QAAaw/G,IAAa,QAAY,CACxC,WAAczF,EAAK/5G,MACnB,sBAAuB2vE,GAAUoqC,EAAK/5G,MAAQ2vE,EAC9C,QAAW,cACX,mBAAoBptE,EAAMs+G,eAC1B,kBAAmBt+G,EAAMy+G,cACzB,OAAUzG,EAAUv6G,MACpB,kBAAmBuC,EAAMw+G,cACzB,sBAAuBx+G,EAAMu+G,cAC7B,SAAW,EACX,wBAAwB,EACxB,gBAAiBv+G,EAAM2+G,gBAAkB,EAAI,EAC7C,QAAW,SACVG,GAAkB,SAAS,IAEzB,CAAC,CACV,ICvIWC,IAAmB,QAA0B,CACxDl/C,MAAO,CACL10C,KAAMlZ,OACNw0C,QAAS,SAEXu4D,MAAOnnD,QACPonD,YAAa,CAAC5sG,OAAQJ,QACtBf,OAAQ,CAACmB,OAAQJ,QACjBitG,UAAWrnD,QACXsnD,UAAWtnD,QACXtqD,IAAK0E,OACLjB,MAAO,CAACqB,OAAQJ,QAChBsvD,SAAU,CAAClvD,OAAQJ,QACnBmtG,OAAQvnD,UACP,CAAC73D,EAAOkK,KACT,IAAI,MACFguD,GACEhuD,EACJ,MAAMq5E,EAAMvjF,EAAMuN,KAAO,KACzB,OAAO,QAAag2E,EAAK,CACvB,MAAS,CAAC,mBAAoB,CAC5B,6BAA8BvjF,EAAMg/G,MACpC,kCAAmCh/G,EAAMk/G,UACzC,kCAAmCl/G,EAAMm/G,UACzC,8BAA+Bn/G,EAAMo/G,QACpC,8BAA8Bp/G,EAAM6/D,SACvC,MAAS,CACP3uD,QAAQ,QAAclR,EAAMkR,QAC5BF,OAAO,QAAchR,EAAMgR,OAC3BuwD,UAAU,QAAcvhE,EAAMuhE,UAC9BnzD,MAAM,QAAcpO,EAAMi/G,aAAe,QAE1C,CACDx4D,QAAS,IAAM,CAACyR,EAAMzR,cACtB,IClCS44D,IAA2B,EAAA/+C,EAAA,GAAa,CACnDg/C,QAASx9G,OACR,oBACUy9G,GAA0Bl+G,OAAOm+D,IAAI,8BAC5CggD,GAAgB,CACpBzmC,MAAO,GACP0mC,UAAU,GAENC,GAAsB,IACvBF,GACHxuG,MAAO,IAET,SAAS2uG,KACP,IAAIviC,EAAMh0E,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GAC9E,MAAMw2G,EAAQxiC,EAAI75E,KAAI4I,IAAW,CAC/BA,UACAoJ,SAAU,MAEZ,MAAO,CACLsqG,QAAS,CAAC1zG,EAASoJ,KACjB,IAAIuqG,GAAQ,EACZ,IAAK,IAAI7/G,EAAI,EAAGA,EAAI2/G,EAAM1/G,OAAQD,IAAK,CACrC,MAAMg1B,EAAO2qF,EAAM3/G,GACnB,GAAIg1B,EAAK1f,SAAWA,EAAU,CAC5BqqG,EAAMz8G,OAAOlD,EAAG,EAAG,CACjBkM,UACAoJ,aAEFuqG,GAAQ,EACR,KACF,CACF,CACKA,GAAOF,EAAMp9G,KAAK,CACrB2J,UACAoJ,YACA,EAEJhG,KAAM,IAAMqwG,EAAM1/G,OAClB6/G,MAAO,KACL,IAAIA,EAAQ,EACZ,IAAKH,EAAM1/G,OAAQ,OAAO,EAC1B,MAAM8/G,EAAQ10G,KAAKmP,MAAMmlG,EAAM,GAAGrqG,UAClC,IAAK,IAAItV,EAAI,EAAGA,EAAI2/G,EAAM1/G,OAAQD,IAC5BqL,KAAKmP,MAAMmlG,EAAM3/G,GAAGsV,YAAcyqG,IAAOD,GAAS,GAExD,OAAOA,CAAK,EAEdE,QAAS,IACAL,EAAMhzG,QAGnB,CACA,SAASszG,GAAcjrF,GACrB,IAAIkrF,EAAU/2G,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GAClF,GAAK6rB,EAAKxwB,SAGR,IAAK,MAAMsK,KAASkmB,EAAKxwB,SACvBy7G,GAAcnxG,EAAOoxG,QAHvBA,EAAQ39G,KAAKyyB,GAMf,OAAOkrF,CACT,CACA,SAASC,GAAYd,GACnB,IAAIn9G,EAAOiH,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,IAAImqD,IACnF,IAAK,MAAMt+B,KAAQqqF,EACbrqF,EAAKz0B,KAAK2B,EAAKsL,IAAIwnB,EAAKz0B,KACxBy0B,EAAKxwB,UACP27G,GAAYnrF,EAAKxwB,SAAUtC,GAG/B,OAAOA,CACT,CACA,SAASk+G,GAAeprF,GACtB,GAAKA,EAAKz0B,IACV,MAAiB,qBAAby0B,EAAKz0B,IAAmCg/G,GACxC,CAAC,oBAAqB,qBAAqBvyG,SAASgoB,EAAKz0B,KAAak/G,QAA1E,CAEF,CACA,SAASY,GAASrrF,GAChB,IAAIspB,EAAQn1C,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,EAChF,OAAK6rB,EAAKxwB,SACH6G,KAAKC,IAAIgzC,KAAUtpB,EAAKxwB,SAASlB,KAAIwL,GAASuxG,GAASvxG,EAAOwvC,EAAQ,MADlDA,CAE7B,CACA,SAASgiE,GAAkBzwC,GACzB,IAAI0wC,GAAY,EAChB,SAASC,EAASxrF,GAChB,IAAIyrF,EAAct3G,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,IAAmBA,UAAU,GACjF,GAAK6rB,EAIL,GAHIyrF,IACFzrF,EAAK+pF,OAAQ,GAEX/pF,EAAK+pF,MACP,GAAI/pF,EAAKxwB,SACP,IAAK,IAAIxE,EAAIg1B,EAAKxwB,SAASvE,OAAS,EAAGD,GAAK,EAAGA,IAC7CwgH,EAASxrF,EAAKxwB,SAASxE,IAAI,QAGxBugH,EAEMtpG,OAAO+d,EAAKjkB,SACrB,SAAa,2DAA2DikB,EAAKz0B,QAF7Ey0B,EAAKiqF,WAAY,EAInBsB,GAAY,OAGd,GAAIvrF,EAAKxwB,SACP,IAAK,IAAIxE,EAAIg1B,EAAKxwB,SAASvE,OAAS,EAAGD,GAAK,EAAGA,IAC7CwgH,EAASxrF,EAAKxwB,SAASxE,SAGzBugH,GAAY,CAGlB,CACA,IAAK,IAAIvgH,EAAI6vE,EAAM5vE,OAAS,EAAGD,GAAK,EAAGA,IACrCwgH,EAAS3wC,EAAM7vE,IAEjB,SAAS0gH,EAAe1rF,GACtB,IAAIgqF,EAAc71G,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,EACtF,IAAK6rB,EAAM,OAAOgqF,EAClB,GAAIhqF,EAAKxwB,SAAU,CACjBwwB,EAAKgqF,YAAcA,EACnB,IAAK,MAAMlwG,KAASkmB,EAAKxwB,SACvBw6G,EAAc0B,EAAe5xG,EAAOkwG,EAExC,MAAWhqF,EAAK+pF,QACd/pF,EAAKgqF,YAAcA,EACnBA,GAAep2G,WAAWosB,EAAKjkB,OAAS,MAAQ,GAElD,OAAOiuG,CACT,CACA,IAAIA,EAAc,EAClB,IAAK,MAAMhqF,KAAQ66C,EACjBmvC,EAAc0B,EAAe1rF,EAAMgqF,EAEvC,CACA,SAAS18D,GAAMutB,EAAO8wC,GACpB,MAAMtB,EAAU,GAChB,IAAIuB,EAAe,EACnB,MAAMjB,EAAQD,GAAc7vC,GAC5B,MAAO8vC,EAAMrwG,OAAS,EAAG,CACvB,IAAIuxG,EAAUlB,EAAMG,QACpB,MAAMjmE,EAAM,GACZ,IAAIinE,EAAW,EACf,MAAOD,EAAU,EAAG,CAClB,MACE30G,QAAS8oB,EAAI,SACb1f,GACEqqG,EAAMK,UACJ72F,EAAOw3F,EAAWC,EAAeP,GAASrrF,GAMhD,GALA6kB,EAAIt3C,KAAK,IACJyyB,EACH+rF,QAAS53F,GAAQ,EACjB63F,QAAShsF,EAAKxwB,SAAWy7G,GAAcjrF,GAAM/0B,OAAS,IAEpD+0B,EAAKxwB,SACP,IAAK,MAAMsK,KAASkmB,EAAKxwB,SAAU,CAEjC,MAAMmwB,EAAOrf,EAAW,EAAIwrG,EAAWz1G,KAAK41G,IAAI,GAAIL,EAAe,GACnEjB,EAAMC,QAAQ9wG,EAAO8xG,EAAez3F,EAAOwL,EAC7C,CAEFmsF,GAAY,EACZD,GAAW,CACb,CACAD,GAAgB,EAChBvB,EAAQ98G,KAAKs3C,EACf,CACA,MAAMqmE,EAAUrwC,EAAMvsE,KAAI0xB,GAAQirF,GAAcjrF,KAAOyP,OACvD,MAAO,CACLy7E,UACAb,UAEJ,CACA,SAAS6B,GAAyBrxC,GAChC,MAAMsxC,EAAkB,GACxB,IAAK,MAAMnsF,KAAQ66C,EAAO,CACxB,MAAMuxC,EAAc,IACfhB,GAAeprF,MACfA,GAECz0B,EAAM6gH,EAAY7gH,MAAqC,kBAAtB6gH,EAAY5jH,MAAqB4jH,EAAY5jH,MAAQ,MACtFA,EAAQ4jH,EAAY5jH,OAAS+C,GAAO,KACpC8gH,EAAe,IAChBD,EACH7gH,MACA/C,QACAgiH,SAAU4B,EAAY5B,WAAgC,MAAnB4B,EAAY7gH,OAAiB6gH,EAAYzsF,MAC5EnwB,SAAU48G,EAAY58G,SAAW08G,GAAyBE,EAAY58G,eAAY4E,GAEpF+3G,EAAgB5+G,KAAK8+G,EACvB,CACA,OAAOF,CACT,CACO,SAASG,GAAcvhH,EAAOmU,GACnC,MAAMmrG,GAAU,QAAI,IACda,GAAU,QAAI,IACdxF,GAAgB,QAAI,CAAC,GACrBC,GAAmB,QAAI,CAAC,GACxB4G,GAAkB,QAAI,CAAC,IAC7B,SAAY,KACV,MAAMC,EAAWzhH,EAAMs/G,SAAW7gH,OAAO0D,KAAKnC,EAAM8vE,MAAM,IAAM,CAAC,GAAGvsE,KAAI/C,IAAO,CAC7EA,MACAu4E,OAAO,QAAWv4E,OAEdsvE,EAAQ2xC,EAASn+G,QACjBnB,EAAOi+G,GAAYtwC,GACrB37D,GAASkiG,SAAS54G,MAAMyC,SAAWiC,EAAKxD,IAAI,qBAC9CmxE,EAAMp5D,QAAQ,CACZlW,IAAK,mBACLu4E,MAAO,UAGP5kE,GAAS+kG,YAAYz7G,QAAU0E,EAAKxD,IAAI,sBAC1CmxE,EAAMp5D,QAAQ,CACZlW,IAAK,sBAGL2T,GAASwhG,YAAYl4G,QAAU0E,EAAKxD,IAAI,sBAC1CmxE,EAAMttE,KAAK,CACThC,IAAK,sBAGT,MAAM4gH,EAAkBD,GAAyBrxC,GACjDywC,GAAkBa,GAClB,MAAMR,EAAWt1G,KAAKC,OAAO61G,EAAgB79G,KAAI0xB,GAAQqrF,GAASrrF,MAAU,EACtEysF,EAASn/D,GAAM6+D,EAAiBR,GACtCtB,EAAQ7hH,MAAQikH,EAAOpC,QACvBa,EAAQ1iH,MAAQikH,EAAOvB,QACvB,MAAMwB,EAAcD,EAAOpC,QAAQ56E,KAAK,GACxC,IAAK,MAAMktD,KAAU+vB,EACd/vB,EAAOpxF,MACRoxF,EAAO6tB,WACL7tB,EAAOh9D,OACT+lF,EAAcl9G,MAAMm0F,EAAOpxF,KAAOoxF,EAAOh9D,MAEvCg9D,EAAOgwB,UACThH,EAAiBn9G,MAAMm0F,EAAOpxF,KAAOoxF,EAAOgwB,UAG5ChwB,EAAOvvF,SACTm/G,EAAgB/jH,MAAMm0F,EAAOpxF,KAAOoxF,EAAOvvF,QAE/C,IAEF,MAAMiU,EAAO,CACXgpG,UACAa,UACAxF,gBACAC,mBACA4G,mBAGF,OADA,QAAQjC,GAAyBjpG,GAC1BA,CACT,CACO,SAASurG,KACd,MAAMvrG,GAAO,QAAOipG,IACpB,IAAKjpG,EAAM,MAAM,IAAIu3C,MAAM,oBAC3B,OAAOv3C,CACT,CCtPO,MAAMwrG,IAA6B,EAAAxhD,EAAA,GAAa,CACrD2J,MAAOh4D,OACPouB,OAAQw3B,QACR4+C,YAAa5+C,QACbiiD,UAAWjiD,QACXkqD,YAAa,CACX52F,KAAM,MACNs7B,QAAS,YAEXu7D,aAAc,CACZ72F,KAAM,MACNs7B,QAAS,aAEXw7D,YAAa,CACX92F,KAAM1sB,YAEL,cACAqjF,MACF,qBACUogC,IAAoB,UAAmB,CAClDtkH,KAAM,oBACNoC,MAAO8hH,KACP,KAAA7pD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,EACJpH,IACE,WACE,WACJq3G,EAAU,OACVzD,EAAM,SACN2D,GACEC,MACE,aACJZ,EAAY,YACZhB,EAAW,UACXC,EAAS,cACTF,GACEkB,MACE,QACJwG,EAAO,QACPb,GACEuC,MACE,cACJ5/B,GACED,GAAUhiF,GACd,SAASmiH,EAAe9hG,EAAQmD,GAC9B,GAAKxjB,EAAMqgC,QAAWhgB,EAAO2+F,MAC7B,MAAO,CACL5+E,SAAU,SACVhyB,KAAMiS,EAAO2+F,OAAQ,QAAc3+F,EAAO4+F,kBAAe51G,EACzD8E,IAAKnO,EAAMqgC,OAAS,uCAAuC7c,UAAOna,EAEtE,CACA,SAAS+4G,EAAY/hG,GACnB,MAAM4U,EAAOyhF,EAAOj5G,MAAM2iB,MAAK6U,GAAQA,EAAKz0B,MAAQ6f,EAAO7f,MAC3D,OAAKy0B,EACiB,QAAfA,EAAKilB,MAAkBl6C,EAAM+hH,YAAc/hH,EAAMgiH,aADtChiH,EAAM+hH,WAE1B,CACA,MAAM,uBACJ53C,EAAsB,sBACtBC,IACE,SAAmBpqE,EAAO,UACxB,eACJ2oF,EAAc,OACdF,IACE,SAAWzoF,GACTmqF,GAAY,SAAS,KAAM,CAC/Bm1B,QAASA,EAAQ7hH,MACjB0iH,QAASA,EAAQ1iH,MACjB08G,aACAE,WACA3D,OAAQA,EAAOj5G,MACfi8G,aAAcA,EAAaj8G,MAC3Bi7G,YAAaA,EAAYj7G,MACzBk7G,YACAyJ,kBAEIC,GAAoB,SAAS,IAAM,CAAC,mBAAoB,CAC5D,2BAA4BriH,EAAMqgC,QACjCsoD,EAAelrF,MAAOwkF,EAAcxkF,SACjC6kH,EAAuBjvG,IAC3B,IAAI,OACFgN,EAAM,EACNkD,EAAC,EACDC,GACEnQ,EACJ,MAAM8rG,EAA2B,sBAAf9+F,EAAO7f,KAA8C,sBAAf6f,EAAO7f,IACzDyhH,GAAc,QAAWjiH,EAAMiiH,aAAe,CAAC,EAAG5hG,EAAO4hG,aAAe,CAAC,GAC/E,OAAO,QAAalD,IAAkB,QAAY,CAChD,IAAO,KACP,MAAS1+F,EAAOw/C,MAChB,MAAS,CAAC,CACR,6BAA8Bx/C,EAAOo/F,WAAaz/G,EAAMy2G,YACxD,2BAA4B4D,EAASh6F,GACrC,0BAA2BA,EAAO2+F,UAC9BqD,EAAkB5kH,OACxB,MAAS,CACPuT,OAAO,QAAcqP,EAAOrP,OAC5BqwD,UAAU,QAAchhD,EAAOghD,UAC/BE,UAAU,QAAclhD,EAAOkhD,aAC5B4gD,EAAe9hG,EAAQmD,IAE5B,QAAWnD,EAAO4gG,QAClB,QAAW5gG,EAAO2gG,QAClB,QAAW3gG,EAAOo/F,SAAW,IAAMtF,EAAW95F,QAAUhX,EACxD,MAASgX,EAAO2+F,MAChB,OAAU3+F,EAAO++F,OACjB,UAAa/+F,EAAO6+F,UACpB,UAAaC,GACZ8C,GAAc,CACfx7D,QAAS,KACP,MAAM87D,EAAiB,UAAUliG,EAAO7f,MAClCgiH,EAAkB,CACtBniG,SACAs4F,YACA0B,WACAF,aACAzD,OAAQA,EAAOj5G,MACfi8G,aAAcA,EAAaj8G,MAC3Bi7G,YAAaA,EAAYj7G,MACzB2kH,eAEF,OAAIlqD,EAAMqqD,GAAwBrqD,EAAMqqD,GAAgBC,GACrC,sBAAfniG,EAAO7f,IACF03D,EAAM,8BAA8BsqD,KAAqB/J,EAAch7G,QAAS,QAAaspF,GAAc,CAChH,WAAc2xB,EAAYj7G,MAC1B,cAAiBi8G,EAAaj8G,QAAUi7G,EAAYj7G,MACpD,sBAAuBk7G,GACtB,QAEE,QAAa,MAAO,CACzB,MAAS,gCACR,EAAC,QAAa,OAAQ,KAAM,CAACt4F,EAAO04D,QAAS14D,EAAOo/F,WAAaz/G,EAAMy2G,cAAe,QAAa53B,GAAO,CAC3G,IAAO,OACP,MAAS,iCACT,KAAQujC,EAAY/hG,IACnB,MAAOrgB,EAAM85G,WAAaO,EAASh6F,KAAW,QAAa,MAAO,CACnE,IAAO,QACP,MAAS,CAAC,qCAAsC8pD,EAAuB1sE,OACvE,MAAS2sE,EAAsB3sE,OAC9B,CAACi5G,EAAOj5G,MAAMguC,WAAUloB,GAAKA,EAAE/iB,MAAQ6f,EAAO7f,MAAO,KAAK,GAE/D,EAEEiiH,EAA6B,KACjC,MAAMR,GAAc,QAAWjiH,EAAMiiH,aAAe,CAAC,GAAK,CAAC,GACrDhjB,GAAe,SAAS,IACrBkhB,EAAQ1iH,MAAM4E,QAAOge,GAAUA,GAAQo/F,WAAaz/G,EAAMy2G,gBAE7D5zB,GAAa,SAAS,KAC1B,MAAM6/B,EAAmBvC,EAAQ1iH,MAAM2iB,MAAKC,GAAyB,sBAAfA,EAAO7f,MAC7D,GAAwB,MAApBkiH,EACJ,OAAOhK,EAAYj7G,MAAQ,cAAgBi8G,EAAaj8G,MAAQ,yBAA2B,cAAc,IAE3G,OAAO,QAAashH,IAAkB,QAAY,CAChD,IAAO,KACP,MAAS,IAAIsD,EAAkB5kH,OAC/B,QAAW6hH,EAAQ7hH,MAAMyC,OAAS,GACjC+hH,GAAc,CACfx7D,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,gCACR,EAAC,QAAa83C,GAAS,CACxB,OAAS,EACT,MAAS,+BACT,WAAa,EACb,QAAW,UACX,MAASU,EAAaxhG,MACtB,MAASqF,EAAE,6BACX,SAAY9C,EAAM85G,UAClB,QAAW,aACX,gBAAiB,IAAMpD,EAAOj5G,MAAQ,GACtC,WAAcolF,EAAWplF,MACzB,iBAAkB,IAAMk7G,GAAWD,EAAYj7G,QAC9C,IACEy6D,EACHunC,KAAMz/F,IAAS,QAAa4qF,GAAO,CACjC,QAAW5qF,EAAMi1B,KAAK4K,KAAK4/E,SAAW,IAAMtF,EAAWn6G,EAAMi1B,KAAK4K,UAAOx2B,EACzE,YAAetG,IACbA,EAAEioB,iBACFjoB,EAAE0rB,iBAAiB,GAEpB,CACDg4B,QAAS,IAAM,CAACzmD,EAAMi1B,KAAK8jD,OAAO,QAAa8F,GAAO,CACpD,MAAS,CAAC,6BAA8Bw7B,EAASr6G,EAAMi1B,KAAK4K,MAAQ,qCACpE,KAAQuiF,EAAYpiH,EAAMi1B,KAAK4K,KAC/B,KAAQ,SACP,eAGP,GAEJ,EAAA+sC,EAAA,IAAU,IACD6b,EAAOhrF,OAAQ,QAAa,KAAM,KAAM,EAAC,QAAaglH,EAA4B,KAAM,SAAU,QAAa,KAAW,KAAM,CAACvqD,EAAMonD,QAAUpnD,EAAMonD,QAAQn1B,EAAU1sF,OAAS6hH,EAAQ7hH,MAAM8F,KAAI,CAACu2C,EAAKt2B,KAAM,QAAa,KAAM,KAAM,CAACs2B,EAAIv2C,KAAI,CAAC8c,EAAQkD,KAAM,QAAa++F,EAAsB,CACzS,OAAUjiG,EACV,EAAKkD,EACL,EAAKC,GACJ,YAAWxjB,EAAM+hF,UAAW,QAAa,KAAM,CAChD,MAAS,yBACR,EAAC,QAAa,KAAM,CACrB,QAAWo+B,EAAQ1iH,MAAMyC,QACxB,EAAC,QAAagiF,GAAY,CAC3B,KAAQ,wBACR,UAAY,EACZ,QAAU,EACV,MAAkC,mBAAlBliF,EAAM+hF,aAAwB14E,EAAYrJ,EAAM+hF,QAChE,eAAiB,GAChB,CACDt7B,QAASyR,EAAM0rB,gBAGrB,IC3NW++B,IAAoC,EAAAriD,EAAA,GAAa,CAC5DrrC,KAAM,CACJ9J,KAAM1sB,OACNm5D,UAAU,IAEX,4BACUgrD,IAA2B,UAAmB,CACzDhlH,KAAM,2BACNoC,MAAO2iH,KACP,KAAA1qD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,YACJ0sG,EAAW,YACXC,EAAW,YACXC,GACEE,MACE,WACJn6B,EAAU,eACV28B,EAAc,OACdx8B,GACE28B,MACE,QACJwG,GACE0B,KACEpoG,GAAO,SAAS,IACbq9F,EAAY,CAAC92G,EAAMi1B,SAE5B,MAAO,KAAM,QAAa,KAAM,CAC9B,MAAS,gCACT,MAAS,CACP,wCAAyCj1B,EAAMi1B,KAAKspB,QAErD,CAAC4hE,EAAQ1iH,MAAM8F,KAAI8c,IACpB,GAAmB,qBAAfA,EAAO7f,IAA4B,CACrC,MAAMo+E,EAAOg4B,EAAY52G,EAAMi1B,MAAQ,UAAY,QAC7CtD,EAAU,IAAMklF,EAAY72G,EAAMi1B,MACxC,OAAOijC,EAAM,sBAAsB,CACjCjjC,KAAMj1B,EAAMi1B,KACZ8qF,MAAOtmG,EAAKhc,MAAMyC,OAClBF,MAAO,CACL4+E,OACAjtD,eAEE,QAAaotF,GAAkB,CACnC,MAAS,yCACR,CACDt4D,QAAS,IAAM,EAAC,QAAa2yB,GAAM,CACjC,KAAQ,QACR,QAAW,OACX,KAAQwF,EACR,QAAWjtD,GACV,OAAO,QAAa,OAAQ,KAAM,CAAC3xB,EAAMi1B,KAAKx3B,SAAS,QAAa,OAAQ,KAAM,EAAC,QAAiB,KAAMgc,EAAKhc,MAAMyC,QAAQ,QAAiB,SAErJ,CACA,GAAmB,sBAAfmgB,EAAO7f,IAA6B,CACtC,MAAMwpE,EAAa6S,EAAWpjE,EAAKhc,OAC7BmiF,EAAgB45B,EAAe//F,EAAKhc,SAAWusE,EAC/C64C,EAAcjzG,GAAKotE,EAAOvjE,EAAKhc,MAAOmS,GAC5C,OAAOsoD,EAAM,uBAAuB,CAClCl4D,MAAO,CACLgqE,aACA4V,gBACA,sBAAuBijC,OAErB,QAAa,KAAM,KAAM,EAAC,QAAa97B,GAAc,CACzD,WAAc/c,EACd,cAAiB4V,EACjB,sBAAuBijC,GACtB,OACL,CACA,OAAO,QAAa,KAAM,KAAM,KAAK,KAEzC,ICxEWC,IAAyB,EAAAxiD,EAAA,GAAa,CACjDlqD,MAAO/D,OACP4iB,KAAMx2B,OACNskH,UAAW,CAACtkH,OAAQP,UACpByzB,SAAS,UACTqxF,eAAe,UACfC,YAAY,cACT,YACF,iBACUC,IAAgB,UAAmB,CAC9CtlH,KAAM,gBACNoC,MAAO8iH,KACP,KAAA7qD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,eACJy+E,EAAc,OACdF,IACE,SAAWzoF,EAAO,qBAChB,WACJ68E,EAAU,aACV48B,EAAY,aACZC,EAAY,YACZhB,EAAW,UACXC,GACEgB,MACE,WACJ1D,EAAU,aACVC,GACEC,MACE,WACJgE,EAAU,OACVzD,EAAM,SACN2D,GACEC,MACE,QACJ6F,GACE0B,MACJ,EAAAj1C,EAAA,IAAU,KAAM,QAAa,KAAM,CACjC,MAAS,CAAC,mBAAoB,CAC5B,iCAAkC5sE,EAAM2xB,SAAW3xB,EAAMgjH,eAAiBhjH,EAAMijH,aAC/Et6B,EAAelrF,OAClB,QAAWuC,EAAM2xB,QACjB,cAAiB3xB,EAAMgjH,cACvB,WAAchjH,EAAMijH,YACnB,CAACjjH,EAAMi1B,MAAQkrF,EAAQ1iH,MAAM8F,KAAI,CAAC8c,EAAQpgB,KAC3C,MAAMg1B,EAAOj1B,EAAMi1B,KACbkuF,EAAW,QAAQ9iG,EAAO7f,MAC1B4iH,EAAiB,UAAU/iG,EAAO7f,MAClC2pF,EAAY,CAChB/zE,MAAOpW,EAAMoW,MACb6e,KAAMA,EAAK4K,IACXyhF,aAAcrsF,EACdx3B,OAAO,QAAqBw3B,EAAKkrF,QAAS9/F,EAAO7f,KACjD6f,SACAw8D,aACA48B,eACAxD,aACAC,gBAEIsM,EAAkB,CACtBniG,SACAs4F,YACA0B,WACAF,aACAzD,OAAQA,EAAOj5G,MACfi8G,aAAcA,EAAaj8G,MAC3Bi7G,YAAaA,EAAYj7G,MACzB2kH,YAAa,IAAM,IAEfW,EAAuC,oBAApB/iH,EAAM+iH,UAA2B/iH,EAAM+iH,UAAU,CACxE3sG,MAAO+zE,EAAU/zE,MACjB6e,KAAMk1D,EAAUl1D,KAChBqsF,aAAcn3B,EAAUm3B,aACxB7jH,MAAO0sF,EAAU1sF,MACjB4iB,WACGrgB,EAAM+iH,UACLM,EAA8C,oBAArBhjG,EAAO0iG,UAA2B1iG,EAAO0iG,UAAU,CAChF3sG,MAAO+zE,EAAU/zE,MACjB6e,KAAMk1D,EAAUl1D,KAChBqsF,aAAcn3B,EAAUm3B,aACxB7jH,MAAO0sF,EAAU1sF,QACd4iB,EAAO0iG,UACZ,OAAO,QAAahE,IAAkB,QAAY,CAChD,MAAS1+F,EAAOw/C,MAChB,MAAS,CACP,iCAAiD,sBAAfx/C,EAAO7f,IACzC,+BAA+C,sBAAf6f,EAAO7f,KAEzC,MAAS6f,EAAO2+F,MAChB,YAAe3+F,EAAO4+F,YACtB,UAAa5+F,EAAO6+F,UACpB,SAAaz2B,EAAOhrF,WAA0B4L,EAAlBgX,EAAOkhD,SACnC,UAA4B,sBAAflhD,EAAO7f,KAA8C,sBAAf6f,EAAO7f,IAC1D,OAAU6f,EAAO++F,OACjB,MAAU32B,EAAOhrF,WAAuB4L,EAAfgX,EAAOrP,OAC/B+xG,EAAWM,GAAkB,CAC9B58D,QAAS,KACP,GAAIyR,EAAMirD,KAAc16B,EAAOhrF,MAAO,OAAOy6D,EAAMirD,KAAYh5B,GAC/D,GAAmB,sBAAf9pE,EAAO7f,IACT,OAAO03D,EAAM,4BAA4BiyB,KAAc,QAAapD,GAAc,CAChF,UAAa9xD,EAAK64D,WAClB,WAAcjR,EAAW,CAAC5nD,IAC1B,SAAW,SAAc,IAAMwkF,EAAaxkF,IAAO,CAAC,UACnD,MAEL,GAAmB,sBAAf5U,EAAO7f,IACT,OAAO03D,EAAM,4BAA4BiyB,KAAc,QAAa/Q,GAAM,CACxE,KAAQ68B,EAAWhhF,GAAQ,YAAc,UACzC,KAAQ,QACR,QAAW,OACX,SAAW,SAAc,IAAMihF,EAAajhF,IAAO,CAAC,UACnD,MAEL,MAAMquF,GAAe,QAAgBn5B,EAAU1sF,OAC/C,OAAQgrF,EAAOhrF,OAAuB,QAAa,KAAW,KAAM,EAAC,QAAa,MAAO,CACvF,MAAS,0BACR,CAACy6D,EAAMkrD,KAAkBZ,IAAoBniG,EAAO04D,SAAS,QAAa,MAAO,CAClF,MAAS,0BACR,CAAC7gB,EAAMirD,KAAYh5B,IAAcm5B,MAJbA,CAI6B,GAEtD,OAEN,ICtIK,SAASC,GAAyB79D,EAAOlhB,EAAQg/E,GACtD,OAAO/kH,OAAO0D,KAAKujD,GAAOrjD,QAAO7B,IAAO,QAAKA,IAAQA,EAAI4uD,SAAS5qB,KAASmvB,QAAO,CAAC8vD,EAAKjjH,KACtFijH,EAAIjjH,EAAI8C,MAAM,GAAIkhC,EAAOtkC,SAAWwV,GAASgwC,EAAMllD,GAAKkV,EAAO8tG,EAAQ9tG,IAChE+tG,IACN,CAAC,EACN,CCKO,MAAMC,IAA0B,EAAApjD,EAAA,GAAa,CAClDyhB,QAAS,CAAClqB,QAAS5lD,QACnB0xG,YAAa,CACXx4F,KAAMlZ,OACNw0C,QAAS,qCAEXq3C,WAAYjmC,QACZiY,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjB03C,WAAY,CACVhzE,KAAMlZ,OACNw0C,QAAS,uBAEXm9D,SAAU,CAACnlH,OAAQP,UACnB6kH,UAAW,CAACtkH,OAAQP,cACjB,YACF,kBACU2lH,IAAiB,UAAmB,CAC/CjmH,KAAM,iBACN07D,cAAc,EACdt5D,MAAO0jH,KACP,KAAAzrD,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,QACJi2G,GACE0B,MACE,cACJnM,EAAa,aACbQ,EAAY,WACZD,GACEE,MACE,WACJt5B,EAAU,aACV48B,GACEE,MACE,YACJ9C,EAAW,YACXD,GACEI,MACE,EACJl0G,IACE,WACE,OACJ2lF,IACE,SAAWzoF,GAoEf,OAnEA,EAAA4sE,EAAA,IAAU,KACJ5sE,EAAM+hF,SAAa/hF,EAAM8vE,MAAM5vE,SAAUg4D,EAAM6pB,QAQ9C/hF,EAAM+hF,SAAY/hF,EAAM8vE,MAAM5vE,QAAWF,EAAM89F,YAQ7C,QAAa,KAAW,KAAM,CAAC99F,EAAM8vE,MAAMvsE,KAAI,CAAC0xB,EAAM7e,KAC3D,GAAkB,UAAd6e,EAAK9J,KAAkB,CACzB,MAAMg/D,EAAY,CAChB/zE,QACA6e,OACAkrF,QAASA,EAAQ1iH,MACjBw4G,aACAC,eACAr5B,aACA48B,eACA5C,cACAD,eAEF,OAAO1+C,EAAM,gBAAkBA,EAAM,gBAAgBiyB,IAAa,QAAay4B,IAA0B,QAAY,CACnH,IAAO,gBAAgB3tF,EAAK51B,KAC5B,KAAQ41B,GACPsuF,GAAyB79D,EAAO,iBAAiB,IAAMykC,KAAajyB,EACzE,CACA,MAAMiyB,EAAY,CAChB/zE,QACA6e,KAAMA,EAAK4K,IACXyhF,aAAcrsF,EACdkrF,QAASA,EAAQ1iH,MACjBw4G,aACAC,eACAr5B,aACA48B,gBAEIqK,EAAgB,IACjB35B,EACHnqF,OAAO,QAAW,CAChBQ,IAAK,QAAQy0B,EAAKz0B,KAAOy0B,EAAK7e,QAC9Bub,QAAS+jF,EAAcj4G,MAAQ,KAC7By4G,EAAajhF,EAAK,OAChB5rB,EACJ+M,QACA6e,OACA8tF,UAAW/iH,EAAM+iH,UACjBt6B,OAAQA,EAAOhrF,OACd8lH,GAAyB79D,EAAO,QAAQ,IAAMykC,IAAsC,oBAAnBnqF,EAAM4jH,SAA0B5jH,EAAM4jH,SAAS,CACjH3uF,KAAMk1D,EAAUl1D,KAChB7e,MAAO+zE,EAAU/zE,MACjBkrG,aAAcn3B,EAAUm3B,eACrBthH,EAAM4jH,WAEb,OAAO,QAAa,KAAW,CAC7B,IAAOE,EAAc9jH,MAAMQ,KAC1B,CAAC03D,EAAMjjC,KAAOijC,EAAMjjC,KAAK6uF,IAAiB,QAAaZ,GAAeY,EAAc9jH,MAAOk4D,GAAQ+9C,EAAWhhF,IAASijC,EAAM,kBAAkBiyB,IAAY,OAtDvJ,QAAa,KAAM,CACxB,MAAS,4BACT,IAAO,WACN,EAAC,QAAa,KAAM,CACrB,QAAWg2B,EAAQ1iH,MAAMyC,QACxB,CAACg4D,EAAM,gBAAkBp1D,EAAE9C,EAAMm+F,iBAb7B,QAAa,KAAM,CACxB,MAAS,4BACT,IAAO,WACN,EAAC,QAAa,KAAM,CACrB,QAAWgiB,EAAQ1iH,MAAMyC,QACxB,CAACg4D,EAAM6pB,aAAej/E,EAAE9C,EAAM2jH,mBA4D9B,CAAC,CACV,ICxHWI,IAAkB,EAAAzjD,EAAA,GAAa,CAC1C0jD,YAAansD,QACbosD,YAAapsD,QACb3mD,OAAQ,CAACmB,OAAQJ,QACjBmzF,MAAOvtC,YACJ,YACA0jB,QACAzK,QACA,WACF,UACUozC,IAAS,UAAmB,CACvCtmH,KAAM,SACNoC,MAAO+jH,KACP,KAAA9rD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,KACL70D,GACE6G,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,eACJy7E,GACED,GAAWx7E,GAmBf,OAlBA,EAAA4sE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,UAAW,CACnB,0BAA2BvN,EAAMkR,OACjC,wBAAyBlR,EAAMgkH,YAC/B,wBAAyBhkH,EAAMikH,YAC/B,qBAAsB/rD,EAAM/pD,IAC5B,wBAAyB+pD,EAAMgK,OAC/B,iBAAkBliE,EAAMolG,OACvB95B,EAAa7tE,MAAOg+E,EAAeh+E,MAAOuC,EAAMy4D,OACnD,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,CAACyR,EAAM/pD,QAAS+pD,EAAMzR,SAAU,QAAa,MAAO,CACjE,MAAS,mBACT,MAAS,CACPv1C,QAAQ,QAAclR,EAAMkR,UAE7B,EAAC,QAAa,QAAS,KAAM,CAACgnD,EAAMzR,cAAgByR,EAAMisD,YAAajsD,EAAMgK,gBAE3E,CAAC,CACV,ICjDWkiD,IAA0B,EAAA9jD,EAAA,GAAa,CAClDwP,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBsrC,UAAW,CACT5mE,KAAM,CAAClZ,OAAQnQ,MAAO5D,UACtBuoD,QAAS,MAEXk1D,eAAgB,CACdxwF,KAAM,CAAClZ,OAAQnQ,MAAO5D,UACtBuoD,QAAS,MAEXm9D,SAAU,CAACnlH,OAAQP,UACnB6kH,UAAW,CAACtkH,OAAQP,UACpBmzF,aAAcx5B,SACb,mBACI,SAAS,GAAc73D,EAAOi1B,EAAM7e,EAAO+pG,GAChD,MAAM1iH,EAAQuC,EAAMqxF,aAAep8D,GAAO,QAAoBA,EAAMj1B,EAAM+xF,WACpEjE,GAAa,QAAoB74D,EAAMj1B,EAAM27G,gBAAgB,GAC7D0I,EAAclE,EAAQxsD,QAAO,CAACvyD,EAAKif,KACrB,MAAdA,EAAO7f,MAAaY,EAAIif,EAAO7f,MAAO,QAAoBy0B,EAAM5U,EAAO5iB,QACpE2D,IACN,CAAC,GACJ,MAAO,CACL+pB,KAAM,OACN3qB,IAAKR,EAAMqxF,cAAe,QAAoBp8D,EAAMj1B,EAAM+xF,WAAat0F,EACvE2Y,QACA3Y,QACAqwF,aACAqyB,QAASkE,EACTxkF,IAAK5K,EAET,CACO,SAAS,GAAej1B,EAAO8vE,EAAOqwC,GAC3C,OAAOrwC,EAAMvsE,KAAI,CAAC0xB,EAAM7e,IAAU,GAAcpW,EAAOi1B,EAAM7e,EAAO+pG,IACtE,CACO,SAASmE,GAAkBtkH,EAAOmgH,GACvC,MAAMrwC,GAAQ,SAAS,IAAM,GAAe9vE,EAAOA,EAAM8vE,MAAOqwC,EAAQ1iH,SACxE,MAAO,CACLqyE,QAEJ,CCxBO,MAAMy0C,IAAqB,EAAAjkD,EAAA,GAAa,IAC1CojD,KACHc,gBAAiB3sD,QACjB4sD,kBAAmB5sD,QACnB6sD,kBAAmB7sD,QACnB7mD,MAAO,CAACiB,OAAQI,QAChB7M,OAAQyM,UACLwjG,QACAW,QACAiJ,QACA+E,QACAnL,QACAW,QACAkI,QACAiC,MACF,aACUY,IAAsB,EAAArkD,EAAA,GAAa,IAC3Cq3C,QACA4M,QACAtkB,QACAke,MACF,cACUyG,IAAa,UAAmB,CAC3ChnH,KAAM,aACNoC,MAAO2kH,KACP15C,MAAO,CACL,oBAAqBxtE,IAAS,EAC9B,cAAeA,IAAS,EACxB,sBAAuBA,IAAS,EAChC,gBAAiBA,IAAS,EAC1B,iBAAkBA,IAAS,EAC3B,iBAAkBA,IAAS,EAC3B,kBAAmBA,IAAS,EAC5B,sBAAuBA,IAAS,GAElC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,QACJmsG,GACEE,GAAcv2G,IACZ,OACJ02G,EAAM,UACNoD,EAAS,SACTC,GACEE,GAAWj6G,IACT,KACJw3G,EAAI,aACJC,GACEI,GAAiB73G,IACf,YACJy2G,IACE,QAAOz2G,IACL,QACJmgH,EAAO,QACPb,EAAO,cACP3E,EAAa,iBACbC,EAAgB,gBAChB4G,GACED,GAAcvhH,EAAO,CACvBq2G,UACA6C,YAAY,QAAMl5G,EAAO,cACzB21G,YAAY,QAAM31G,EAAO,iBAErB,MACJ8vE,GACEw0C,GAAkBtkH,EAAOmgH,GACvB36G,GAAS,QAAMxF,EAAO,WACtB,cACJ+gG,GACED,GAAU9gG,EAAO8vE,EAAOtqE,EAAQ,CAClC2C,UAAW8sB,GAAQA,EAAKkrF,QACxBhgB,gBAAiBqhB,KAEb,WACJrH,GACED,GAAY,CACdxD,SACAoD,YACAC,WACAvC,UAEI,iBACJb,EAAgB,OAChBlqB,EAAM,YACNqqB,EAAW,YACXF,EAAW,YACXC,GACEL,GAAe,CACjBH,UACAK,SACAD,iBAEI,YACJgE,GACEF,GAAev6G,EAAO+gG,EAAe4V,EAAkB,CACzDxuG,UAAW8sB,IAAQ,IACdA,EAAK4K,OACL5K,EAAKkrF,UAEVxF,gBACAC,sBAEI,UACJvD,GACEC,GAAgBmD,EAAapE,EAAS5pB,GACpCyZ,GAAc,SAAS,IAAMmR,EAAU55G,MAAMyC,UAC7C,WACJ63G,EAAU,UACVxnF,EAAS,UACTynF,EAAS,gBACTC,GACEH,GAAkB,CACpBN,OACAC,eACAvR,iBAEI,eACJqS,GACED,GAAkB,CACpBxoC,MAAOunC,EACPU,aACAxnF,YACAknF,iBAEIsE,GAA8B,SAAS,IAAMjF,EAAYyB,EAAe96G,UACxE,WACJo/E,EAAU,OACVG,EAAM,UACN27B,EAAS,aACTc,EAAY,aACZC,EAAY,YACZhB,GACEU,GAAiBp5G,EAAO,CAC1B+4G,SAAUjpC,EACV+oC,YAAakD,KAET,WACJ9F,EAAU,aACVC,GACEJ,GAAgB91G,GACpBu3G,GAAW,CACTC,OACAC,eACAf,SACAL,UACA7wG,YAEF,SAAgB,CACdq+G,eAAgB,CACd/lB,YAAY,QAAM99F,EAAO,cACzBm+F,YAAY,QAAMn+F,EAAO,cACzB+hF,SAAS,QAAM/hF,EAAO,WACtB2jH,aAAa,QAAM3jH,EAAO,kBAG9B,MAAMmqF,GAAY,SAAS,KAAM,CAC/BqtB,KAAMA,EAAK/5G,MACXg6G,aAAcA,EAAah6G,MAC3Bi5G,OAAQA,EAAOj5G,MACfu6G,UAAWA,EAAUv6G,MACrB08G,aACAlC,kBACAyB,aAAcA,EAAaj8G,MAC3Bi7G,YAAaA,EAAYj7G,MACzBo/E,aACAG,SACA27B,YACAc,eACAxD,aACAC,eACAU,cACAC,cACA/mC,MAAOisC,EAA4Bt+G,MAAM8F,KAAI0xB,GAAQA,EAAK4K,MAC1DglF,cAAe9I,EAA4Bt+G,MAC3C05G,aAAcoB,EAAe96G,MAC7B0iH,QAASA,EAAQ1iH,MACjB6hH,QAASA,EAAQ7hH,UAyBnB,OAvBA,EAAAmvE,EAAA,IAAU,KACR,MAAMk4C,EAAuBlG,GAAiBzxC,YAAYntE,GACpD+kH,EAAwB7C,GAAkB/0C,YAAYntE,GACtDglH,EAAqBnB,GAAe12C,YAAYntE,GAChDilH,EAAaf,GAAO/2C,YAAYntE,GACtC,OAAO,QAAakkH,IAAQ,QAAY,CACtC,MAAS,CAAC,eAAgB,CACxB,4BAA6BlkH,EAAMk5G,WACnC,wBAAyBl5G,EAAM+hF,SAC9B/hF,EAAMy4D,OACT,MAASz4D,EAAM2E,OACdsgH,GAAa,CACd92G,IAAK,IAAM+pD,EAAM/pD,MAAMg8E,EAAU1sF,OACjCgpD,QAAS,IAAMyR,EAAMzR,QAAUyR,EAAMzR,QAAQ0jC,EAAU1sF,QAAS,QAAa,KAAW,KAAM,CAACy6D,EAAMgtD,WAAW/6B,EAAU1sF,QAASuC,EAAM0kH,oBAAqB,QAAa,QAAS,CAClL,IAAO,SACN,EAAC,QAAaxC,GAAmB6C,EAAuB7sD,KAAUA,EAAMitD,QAAQh7B,EAAU1sF,QAASuC,EAAMwkH,kBAAmB,QAAa,QAAS,KAAM,CAACtsD,EAAM,kBAAkBiyB,EAAU1sF,OAAQy6D,EAAMr0D,KAAOq0D,EAAMr0D,KAAKsmF,EAAU1sF,QAAS,QAAaomH,IAAgB,QAAYn+D,EAAOs/D,EAAoB,CACnT,MAASzM,EAAe96G,QACtBy6D,GAAQA,EAAM,iBAAiBiyB,EAAU1sF,SAAUy6D,EAAMktD,QAAQj7B,EAAU1sF,OAAQy6D,EAAMmtD,QAAQl7B,EAAU1sF,SAC/GykE,OAAQ,IAAMhK,EAAMgK,OAAShK,EAAMgK,OAAOioB,EAAU1sF,QAAUuC,EAAMykH,oBAAqB,QAAa,KAAW,KAAM,EAAC,QAAavzB,GAAU,KAAM,OAAO,QAAa0tB,GAAkBkG,EAAsB,CAC/M77F,QAASivC,EAAM,uBAEjB,IAEG,CAAC,CACV,IC/MWotD,IAA6B,EAAAhlD,EAAA,GAAa,IAClDikD,QACAnO,QACA1b,QACAuF,MACF,qBACUslB,IAAoB,UAAmB,CAClD3nH,KAAM,oBACNoC,MAAOslH,KACPr6C,MAAO,CACL,oBAAqBxtE,IAAS,EAC9B,gBAAiBA,IAAS,EAC1B,iBAAkBA,IAAS,EAC3B,iBAAkBA,IAAS,EAC3B,kBAAmBA,IAAS,GAE9B,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,QACJmsG,GACEE,GAAcv2G,IACZ,OACJ02G,EAAM,UACNoD,EAAS,SACTC,GACEE,GAAWj6G,IACT,YACJy2G,IACE,QAAOz2G,IACL,QACJmgH,EAAO,QACPb,EAAO,gBACPkC,EAAe,cACf7G,EAAa,iBACbC,GACE2G,GAAcvhH,EAAO,CACvBq2G,UACA6C,YAAY,QAAMl5G,EAAO,cACzB21G,YAAY,QAAM31G,EAAO,iBAErB,MACJ8vE,GACEw0C,GAAkBtkH,EAAOmgH,GACvB36G,GAAS,QAAMxF,EAAO,WACtB,cACJ+gG,GACED,GAAU9gG,EAAO8vE,EAAOtqE,EAAQ,CAClC2C,UAAW8sB,GAAQA,EAAKkrF,QACxBhgB,gBAAiBqhB,KAEb,WACJrH,GACED,GAAY,CACdxD,SACAoD,YACAC,cAEI,iBACJpD,EAAgB,OAChBlqB,EAAM,YACNqqB,EAAW,YACXF,EAAW,YACXC,GACEL,GAAe,CACjBH,UACAK,SACAD,iBAEI,YACJgE,GACEF,GAAev6G,EAAO+gG,EAAe4V,EAAkB,CACzDxuG,UAAW8sB,IAAQ,IACdA,EAAK4K,OACL5K,EAAKkrF,UAEVxF,gBACAC,sBAEI,UACJvD,GACEC,GAAgBmD,EAAapE,EAAS5pB,GACpCssB,GAAW,SAAS,IAAMjC,EAAYO,EAAU55G,UAChD,WACJo/E,EAAU,OACVG,EAAM,UACN27B,EAAS,aACTc,EAAY,aACZC,EAAY,YACZhB,GACEU,GAAiBp5G,EAAO,CAC1B+4G,WACAF,YAAaE,KAET,WACJ9C,EAAU,aACVC,GACEJ,GAAgB91G,IACd,aACJ+oF,EAAY,UACZgS,EAAS,WACTD,EAAU,cACV/lB,EAAa,cACb4nB,EAAa,iBACbjB,EAAgB,aAChB7+B,EAAY,gBACZu/B,GACExB,GAAW56F,EAAOq3G,GAChBpY,GAAe,SAAS,IAAMtC,EAAcl/F,MAAM8F,KAAI0xB,GAAQA,EAAK4K,QACzE03E,GAAW,CACTb,SACAc,MAAM,QAAW,GACjBC,cAAc,SAAY,GAC1BpB,UACA7wG,YAEF,SAAgB,CACdq+G,eAAgB,CACd/lB,YAAY,QAAM99F,EAAO,cACzBm+F,YAAY,QAAMn+F,EAAO,cACzB+hF,SAAS,QAAM/hF,EAAO,WACtB2jH,aAAa,QAAM3jH,EAAO,kBAG9B,MAAMmqF,GAAY,SAAS,KAAM,CAC/BusB,OAAQA,EAAOj5G,MACf08G,aACAT,aAAcA,EAAaj8G,MAC3Bi7G,YAAaA,EAAYj7G,MACzBo/E,aACAG,SACA27B,YACAc,eACAxD,aACAC,eACAU,cACAC,cACA/mC,MAAOipC,EAASt7G,MAAM8F,KAAI0xB,GAAQA,EAAK4K,MACvCglF,cAAe9L,EAASt7G,MACxB05G,aAAcE,EAAU55G,MACxB0iH,QAASA,EAAQ1iH,MACjB6hH,QAASA,EAAQ7hH,WAEnB,EAAAmvE,EAAA,IAAU,KACR,MAAMm4C,EAAwB7C,GAAkB/0C,YAAYntE,GACtDglH,EAAqBnB,GAAe12C,YAAYntE,GAChDilH,EAAaf,GAAO/2C,YAAYntE,GACtC,OAAO,QAAakkH,IAAQ,QAAY,CACtC,MAAS,CAAC,eAAgB,CACxB,wBAAyBlkH,EAAM+hF,SAC9B/hF,EAAMy4D,OACT,MAASz4D,EAAM2E,OACdsgH,GAAa,CACd92G,IAAK,IAAM+pD,EAAM/pD,MAAMg8E,EAAU1sF,OACjC0mH,QAAS,KAAM,QAAa,MAAO,CACjC,IAAOp7B,EACP,gBAAmBlsB,EACnB,YAAeu/B,EACf,MAAS,mBACT,MAAS,CACPlrF,QAAQ,QAAclR,EAAMkR,UAE7B,EAAC,QAAa,QAAS,KAAM,CAACgnD,EAAMgtD,WAAW/6B,EAAU1sF,QAASuC,EAAM0kH,oBAAqB,QAAa,QAAS,CACpH,IAAO,SACN,EAAC,QAAaxC,IAAmB,QAAY6C,EAAuB,CACrE,OAAU/kH,EAAMgkH,cACd9rD,MAAWl4D,EAAMwkH,kBAAmB,QAAa,QAAS,KAAM,EAAC,QAAa,KAAM,CACtF,IAAOzpB,EACP,MAAS,CACP7pF,QAAQ,QAAc4pF,EAAWr9F,OACjCw6E,OAAQ,IAET,EAAC,QAAa,KAAM,CACrB,QAAWkoC,EAAQ1iH,MAAMyC,OACzB,MAAS,CACPgR,OAAQ,EACR+mE,OAAQ,IAET,QAAS/f,EAAM,kBAAkBiyB,EAAU1sF,QAAQ,QAAaomH,IAAgB,QAAYn+D,EAAOs/D,EAAoB,CACxH,MAAS/lB,EAAaxhG,QACpB,IACCy6D,EACHjjC,KAAM6uF,IAAiB,QAAazpB,GAAoB,CACtD,IAAOypB,EAAcxC,aAAalrG,MAClC,YAAc,EACd,kBAAmBlF,GAAUwqF,EAAiBooB,EAAcxC,aAAalrG,MAAOlF,IAC/E,CACDu1C,QAASpzC,IACP,IAAI,QACFinF,GACEjnF,EACJ,OAAO6kD,EAAMjjC,OAAO,IACf6uF,EACHxpB,cACI,QAAa4oB,IAAe,QAAYY,EAAc9jH,MAAO,CACjE,IAAOs6F,EACP,IAAOwpB,EAAcxC,aAAalrG,MAClC,MAAS0tG,EAAcxC,aAAalrG,QAClC8hD,EAAM,MAGZA,EAAM,iBAAiBiyB,EAAU1sF,QAAQ,QAAa,KAAM,CAC9D,MAAS,CACPyT,QAAQ,QAAc6jE,EAAct3E,OACpCw6E,OAAQ,IAET,EAAC,QAAa,KAAM,CACrB,QAAWkoC,EAAQ1iH,MAAMyC,OACzB,MAAS,CACPgR,OAAQ,EACR+mE,OAAQ,IAET,cACH/V,OAAQ,IAAMhK,EAAMgK,SAASioB,EAAU1sF,QACvC,GAEN,IC3NW+nH,IAA4B,EAAAllD,EAAA,GAAa,CACpD4lC,YAAa,CACX/6E,KAAM,CAAC9Y,OAAQJ,QACf2lD,UAAU,MAET+/C,QACA4M,QACApG,MACF,oBACUsH,IAAmB,UAAmB,CACjD7nH,KAAM,mBACNoC,MAAOwlH,KACPv6C,MAAO,CACL,oBAAqBxtE,IAAS,EAC9B,cAAe+5G,IAAQ,EACvB,sBAAuBA,IAAQ,EAC/B,gBAAiBd,IAAU,EAC3B,iBAAkBviG,IAAW,EAC7B,kBAAmBA,IAAW,EAC9B,iBAAkB1W,IAAS,GAE7B,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM,QACJmsG,GACEE,GAAcv2G,IACZ,OACJ02G,EAAM,UACNoD,EAAS,SACTC,GACEE,GAAWj6G,IACT,KACJw3G,EAAI,aACJC,GACEI,GAAiB73G,IACf,YACJy2G,IACE,QAAOz2G,GACLkmG,GAAc,SAAS,IAAMjvF,SAASjX,EAAMkmG,YAAa,OACzD,QACJia,EAAO,QACPb,GACEiC,GAAcvhH,EAAO,CACvBq2G,UACA6C,YAAY,QAAMl5G,EAAO,cACzB21G,YAAY,QAAM31G,EAAO,iBAErB,MACJ8vE,GACEw0C,GAAkBtkH,EAAOmgH,IACvB,WACJhG,GACED,GAAY,CACdxD,SACAoD,YACAC,WACAvC,UAEI,OACJ/qB,EAAM,YACNmqB,EAAW,YACXC,EAAW,YACXC,GACEN,GAAe,CACjBH,UACAK,SACAD,iBAEI,UACJuB,EAAS,gBACTC,GACEH,GAAkB,CACpBN,OACAC,eACAvR,iBAEI,UACJmR,GACEC,GAAgBxnC,EAAOumC,EAAS5pB,IAC9B,WACJ5P,EAAU,OACVG,EAAM,UACN27B,EAAS,aACTc,EAAY,aACZC,EAAY,YACZhB,GACEU,GAAiBp5G,EAAO,CAC1B+4G,SAAUjpC,EACV+oC,YAAa/oC,KAET,WACJmmC,EAAU,aACVC,GACEJ,GAAgB91G,GACd0lH,GAAqB,SAAS,IAAM5O,EAAYhnC,EAAMryE,SAC5D85G,GAAW,CACTC,OACAC,eACAf,SACAL,UACA7wG,QAAQ,QAAMxF,EAAO,aAEvB,QAAQ,eAAgB,CACtBm6G,aACAzD,YAEF,SAAgB,CACdmN,eAAgB,CACd/lB,YAAY,QAAM99F,EAAO,cACzBm+F,YAAY,QAAMn+F,EAAO,cACzB+hF,SAAS,QAAM/hF,EAAO,WACtB2jH,aAAa,QAAM3jH,EAAO,kBAG9B,MAAMmqF,GAAY,SAAS,KAAM,CAC/BqtB,KAAMA,EAAK/5G,MACXg6G,aAAcA,EAAah6G,MAC3Bi5G,OAAQA,EAAOj5G,MACfu6G,UAAWA,EAAUv6G,MACrB08G,aACAlC,kBACAyB,aAAcA,EAAaj8G,MAC3Bi7G,YAAaA,EAAYj7G,MACzBo/E,aACAG,SACA27B,YACAc,eACAxD,aACAC,eACAU,cACAC,cACA/mC,MAAO41C,EAAmBjoH,MAAM8F,KAAI0xB,GAAQA,EAAK4K,MACjDglF,cAAea,EAAmBjoH,MAClC05G,aAAcE,EAAU55G,MACxB0iH,QAASA,EAAQ1iH,MACjB6hH,QAASA,EAAQ7hH,WAEnB,EAAAmvE,EAAA,IAAU,KACR,MAAMk4C,EAAuBlG,GAAiBzxC,YAAYntE,GACpD+kH,EAAwB7C,GAAkB/0C,YAAYntE,GACtDglH,EAAqBnB,GAAe12C,YAAYntE,GAChDilH,EAAaf,GAAO/2C,YAAYntE,GACtC,OAAO,QAAakkH,IAAQ,QAAY,CACtC,MAAS,CAAC,eAAgB,CACxB,wBAAyBlkH,EAAM+hF,SAC9B/hF,EAAMy4D,OACT,MAASz4D,EAAM2E,OACdsgH,GAAa,CACd92G,IAAK,IAAM+pD,EAAM/pD,MAAMg8E,EAAU1sF,OACjCgpD,QAAS,IAAMyR,EAAMzR,QAAUyR,EAAMzR,QAAQ0jC,EAAU1sF,QAAS,QAAa,KAAW,KAAM,CAACy6D,EAAMgtD,WAAW/6B,EAAU1sF,QAASuC,EAAM0kH,oBAAqB,QAAa,QAAS,CAClL,IAAO,QACP,MAAS,sBACT,KAAQ,YACP,EAAC,QAAaxC,IAAmB,QAAY6C,EAAuB,CACrE,OAAU/kH,EAAMgkH,cACd9rD,KAAUA,EAAMitD,QAAQh7B,EAAU1sF,QAASuC,EAAMwkH,kBAAmB,QAAa,QAAS,CAC5F,MAAS,sBACT,KAAQ,YACP,CAACtsD,EAAM,kBAAkBiyB,EAAU1sF,OAAQy6D,EAAMr0D,KAAOq0D,EAAMr0D,KAAKsmF,EAAU1sF,QAAS,QAAaomH,IAAgB,QAAYn+D,EAAOs/D,EAAoB,CAC3J,MAAS3N,EAAU55G,QACjBy6D,GAAQA,EAAM,iBAAiBiyB,EAAU1sF,SAAUy6D,EAAMktD,QAAQj7B,EAAU1sF,OAAQy6D,EAAMmtD,QAAQl7B,EAAU1sF,SAC/GykE,OAAQ,IAAMhK,EAAMgK,OAAShK,EAAMgK,OAAOioB,EAAU1sF,QAAUuC,EAAMykH,oBAAqB,QAAa,KAAW,KAAM,EAAC,QAAavzB,GAAU,KAAM,OAAO,QAAa0tB,GAAkBkG,EAAsB,CAC/M77F,QAASivC,EAAM,uBAEjB,GAEN,ICvLWytD,GAAU3hC,GAAuB,WAAY,MAAO,WCKpD4hC,IAA+B,EAAAtlD,EAAA,GAAa,CACvDwE,OAAQ,CACN35C,KAAM,CAAClZ,OAAQnQ,OACf2kD,aAASp9C,GAEX23B,SAAU,CACR7V,KAAM,CAAC0sC,QAAS5lD,OAAQnQ,OACxB2kD,SAAS,GAEX6hC,SAAU,CACRn9D,KAAM,MACNs7B,QAAS,SAEX8hC,SAAU,CACRp9D,KAAM,MACNs7B,QAAS,SAEXo/D,SAAU,CACR16F,KAAM,MACNs7B,QAAS,aAEXt5C,KAAM8E,OACN6zG,SAAU,CACR36F,KAAMlZ,OACNw0C,QAAS,UAEV,uBACUs/D,IAAsB,UAAmB,CACpDnoH,KAAM,sBACNoC,MAAO4lH,KACP36C,MAAO,CACL,aAAc,KAAM,EACpB,cAAe,KAAM,EACrB,aAAc,KAAM,EACpB,aAAc,KAAM,EACpB,aAAc,KAAM,GAEtB,KAAAhT,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,GACE6G,EACJ,MAAM87G,GAAe,SAAS,IACrBlkH,MAAMC,QAAQ/B,EAAMghC,UAAYhhC,EAAMghC,SAAS/zB,SAAS,UAAYjN,EAAMghC,WAE7EilF,GAAc,SAAS,IACpBnkH,MAAMC,QAAQ/B,EAAMghC,UAAYhhC,EAAMghC,SAAS/zB,SAAS,UAAYjN,EAAMghC,WAE7EklF,GAAc,SAAS,IACpBpkH,MAAMC,QAAQ/B,EAAMghC,UAAYhhC,EAAMghC,SAAS/zB,SAAS,UAAYjN,EAAMghC,WAE7EmlF,GAAc,SAAS,IACpBrkH,MAAMC,QAAQ/B,EAAMghC,UAAYhhC,EAAMghC,SAAS/zB,SAAS,UAAYjN,EAAMghC,WAEnF,SAASolF,IACP/iH,EAAK,aACP,CACA,SAASgjH,IACPhjH,EAAK,aACP,CACA,SAASijH,IACPjjH,EAAK,aACP,CACA,SAASkjH,IACPljH,EAAK,cACP,CAqCA,OApCA,EAAAupE,EAAA,IAAU,KAED,QAAa,MAAO,CACzB,MAAS,CAAC,2BACT,EAAC,QAAawM,GAAM,CACrB,MAAS,oCACT,SAAY4sC,EAAavoH,MACzB,KAAQuC,EAAMmN,KACd,QAAW,OACX,SAAW,EACX,QAAWo5G,GACV,OAAO,QAAantC,GAAM,CAC3B,IAAO,WACP,MAAS,mCACT,SAAY6sC,EAAYxoH,MACxB,QAAW,cACX,KAAQuC,EAAM6lH,SACd,QAAW,OACX,QAAWS,GACV,OAAO,QAAaX,GAAS,CAC9B,IAAO,eACN,OAAO,QAAa,MAAO,CAC5B,IAAO,gBACP,MAAS,iCACR,EAAC,QAAavsC,GAAM,CACrB,SAAY8sC,EAAYzoH,MACxB,KAAQuC,EAAMuoF,SACd,QAAW,OACX,QAAW69B,GACV,OAAO,QAAahtC,GAAM,CAC3B,SAAY+sC,EAAY1oH,MACxB,KAAQuC,EAAMsoF,SACd,QAAW,OACX,QAAW+9B,GACV,YAEE,CAAC,CACV,ICtGWG,IAA6B,EAAAlmD,EAAA,GAAa,CACrDuiB,WAAY5wE,OACZg4D,MAAOh4D,OACP2/E,OAAQ3/E,OACR4S,WAAY5S,OACZ0f,SAAS,WACR,qBACU80F,IAAoB,UAAmB,CAClD7oH,KAAM,oBACNoC,MAAOwmH,KACPv7C,MAAO,CACL34B,MAAO,KAAM,EACb,eAAgB,KAAM,GAExB,KAAA2lB,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,uBACJigE,EAAsB,sBACtBC,IACE,SAAmBpqE,EAAO,SAC9B,SAAS2xB,IACPtuB,EAAK,QACP,CACA,SAASqjH,IACPrjH,EAAK,eACP,CAyCA,OAxCA,EAAAupE,EAAA,IAAU,KACR,MAAMpB,KAAgBtT,EAAMzR,UAAWzmD,EAAM4xF,QACvCnO,KAAevrB,EAAMlwC,SAAUhoB,EAAM6iF,YAC3C,OAAO,QAAa,MAAO,CACzB,MAAS,CAAC,uBAAwB,CAChC,oCAAqC7iF,EAAM2xB,SAC1Cw4C,EAAuB1sE,OAC1B,MAAS2sE,EAAsB3sE,MAC/B,QAAWk0B,GACV,CAACumC,EAAMjvC,UAAW,QAAa,MAAO,CACvC,IAAO,UACP,MAAS,iCACR,CAACivC,EAAMjvC,YAAauiD,IAAc,QAAa,KAAiB,CACjE,IAAO,UACP,KAAQxrE,EAAM6kB,YACb,CACD4hC,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,IAAOzmD,EAAM4xF,OACb,MAAS,iCACR,CAAC15B,EAAMzR,aAAezmD,EAAM4xF,YAC7BnO,IAAa,QAAa,MAAO,CACnC,MAAS,gCACR,CAAEvrB,EAAMlwC,QAKA,QAAa2sD,GAAmB,CACzC,IAAO,kBACP,UAAa30E,EAAM6iF,WACnB,SAAY,CACVzJ,KAAM,CACJwF,KAAM5+E,EAAM6iF,WACZxJ,QAAS,UAGZ,CACD5yB,QAAS,IAAM,CAACyR,EAAMlwC,eAfJ,QAAaoxD,GAAM,CACrC,IAAO,aACP,KAAQp5E,EAAM6iF,WACd,QAAW,OACX,QAAW6jC,GACV,SAWG,IAED,CAAC,CACV,I,eCzEK,MAAMC,IAAoB,EAAArmD,EAAA,GAAa,CAC5CsmD,aAAc,CAAC9kH,MAAO5D,UACtB8iC,SAAU62B,QACVyrD,aAAc,KACdt5C,WAAYloE,MACZ+kH,MAAO,CAACx0G,OAAQJ,QAChB1G,IAAK,KACLC,IAAK,KACLs7G,mBAAoBjvD,QACpBkvD,KAAM,CAAC10G,OAAQJ,QACf+0G,SAAU,CACR77F,KAAMrpB,MACN2kD,QAAS,IAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEpCwgE,aAAc,CACZ97F,KAAMlZ,OACNw0C,QAAS,WAEXygE,eAAgB,CAAC70G,OAAQJ,SACxB,YACI,SAASk1G,GAAYnnH,GAC1B,MAAMonH,GAAU,WACV/7C,GAAQ,QAAgBrrE,EAAO,aAAc,IAAI4P,IAAK,QAAYA,KAClE0zG,GAAe,SAAS,IACxBtjH,EAAMsjH,aAAqB8D,EAAQC,KAAKrnH,EAAMsjH,cAC9Cj4C,EAAM5tE,MAAMyC,OAAS,EAAUknH,EAAQC,KAAKh8C,EAAM5tE,MAAM,IACxDuC,EAAMwL,IAAY47G,EAAQC,KAAKrnH,EAAMwL,KACrC1J,MAAMC,QAAQ/B,EAAM4mH,cAAsBQ,EAAQC,KAAKrnH,EAAM4mH,aAAa,IACvEQ,EAAQC,SAEXN,GAAO,QAAgB/mH,EAAO,YAAQqJ,GAAWuG,IACrD,MAAMnS,EAAa,MAALmS,EAAYyC,OAAOzC,GAAKw3G,EAAQE,QAAQhE,EAAa7lH,OACnE,OAAO2pH,EAAQG,YAAYH,EAAQI,QAAQJ,EAAQC,OAAQ5pH,GAAO,IACjEmS,GAAKw3G,EAAQE,QAAQ13G,KAClBi3G,GAAQ,QAAgB7mH,EAAO,aAASqJ,GAAWuG,IACvD,MAAMnS,EAAa,MAALmS,EAAYyC,OAAOzC,GAAKw3G,EAAQK,SAASnE,EAAa7lH,OAC9D4pH,EAAOD,EAAQI,QAAQJ,EAAQM,aAAaN,EAAQC,QAASD,EAAQE,QAAQP,EAAKtpH,QACxF,OAAO2pH,EAAQO,SAASN,EAAM5pH,EAAM,IACnCmS,GAAKw3G,EAAQK,SAAS73G,KACnBg4G,GAAW,SAAS,KACxB,MAAMV,EAAiB70G,OAAOrS,EAAMknH,gBAAkB,GACtD,OAAOlnH,EAAMgnH,SAASzjH,KAAIskH,IAAQA,EAAMX,GAAkB,GAAE,IAExDD,GAAe,SAAS,KAC5B,MAAMa,EAAQV,EAAQW,aAAalB,EAAMppH,MAAOuC,EAAMknH,gBAChDc,EAAOF,EAAMpjF,OAIbujF,EAAc,GACpB,GAA2B,WAAvBjoH,EAAMinH,cAA6Be,EAAK9nH,OAAS+nH,EAAa,CAChE,MAAMC,EAAUF,EAAKA,EAAK9nH,OAAS,GACnC,IAAIioH,EAAO,GACX,IAAK,IAAIN,EAAM,EAAGA,GAAOI,EAAcD,EAAK9nH,OAAQ2nH,IAClDM,EAAK3lH,KAAK4kH,EAAQgB,QAAQF,EAASL,IAC/BA,EAAM,IAAM,IACdC,EAAMtlH,KAAK2lH,GACXA,EAAO,GAGb,CACA,OAAOL,CAAK,IAEd,SAASO,EAAQL,EAAMM,GACrB,OAAON,EAAK3lH,QAAOglH,GACVO,EAASnqH,MAAMwP,SAASm6G,EAAQmB,SAASlB,GAAMmB,YACrDjlH,KAAI,CAAC8jH,EAAMjxG,KACZ,MAAMqyG,EAAUrB,EAAQsB,MAAMrB,GACxBsB,GAAcvB,EAAQwB,YAAYvB,EAAMR,EAAMppH,OAC9CorH,EAAUzB,EAAQ0B,UAAUzB,EAAMD,EAAQM,aAAab,EAAMppH,QAC7DwhB,EAAQmoG,EAAQ0B,UAAUzB,EAAMD,EAAQ2B,WAAWlC,EAAMppH,QACzDurH,EAAS5B,EAAQ0B,UAAUzB,EAAMR,EAAMppH,OAC7C,MAAO,CACL4pH,OACAoB,UACAQ,UAAW7B,EAAQ8B,OAAO7B,EAAM,gBAChCN,KAAMK,EAAQE,QAAQD,GACtBR,MAAOO,EAAQK,SAASJ,GACxBjkC,WAAYA,EAAWikC,GACvB8B,YAAa/yG,EAAQ,IAAM,EAC3BgzG,UAAWhzG,EAAQ,IAAM,EACzBizG,QAASjC,EAAQ0B,UAAUzB,EAAMiB,GACjCK,aACA3mF,SAAU2mF,IAAe3oH,EAAM8mH,mBAC/B+B,UACAhsC,WAAYxR,EAAM5tE,MAAMw7D,MAAKx7D,GAAS2pH,EAAQ0B,UAAUzB,EAAM5pH,KAC9DwhB,QACA+pG,SACAM,UAAWlC,EAAQ8B,OAAO7B,EAAM,cACjC,GAEL,CACA,MAAMkC,GAAa,SAAS,KAC1B,MAAMrB,EAAUd,EAAQoC,YAAYlG,EAAa7lH,MAAOuC,EAAMknH,gBACxDiB,EAAO,GACb,IAAK,IAAIN,EAAM,EAAGA,GAAO,EAAGA,IAC1BM,EAAK3lH,KAAK4kH,EAAQgB,QAAQF,EAASL,IAErC,MAAMS,EAAQlB,EAAQC,OACtB,OAAOgB,EAAQF,EAAMG,EAAM,IAEvBL,GAAc,SAAS,KAC3B,MAAMD,EAAOf,EAAaxpH,MAAMinC,OAC1B4jF,EAAQlB,EAAQC,OACtB,OAAOgB,EAAQL,EAAMM,EAAM,IAEvBmB,GAAc,SAAS,IACpBxC,EAAaxpH,MAAM8F,KAAI4kH,GACrBA,EAAKjoH,QAAS,SAAQknH,EAASe,EAAK,IAAM,SAGrD,SAAS/kC,EAAW3lF,GAClB,GAAIuC,EAAMghC,SAAU,OAAO,EAC3B,MAAMqmF,EAAOD,EAAQC,KAAK5pH,GAC1B,SAAIuC,EAAMwL,MAAO47G,EAAQsC,QAAQtC,EAAQC,KAAKrnH,EAAMwL,KAAM67G,SACtDrnH,EAAMuL,MAAO67G,EAAQsC,QAAQrC,EAAMD,EAAQC,KAAKrnH,EAAMuL,SACtDzJ,MAAMC,QAAQ/B,EAAM4mH,eAAiB5mH,EAAM4mH,aAAa1mH,OAAS,GAC3DF,EAAM4mH,aAAa3tD,MAAK0wD,GAAKvC,EAAQ0B,UAAU1B,EAAQC,KAAKsC,GAAItC,KAExC,oBAAvBrnH,EAAM4mH,eACP5mH,EAAM4mH,aAAaS,IAG/B,CACA,MAAO,CACL/D,eACA2E,cACAsB,aACAlB,UACAh9C,QACA47C,eACAW,WACA6B,cAEJ,CCjIO,MAAMG,IAA4B,EAAAtpD,EAAA,GAAa,CACpD2J,MAAOh4D,OACP43G,aAAchyD,QACd0kB,SAAU,CAAC1kB,QAASxlD,OAAQJ,QAC5B63G,SAAUjyD,QACVhzC,WAAY,CACVsG,KAAMlZ,OACNw0C,QAAS,qBAEX8gD,kBAAmB,CACjBp8E,KAAMlZ,OACNw0C,QAAS,gCAERkgE,MACF,oBACUoD,IAAmB,UAAmB,CACjDnsH,KAAM,mBACNoC,MAAO4pH,KACP3+C,MAAO,CACL,oBAAqBo8C,IAAQ,EAC7B,eAAgBA,IAAQ,EACxB,cAAeA,IAAQ,GAEzB,KAAApvD,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM8/G,GAAU,WACV,YACJ/B,EAAW,MACX58C,EAAK,YACLo+C,GACEtC,GAAYnnH,GACVonH,GAAU,WACVvJ,GAAa,UACboM,GAAY,UACZC,GAAY,SAAW,GACvBrlG,GAAa,SAAS,IAClBqlG,EAAUzsH,MAA2BuC,EAAMunG,kBAAzBvnG,EAAM6kB,aAEX,UAAnB7kB,EAAMu8E,UAAwBlR,EAAM5tE,MAAMyC,OAAS,IACrD29G,EAAWpgH,MAAQ4tE,EAAM5tE,MAAM,GAC3B4tE,EAAM5tE,MAAMyC,OAAS,IACvB+pH,EAAUxsH,MAAQ4tE,EAAM5tE,MAAM4tE,EAAM5tE,MAAMyC,OAAS,KAGvD,MAAMiqH,GAAQ,SAAS,KACrB,MAAM5+G,EAAM,CAAC,SAAU,UAAU0B,gBAAgBjN,EAAMu8E,UAAYlqE,OAAOrS,EAAMu8E,UAAY9a,IAC5F,OAAO4J,EAAM5tE,MAAMyC,QAAUqL,CAAG,IAMlC,SAAS6+G,EAAa3sH,GACpB,MAAM4sH,EAASjD,EAAQkD,WAAW7sH,GAOlC,GAN2B,IAAvB4tE,EAAM5tE,MAAMyC,OACd29G,EAAWpgH,WAAQ4L,EACa,IAAvBgiE,EAAM5tE,MAAMyC,SACrB29G,EAAWpgH,MAAQ4tE,EAAM5tE,MAAM,GAC/BwsH,EAAUxsH,WAAQ4L,GAEfw0G,EAAWpgH,MAGT,GAAKwsH,EAAUxsH,MAoBpBogH,EAAWpgH,MAAQA,EACnBwsH,EAAUxsH,WAAQ4L,EAClBgiE,EAAM5tE,MAAQ,CAACogH,EAAWpgH,WAtBC,CAC3B,GAAI2pH,EAAQ0B,UAAUuB,EAAQxM,EAAWpgH,OAGvC,OAFAogH,EAAWpgH,WAAQ4L,OACnBgiE,EAAM5tE,MAAQ,IAEL2pH,EAAQmD,SAASF,EAAQxM,EAAWpgH,QAC7CwsH,EAAUxsH,MAAQ2pH,EAAQoD,SAAS3M,EAAWpgH,OAC9CogH,EAAWpgH,MAAQ4sH,GAEnBJ,EAAUxsH,MAAQ2pH,EAAQoD,SAASH,GAErC,MAAMjhG,EAAOg+F,EAAQqD,QAAQR,EAAUxsH,MAAOogH,EAAWpgH,MAAO,QAC1DitH,EAAe,CAAC7M,EAAWpgH,OACjC,IAAK,IAAIwC,EAAI,EAAGA,EAAImpB,EAAMnpB,IAAK,CAC7B,MAAM0qH,EAAWvD,EAAQgB,QAAQvK,EAAWpgH,MAAOwC,GACnDyqH,EAAaloH,KAAKmoH,EACpB,CACAD,EAAaloH,KAAKynH,EAAUxsH,OAC5B4tE,EAAM5tE,MAAQitH,CAChB,MArBE7M,EAAWpgH,MAAQ4sH,EACnBh/C,EAAM5tE,MAAQ,CAACogH,EAAWpgH,MAyB9B,CACA,SAASmtH,EAAgBntH,GACvB,MAAM2Y,EAAQi1D,EAAM5tE,MAAMguC,WAAUqzD,GAAasoB,EAAQ0B,UAAUhqB,EAAWrhG,KAC9E,IAAe,IAAX2Y,EACFi1D,EAAM5tE,MAAQ,IAAI4tE,EAAM5tE,MAAOA,OAC1B,CACL,MAAMA,EAAQ,IAAI4tE,EAAM5tE,OACxBA,EAAM0F,OAAOiT,EAAO,GACpBi1D,EAAM5tE,MAAQA,CAChB,CACF,CACA,SAASk0B,EAAQl0B,GACQ,UAAnBuC,EAAMu8E,SACR6tC,EAAa3sH,GACJuC,EAAMu8E,SACfquC,EAAgBntH,GAEhB4tE,EAAM5tE,MAAQ,CAACA,EAEnB,CACA,OA3DA,QAAMwqH,GAAa,CAACvhG,EAAK4hD,KAClBA,IACL4hD,EAAUzsH,MAAQ2pH,EAAQmD,SAAS7jG,EAAI,GAAG2gG,KAAM/+C,EAAO,GAAG++C,MAAK,IAyD1D,KAAM,QAAa,MAAO,CAC/B,MAAS,uBACR,CAACrnH,EAAM8pH,WAAY,QAAa,MAAO,CACxC,IAAO,QACP,MAAS,8BACR,EAAE9pH,EAAM6pH,eAAgB,QAAa,MAAO,CAC7C,IAAO,iBACP,MAAS,4BACR,EAAC,QAAiB,OAAWJ,EAAYhsH,MAAM8F,KAAI4kH,IAAQ,QAAa,MAAO,CAChF,MAAS,CAAC,2BAA4B,uCACrC,CAACA,SAAW,QAAa,KAAiB,CAC3C,KAAQtjG,EAAWpnB,OAClB,CACDgpD,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,IAAOujE,EACP,IAAO/B,EAAYxqH,MAAM,GAAG4pH,MAAMtpH,WAClC,MAAS,6BACR,EAAEiC,EAAM6pH,cAAgBzC,EAAQyD,YAAY7qH,EAAMknH,gBAAgB3jH,KAAIunH,IAAW,QAAa,MAAO,CACtG,MAAS,CAAC,2BAA4B,iCACrC,CAACA,MAAY7C,EAAYxqH,MAAM8F,KAAI,CAAC0xB,EAAMh1B,KAC3C,MAAMkqF,EAAY,CAChBnqF,MAAO,CACL2xB,QAAS,IAAMA,EAAQsD,EAAKoyF,OAE9BpyF,OACAh1B,KAKF,OAHIkqH,EAAM1sH,QAAUw3B,EAAK4nD,aACvB5nD,EAAKmuD,YAAa,IAEb,QAAa,MAAO,CACzB,MAAS,CAAC,2BAA4B,CACpC,qCAAsCnuD,EAAK0zF,WAC3C,0CAA2C1zF,EAAK+M,SAChD,qCAAsC/M,EAAK4nD,WAC3C,qCAAsC5nD,EAAKm0F,UAC3C,uCAAwCn0F,EAAKk0F,cAE/C,cAAgBl0F,EAAKmuD,gBAA4B/5E,EAAf4rB,EAAKwzF,SACtC,EAAEzoH,EAAM8mH,qBAAuB7xF,EAAK0zF,cAAe,QAAah0C,GAAmB,CACpF,SAAY,CACVyE,KAAM,CACJ3gB,MAAO,+BACPwR,OAAQh1C,EAAK4nD,aAAc5nD,EAAKo0F,SAAap0F,EAAKmuD,gBAA2B/5E,EAAdrJ,EAAMiqE,MACrEjpC,SAAU/L,EAAKmuD,WACfxE,MAAM,EACNqE,QAAQ,EACR91E,KAAM8nB,EAAKq0F,UACXjwC,QAASpkD,EAAKmuD,WAAanuD,EAAKo0F,QAAU,WAAa,OAASp0F,EAAKo0F,UAAYp0F,EAAK4nD,WAAa,WAAa,OAChHlrD,QAAS,IAAMA,EAAQsD,EAAKoyF,SAG/B,CACD5gE,QAAS,IAAM,CAACyR,EAAM2vD,MAAM19B,KAAc,QAAa/Q,GAAM+Q,EAAUnqF,MAAO,UAC5E,UAGV,ICzKW+qH,IAA6B,EAAAzqD,EAAA,GAAa,CACrD2J,MAAOh4D,OACPf,OAAQ,CAACe,OAAQI,QACjB7G,IAAK,KACLD,IAAK,KACLy+D,WAAY33D,OACZ00G,KAAM10G,QACL,qBACU24G,IAAoB,UAAmB,CAClDptH,KAAM,oBACNoC,MAAO+qH,KACP9/C,MAAO,CACL,oBAAqBo8C,IAAQ,GAE/B,KAAApvD,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAMk9G,GAAU,WACV/7C,GAAQ,QAAgBrrE,EAAO,cAC/BirH,GAAS,SAAS,KACtB,IAAI5D,EAAOD,EAAQG,YAAYH,EAAQC,QAIvC,OAHIrnH,EAAM+mH,OACRM,EAAOD,EAAQI,QAAQH,EAAMrnH,EAAM+mH,QAE9B,QAAY,IAAIxjH,KAAItD,IACzB,MAAMkN,EAAOi6G,EAAQ8B,OAAO7B,EAAM,cAC5BjkC,KAAgBpjF,EAAMwL,KAAO47G,EAAQsC,QAAQtC,EAAQM,aAAaN,EAAQC,KAAKrnH,EAAMwL,MAAO67G,IAASrnH,EAAMuL,KAAO67G,EAAQsC,QAAQrC,EAAMD,EAAQM,aAAaN,EAAQC,KAAKrnH,EAAMuL,QAEtL,OADA87G,EAAOD,EAAQ8D,aAAa7D,GACrB,CACLjkC,aACAj2E,OACA1P,MAAOwC,EACR,GACD,IAqCJ,OAnCA,SAAY,KACVorE,EAAM5tE,MAAQ4tE,EAAM5tE,OAAS2pH,EAAQK,SAASL,EAAQC,OAAO,KAE/D,EAAAz6C,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,uBACT,MAAS,CACP17D,QAAQ,QAAclR,EAAMkR,UAE7B,EAAC,QAAa,MAAO,CACtB,MAAS,iCACR,CAAC+5G,EAAOxtH,MAAM8F,KAAI,CAACsjH,EAAO5mH,KAC3B,MAAMkrH,EAAW,CACfrmD,OAAQuG,EAAM5tE,QAAUwC,EACxBgqE,MAAOoB,EAAM5tE,QAAUwC,EAAID,EAAMiqE,WAAQ5gE,EACzC23B,SAAU6lF,EAAMzjC,WAChB/N,SAAS,EACTloE,KAAM05G,EAAM15G,KACZksE,QAAShO,EAAM5tE,QAAUopH,EAAMppH,MAAQ,OAAS,OAChDk0B,QAAS,IAAMA,EAAQ1xB,IAEzB,SAAS0xB,EAAQ1xB,GACXorE,EAAM5tE,QAAUwC,EAIpBorE,EAAM5tE,MAAQwC,EAHZoD,EAAK,oBAAqBgoE,EAAM5tE,MAIpC,CACA,OAAOy6D,EAAM2uD,QAAQ,CACnBA,QACA5mH,IACAD,MAAOmrH,MACH,QAAa/xC,IAAM,QAAY,CACnC,IAAO,SACN+xC,GAAW,KAAK,UAEd,CAAC,CACV,ICxEWC,IAA4B,EAAA9qD,EAAA,GAAa,CACpD2J,MAAOh4D,OACPf,OAAQ,CAACe,OAAQI,QACjB7G,IAAK,KACLD,IAAK,KACLy+D,WAAY33D,QACX,oBACUg5G,IAAmB,UAAmB,CACjDztH,KAAM,mBACNoC,MAAOorH,KACPngD,MAAO,CACL,oBAAqB87C,IAAQ,GAE/B,KAAA9uD,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAMk9G,GAAU,WACV/7C,GAAQ,QAAgBrrE,EAAO,cAC/BsrH,GAAQ,SAAS,KACrB,MAAMvE,EAAOK,EAAQE,QAAQF,EAAQC,QACrC,IAAI77G,EAAMu7G,EAAO,IACbx7G,EAAMw7G,EAAO,GACb/mH,EAAMwL,MACRA,EAAM47G,EAAQE,QAAQF,EAAQC,KAAKrnH,EAAMwL,OAEvCxL,EAAMuL,MACRA,EAAM67G,EAAQE,QAAQF,EAAQC,KAAKrnH,EAAMuL,OAE3C,IAAI87G,EAAOD,EAAQG,YAAYH,EAAQC,QAEvC,OADAA,EAAOD,EAAQI,QAAQH,EAAM77G,IACtB,QAAYD,EAAMC,EAAM,EAAGA,GAAKjI,KAAItD,IACzC,MAAMkN,EAAOi6G,EAAQ8B,OAAO7B,EAAM,QAElC,OADAA,EAAOD,EAAQI,QAAQH,EAAMD,EAAQE,QAAQD,GAAQ,GAC9C,CACLl6G,OACA1P,MAAOwC,EACR,GACD,KAEJ,SAAY,KACVorE,EAAM5tE,MAAQ4tE,EAAM5tE,OAAS2pH,EAAQE,QAAQF,EAAQC,OAAO,IAE9D,MAAMkE,GAAU,UAsChB,OArCA,SAAU1mD,gBACF,UACN0mD,EAAQ7jH,IAAI8jH,eAAe,CACzBnnD,MAAO,UACP,KAEJ,EAAAuI,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,sBACT,MAAS,CACP17D,QAAQ,QAAclR,EAAMkR,UAE7B,EAAC,QAAa,MAAO,CACtB,MAAS,gCACR,CAACo6G,EAAM7tH,MAAM8F,KAAI,CAACwjH,EAAM9mH,KACzB,MAAMkrH,EAAW,CACfxwD,IAAK0Q,EAAM5tE,QAAUspH,EAAKtpH,MAAQ8tH,OAAUliH,EAC5Cy7D,OAAQuG,EAAM5tE,QAAUspH,EAAKtpH,MAC7BwsE,MAAOoB,EAAM5tE,QAAUspH,EAAKtpH,MAAQuC,EAAMiqE,WAAQ5gE,EAClDgsE,SAAS,EACTloE,KAAM45G,EAAK55G,KACXksE,QAAShO,EAAM5tE,QAAUspH,EAAKtpH,MAAQ,OAAS,OAC/Ck0B,QAAS,KACH05C,EAAM5tE,QAAUspH,EAAKtpH,MAIzB4tE,EAAM5tE,MAAQspH,EAAKtpH,MAHjB4F,EAAK,oBAAqBgoE,EAAM5tE,MAGV,GAG5B,OAAOy6D,EAAM6uD,OAAO,CAClBA,OACA9mH,IACAD,MAAOmrH,MACH,QAAa/xC,IAAM,QAAY,CACnC,IAAO,SACN+xC,GAAW,KAAK,UAEd,CAAC,CACV,IC5FWM,GAAeznC,GAAuB,kBCStC0nC,IAAmB,EAAAprD,EAAA,GAAa,CAC3Cqf,QAAS1tE,OACT05G,UAAW9zD,QACXkhB,MAAO9mE,OACP25G,WAAY/zD,WACTi8C,MACF,WACU+X,IAAU,UAAmB,CACxCjuH,KAAM,UACNoC,MAAO0rH,KACP,KAAAzzD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,uBACJigE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,UAsCpC,OArCA,EAAA4sE,EAAA,IAAU,KACR,MAAM8nC,EAAaX,GAAO5mC,YAAYntE,GAChCs5E,KAAct5E,EAAM+4E,QAAS7gB,EAAM6gB,OACzC,OAAO,QAAag7B,IAAQ,QAAYW,EAAY,CAClD,MAAS10G,EAAM2/E,QACf,MAAS,CAAC,WAAY,CACpB,sBAAuB3/E,EAAM2rH,UAC7B,2BAA4BzzD,EAAMorC,SACjCtjG,EAAMy4D,OACT,MAASz4D,EAAM2E,QACb,CACF8hD,QAAS,IAAM,EAAEzmD,EAAM4rH,aAAc,QAAa,MAAO,CACvD,IAAO,SACP,MAAS,CAACzhD,EAAuB1sE,OACjC,MAAS,CAAC2sE,EAAsB3sE,QAC/B,CAAC67E,IAAY,QAAamyC,GAAc,CACzC,IAAO,gBACN,CACDhlE,QAAS,IAAM,CAACyR,EAAM6gB,WAAa/4E,EAAM+4E,SACvC7gB,EAAM05B,SAAU,QAAa,MAAO,CACtC,MAAS,oBACR,CAAC15B,EAAM05B,cAAc,QAAa,MAAO,CAC1C,MAAS,kBACR,CAAC15B,EAAMzR,cAAeyR,EAAMorC,UAAW,QAAa3uB,GAAmB,CACxE,SAAY,CACVyE,KAAM,CACJ2J,MAAM,EACN1J,QAAS,UAGZ,CACD5yB,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,qBACR,CAACyR,EAAMorC,iBAEZ,IAEG,CAAC,CACV,IChDWwoB,IAAuB,EAAAxrD,EAAA,GAAa,CAsB/CsxB,OAAQ,CACNzmE,KAAMlZ,OACNw0C,QAAS,iCAERm/D,QACAgE,GAA0B,CAC3B3C,aAAc,eAEb,QAAK8D,KAA8B,CAAC,mBACpC,QAAKK,KAA6B,CAAC,kBACnCM,GAAiB,CAClB3yC,MAAO,8BAET/O,WAAY,MACX,eACU+hD,IAAc,UAAmB,CAC5CnuH,KAAM,cACNoC,MAAO8rH,KACP7gD,MAAO,CACL,oBAAqBo8C,IAAQ,EAC7B,eAAgBA,IAAQ,EACxB,cAAeA,IAAQ,EAEvB,kBAAmBA,IAAQ,GAE7B,KAAApvD,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAMk9G,GAAU,YACV,EACJtkH,IACE,UACEuoE,GAAQ,QAAgBrrE,EAAO,kBAAcqJ,GAAWuG,IAAK,QAAYA,KAAIA,GAAK5P,EAAMu8E,SAAW3sE,EAAIA,EAAE,KACzGk2G,GAAW,QAAgB9lH,EAAO,YAElC+jB,GAAW,SAAS,KACxB,MAAMtmB,EAAQ2pH,EAAQC,KAAKh8C,EAAM5tE,QAAQ,IACzC,OAAOA,GAAS2pH,EAAQpwB,QAAQv5F,GAASA,EAAQ2pH,EAAQC,MAAM,IAE3DR,GAAQ,QAAIx0G,OAAOrS,EAAM6mH,OAASO,EAAQK,SAASL,EAAQM,aAAa3jG,EAAStmB,UACjFspH,GAAO,QAAI10G,OAAOrS,EAAM+mH,MAAQK,EAAQE,QAAQF,EAAQG,YAAYH,EAAQO,SAAS5jG,EAAStmB,MAAOopH,EAAMppH,WAC3GuuH,GAAc,SAAW,GACzBp6B,GAAS,SAAS,IAClB5xF,EAAMu8E,UAAYlR,EAAM5tE,MAAMyC,OAAS,EAClC4C,EAAE,oCAAqCuoE,EAAM5tE,MAAMyC,QAErDmrE,EAAM5tE,MAAM,IAAM2pH,EAAQpwB,QAAQ3rB,EAAM5tE,MAAM,IAAM2pH,EAAQ8B,OAAO9B,EAAQC,KAAKh8C,EAAM5tE,MAAM,IAAK,yBAA2BqF,EAAE9C,EAAM4xF,UAEvIzkF,GAAO,SAAS,KACpB,IAAIk6G,EAAOD,EAAQC,OAInB,OAHAA,EAAOD,EAAQ6E,QAAQ5E,EAAM,GAC7BA,EAAOD,EAAQO,SAASN,EAAMR,EAAMppH,OACpC4pH,EAAOD,EAAQI,QAAQH,EAAMN,EAAKtpH,OAC3B2pH,EAAQ8B,OAAO7B,EAAM,eAAe,IAGvC6E,GAAmB,SAAS,IAAM,qBAAqBF,EAAYvuH,MAAQ,WAAa,kBACxF0uH,GAAU,SAAS,KACvB,MAAM9E,EAAOD,EAAQC,KAAKrnH,EAAMwL,KAChC,OAAOxL,EAAMwL,KAAO47G,EAAQpwB,QAAQqwB,GAAQA,EAAO,IAAI,IAEnD+E,GAAU,SAAS,KACvB,MAAM/E,EAAOD,EAAQC,KAAKrnH,EAAMuL,KAChC,OAAOvL,EAAMuL,KAAO67G,EAAQpwB,QAAQqwB,GAAQA,EAAO,IAAI,IAEnDrmF,GAAW,SAAS,KACxB,GAAIhhC,EAAMghC,SAAU,OAAO,EAC3B,MAAMqrF,EAAU,GAChB,GAAuB,UAAnBvG,EAASroH,MACX4uH,EAAQ7pH,KAAS,OAAQ,YACpB,CACL,IAAI8pH,EAAQlF,EAAQC,OAGpB,GAFAiF,EAAQlF,EAAQI,QAAQ8E,EAAOvF,EAAKtpH,OACpC6uH,EAAQlF,EAAQO,SAAS2E,EAAOzF,EAAMppH,OAClC0uH,EAAQ1uH,MAAO,CACjB,MAAM4pH,EAAOD,EAAQgB,QAAQhB,EAAQM,aAAa4E,IAAS,GAC3DlF,EAAQsC,QAAQyC,EAAQ1uH,MAAO4pH,IAASgF,EAAQ7pH,KAAK,OACvD,CACA,GAAI4pH,EAAQ3uH,MAAO,CACjB,MAAM4pH,EAAOD,EAAQgB,QAAQhB,EAAQ2B,WAAWuD,GAAQ,GACxDlF,EAAQsC,QAAQrC,EAAM+E,EAAQ3uH,QAAU4uH,EAAQ7pH,KAAK,OACvD,CACF,CACA,OAAO6pH,CAAO,IAOhB,SAAShG,IACHQ,EAAMppH,MAAQ,GAChBopH,EAAMppH,SAENspH,EAAKtpH,QACLopH,EAAMppH,MAAQ,EACd8uH,EAAaxF,EAAKtpH,QAEpB+uH,EAAc3F,EAAMppH,MACtB,CACA,SAAS2oH,IACHS,EAAMppH,MAAQ,EAChBopH,EAAMppH,SAENspH,EAAKtpH,QACLopH,EAAMppH,MAAQ,GACd8uH,EAAaxF,EAAKtpH,QAEpB+uH,EAAc3F,EAAMppH,MACtB,CACA,SAASgvH,IACP3G,EAASroH,MAAQ,OACnB,CACA,SAAS8oH,IACPT,EAASroH,MAA2B,WAAnBqoH,EAASroH,MAAqB,QAAU,QAC3D,CACA,SAAS6oH,IACPR,EAASroH,MAA2B,SAAnBqoH,EAASroH,MAAmB,QAAU,MACzD,CACA,SAAS+uH,EAAc/uH,GACE,WAAnBqoH,EAASroH,OAAoB8oH,IACjCljH,EAAK,eAAgB5F,EACvB,CACA,SAAS8uH,EAAa9uH,GACG,SAAnBqoH,EAASroH,OAAkB6oH,IAC/BjjH,EAAK,cAAe5F,EACtB,CAgGA,OA/FA,QAAM4tE,GAAO,CAAC3kD,EAAK4hD,KACjB,MAAMokD,GAAY,QAAYpkD,GACxBqkD,GAAW,QAAYjmG,GAC7B,IAAKimG,EAASzsH,OAAQ,OACtB,MAAM4iE,EAASskD,EAAQC,KAAKqF,EAAUA,EAAUxsH,OAAS,IACnD6iE,EAAQqkD,EAAQC,KAAKsF,EAASA,EAASzsH,OAAS,IAChD0sH,EAAWxF,EAAQK,SAAS1kD,GAC5B8pD,EAAUzF,EAAQE,QAAQvkD,GAC5B6pD,IAAa/F,EAAMppH,QACrBopH,EAAMppH,MAAQmvH,EACdJ,EAAc3F,EAAMppH,QAElBovH,IAAY9F,EAAKtpH,QACnBspH,EAAKtpH,MAAQovH,EACbN,EAAaxF,EAAKtpH,QAEpBuuH,EAAYvuH,MAAQ2pH,EAAQmD,SAASznD,EAAQC,EAAM,KAErD,EAAA6J,EAAA,IAAU,KACR,MAAMkgD,EAAcjB,GAAQ1+C,YAAYntE,GAClC+sH,EAA0BhH,GAAoB54C,YAAYntE,GAC1DgtH,EAAwBvG,GAAkBt5C,YAAYntE,GACtDitH,EAAuBlD,GAAiB58C,YAAYntE,GACpDktH,GAAwB,QAAKlC,GAAkB79C,YAAYntE,GAAQ,CAAC,eACpEmtH,GAAuB,QAAK9B,GAAiBl+C,YAAYntE,GAAQ,CAAC,eAClEiiH,EAAc,CAClBrwB,OAAQA,EAAOn0F,MACfonB,WAAYqnG,EAAiBzuH,OAE/B,OAAO,QAAaouH,IAAS,QAAYiB,EAAa,CACpD,MAAS,CAAC,gBAAiB,kBAAkBhH,EAASroH,QAAS,CAC7D,2BAA4BuC,EAAM8pH,UACjC9pH,EAAMy4D,OACT,MAASz4D,EAAM2E,QACb,CACFo0E,MAAO,IAAM7gB,EAAM6gB,YAAa,QAAa,MAAO,CAClD,MAAS,wBACR,CAACj2E,EAAE9C,EAAM+4E,SACZ6Y,OAAQ,IAAM15B,EAAM05B,QAAS,QAAajd,GAAmB,CAC3D,SAAY,CACV8xC,kBAAmB,IACdxE,KAGN,CACDx7D,QAAS,IAAM,CAACyR,EAAM05B,SAASqwB,OAC5B,QAAawE,IAAmB,QAAY,CAC/C,IAAO,UACNuG,EAAuB/K,EAAa,CACrC,QAA8B,UAAnB6D,EAASroH,MAAoBgvH,OAAcpjH,IACpD,IACC6uD,EACHzR,aAASp9C,IAEXo9C,QAAS,KAAM,QAAa,KAAW,KAAM,EAAC,QAAas/D,IAAqB,QAAYgH,EAAyB,CACnH,SAAY/rF,EAASvjC,MACrB,KAAQ0P,EAAK1P,MACb,eAAgB4oH,EAChB,eAAgBD,EAChB,gBAAiBG,EACjB,eAAgBD,IACd,OAAO,QAAazyC,EAAiB,CACvC,aAAe,GACd,CACDptB,QAAS,IAAM,CAAoB,WAAnBq/D,EAASroH,OAAqB,QAAautH,IAAmB,QAAY,CACxF,IAAO,sBACNkC,EAAuB,CACxB,WAAcrG,EAAMppH,MACpB,sBAAuB,CAAC2vE,GAAUy5C,EAAMppH,MAAQ2vE,EAAQo/C,GACxD,IAAOL,EAAQ1uH,MACf,IAAO2uH,EAAQ3uH,MACf,KAAQspH,EAAKtpH,QACX,MAA2B,SAAnBqoH,EAASroH,OAAmB,QAAa4tH,IAAkB,QAAY,CACjF,IAAO,qBACN8B,EAAsB,CACvB,WAAcpG,EAAKtpH,MACnB,sBAAuB,CAAC2vE,GAAU25C,EAAKtpH,MAAQ2vE,EAAQm/C,GACvD,IAAOJ,EAAQ1uH,MACf,IAAO2uH,EAAQ3uH,QACb,OAAQ,QAAassH,IAAkB,QAAY,CACrD,IAAO,qBACNkD,EAAsB,CACvB,WAAc5hD,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAASy5C,EAAMppH,MACf,iBAAkB,CAAC2vE,GAAUy5C,EAAMppH,MAAQ2vE,EAAQo/C,GACnD,KAAQzF,EAAKtpH,MACb,gBAAiB,CAAC2vE,GAAU25C,EAAKtpH,MAAQ2vE,EAAQm/C,GACjD,IAAOJ,EAAQ1uH,MACf,IAAO2uH,EAAQ3uH,QACb,WAEN6lG,QAASprC,EAAMorC,SACf,IAEG,CAAC,CACV,ICvPW8pB,IAAuB,EAAA9sD,EAAA,GAAa,CAC/C+sD,WAAYp7G,OACZ0tE,QAAS1tE,OACTg4D,MAAOh4D,OACP2sE,KAAM,MACN/0C,MAAO53B,OACPq7G,QAAS,CACPniG,KAAMlZ,OACNw0C,QAAS,UAEX8mE,SAAUt7G,OACV8mE,MAAO9mE,OACP9E,KAAM8E,OACNu7G,UAAW,CACTriG,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXrhD,KAAM6M,OACN9I,GAAI8I,WACD,aACA,aACAssE,GAAc,CACfhvE,UAAMlG,QAEL,WACF,eACUokH,IAAc,UAAmB,CAC5C7vH,KAAM,cACNoC,MAAOotH,KACPniD,MAAO,CACL,eAAgBloE,IAAK,GAEvB,KAAAk1D,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,aAC9B,gBACJ8rE,IACE,QAAa9rE,IACX,eACJ2oF,IACE,WACJ,SAAS+kC,EAAc3qH,GACrBM,EAAK,eAAgBN,EACvB,CA2EA,OA1EA,EAAA6pE,EAAA,IAAU,KACR,MAAM+gD,KAAgBz1D,EAAMorC,UAAWtjG,EAAMqtH,YACvCO,KAAiB11D,EAAMq1D,WAAYvtH,EAAMutH,UACzCj0C,KAAcphB,EAAM6gB,QAAS/4E,EAAM+4E,OACnC9H,KAAa/Y,EAAM/qD,OAAQnN,EAAMmN,MACjC0gH,KAAc31D,EAAM41D,OAAS9tH,EAAM6pC,OAAS7pC,EAAM4+E,MAClDrvE,EAAOvP,EAAMuP,OAASvP,EAAM6pC,MAAQ,IAAM,IAChD,OAAO,QAAa,MAAO,CACzB,MAAS,CAAC,gBAAiB,CACzB,CAAC,kBAAkB7pC,EAAMstH,YAAY,GACpChiD,EAAa7tE,MAAO0sE,EAAuB1sE,MAAOkrF,EAAelrF,MAAOuC,EAAMy4D,OACjF,MAAS,CAAC2R,EAAsB3sE,MAAOquE,EAAgBruE,MAAOuC,EAAM2E,QACnE,CAACkpH,IAAY,QAAa,MAAO,CAClC,IAAO,QACP,MAAS,wBACR,CAAE31D,EAAM41D,OASc,QAAan5C,GAAmB,CACvD,IAAO,iBACP,SAAY,CACVwB,KAAM,CACJ1yE,IAAKzD,EAAM6pC,MACX34B,OAAQ3B,GAEVsvE,MAAO,CACLtvE,OACAqvE,KAAM5+E,EAAM4+E,QAGf,CACDn4B,QAAS,IAAM,CAACyR,EAAM41D,YAtBL,QAAa,KAAW,KAAM,CAAC9tH,EAAM6pC,OAAQ,QAAassC,GAAM,CACjF,IAAO,QACP,IAAOn2E,EAAM6pC,MACb,OAAUt6B,GACT,MAAQvP,EAAM4+E,MAAO,QAAaC,GAAO,CAC1C,IAAO,OACP,MAAS7+E,EAAMiqE,MACf,KAAQ16D,EACR,KAAQvP,EAAM4+E,MACb,WAAQv1E,MAcLukH,IAAe,QAAa,MAAO,CACvC,IAAO,WACP,MAAS,2BACR,CAAC11D,EAAMq1D,cAAgBvtH,EAAMutH,WAAYj0C,IAAY,QAAa,MAAO,CAC1E,IAAO,QACP,MAAS,wBACR,CAACphB,EAAM6gB,WAAa/4E,EAAM+4E,QAAS9H,IAAW,QAAa,MAAO,CACnE,IAAO,OACP,MAAS,sBACT,MAAS,CACP1P,UAAU,QAAcvhE,EAAMwtH,aAE/B,CAACt1D,EAAM/qD,UAAYnN,EAAMmN,OAAQ+qD,EAAMzR,UAAW,QAAa,MAAO,CACvE,IAAO,UACP,MAAS,0BACR,CAACyR,EAAMzR,YAAaknE,IAAc,QAAa,MAAO,CACvD,IAAO,UACP,MAAS,0BACR,EAAC,QAAah5C,GAAmB,CAClC,SAAY,CACVyE,KAAM,CACJ3gB,MAAO,4BACPwR,MAAOjqE,EAAMiqE,OAAS,kBACtB98D,KAAMnN,EAAMqtH,cAGf,CACD5mE,QAAS,IAAM,CAACyR,EAAMorC,UAAU,CAC9BtjG,MAAO,CACL2xB,QAAS+7F,OAEP,QAAat0C,GAAM,CACvB,QAAWs0C,GACV,YACC,IAED,CAAC,CACV,ICjJWK,GAAwB1sH,OAAOm+D,IAAI,6BCMnCwuD,IAA+B,EAAA1tD,EAAA,GAAa,KACpD,aACA,WACF,uBACU2tD,IAAsB,UAAmB,CACpDrwH,KAAM,sBACNoC,MAAOguH,KACP,KAAA/1D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMgkH,GAAiB,QAAOH,IAC9B,IAAKG,EAAgB,MAAM,IAAIrgE,MAAM,gFACrC,MAAM,WACJ2d,EAAU,aACVC,IACE,QAAQzrE,EAAOkuH,EAAerxC,YAWlC,OAVA,EAAAjQ,EAAA,IAAU,KAAM,QAAa2H,EAAmB,CAC9C,aAAgB9I,GACf,CACDhlB,QAAS,IAAM,EAAC,SAAgB,QAAa,MAAO,CAClD,MAAS,CAAC,yBAA0BzmD,EAAMy4D,OAC1C,MAASz4D,EAAM2E,OACd,CAACuzD,EAAMzR,SAAW+kB,EAAW/tE,QAAS,QAAa,MAAO,CAC3D,MAAS,mCACR,CAACy6D,EAAMzR,gBAAiB,CAAC,CAAC,KAAQynE,EAAerxC,WAAWp/E,cAE1D,CAAC,CACV,ICxBW0wH,IAAgC,EAAA7tD,EAAA,GAAa,CACxD2J,MAAOh4D,OACPw9E,WAAY,CACVtkE,KAAM,MACNs7B,QAAS,WAEX+oC,aAAc,CACZrkE,KAAM,MACNs7B,QAAS,aAEX2nE,YAAav2D,QACbmyB,UAAWnyB,QACXoI,OAAQpI,QACRorB,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEXq8B,SAAUjrB,YACP,aACA,WACF,wBACUw2D,IAAuB,UAAmB,CACrDzwH,KAAM,uBACNktE,WAAY,CACVqb,OAAM,MAERnmF,MAAOmuH,KACP,KAAAl2D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMgkH,GAAiB,QAAOH,IAC9B,IAAKG,EAAgB,MAAM,IAAIrgE,MAAM,iFACrC,MAAM,uBACJsc,EAAsB,sBACtBC,IACE,SAAmBpqE,EAAO,UACxB,gBACJ8rE,IACE,QAAa9rE,GACXmqF,GAAY,SAAS,KAAM,CAC/BqF,aAAcxvF,EAAMwvF,aACpBxuD,SAAUktF,EAAeltF,SAASvjC,MAClCm4G,SAAUsY,EAAerxC,WAAWp/E,MACpCgyF,WAAYzvF,EAAMyvF,WAClB3M,SAAU9iF,EAAM8iF,aAEZlE,GAAO,SAAS,IAAMsvC,EAAerxC,WAAWp/E,MAAQuC,EAAMwvF,aAAexvF,EAAMyvF,aA0BzF,OAzBA,EAAA7iB,EAAA,IAAU,KAAM,SAAgB,QAAa,SAAU,CACrD,MAAS,CAAC,0BAA2B,CACnC,kCAAmCshD,EAAerxC,WAAWp/E,MAC7D,qCAAsCuC,EAAMgqF,UAC5C,kCAAmChqF,EAAMigE,QACxCkK,EAAuB1sE,MAAOuC,EAAMy4D,OACvC,MAAS,CAAC2R,EAAsB3sE,MAAOquE,EAAgBruE,MAAOuC,EAAM2E,OACpE,KAAQ,SACR,SAAYupH,EAAeltF,SAASvjC,OAAS,OAAI4L,EACjD,SAAY6kH,EAAeltF,SAASvjC,MACpC,gBAAiBywH,EAAerxC,WAAWp/E,MAC3C,QAAYuC,EAAM8iF,cAAmCz5E,EAAxB6kH,EAAejsF,QAC3C,EAAC,QAAa,OAAQ,CACvB,MAAS,oCACR,MAAOi2B,EAAMzR,UAAU0jC,EAAU1sF,QAASuC,EAAMouH,cAAe,QAAaz5C,GAAmB,CAChG,SAAY,CACVkK,MAAO,CACLD,KAAMA,EAAKnhF,SAGd,CACDgpD,QAAS,IAAM,EAAC,QAAa,OAAQ,CACnC,MAAS,iCACR,CAACyR,EAAMorC,UAAUnZ,EAAU1sF,SAAU,QAAaohF,GAAO,KAAM,aAC9D,CAAC,EAAC,QAAkB,UAAW7+E,EAAMijF,YACpC,CAAC,CACV,ICzEWqrC,IAA2B,EAAAhuD,EAAA,GAAa,CACnDyY,MAAO9mE,OACP9E,KAAM8E,OACN0tE,QAAS1tE,UACNmmE,QACAsE,QACAtH,QACAtE,OACAq9C,QACAH,MACF,mBACUO,IAAkB,UAAmB,CAChD3wH,KAAM,kBACNoC,MAAOsuH,KACPrjD,MAAO,CACL,iBAAkBvkD,IAAO,GAE3B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMu9F,EAAY9qB,GAAa38E,EAAO+tH,KAChC,uBACJ5jD,EAAsB,sBACtBC,IACE,SAAmBpqE,EAAO,YACxB,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,GACTojF,GAAa,SAAS,IAAMqkB,GAAWzmE,SAASvjC,OAASuC,EAAMghC,WAC/DwtF,GAAkB,SAAS,IAAM/mB,EAAUt2B,MAAMrB,MAAMryE,MAAMk2D,QAAO,CAACypB,EAAKnoD,EAAM7e,KAChFqxF,EAAUt2B,MAAM+L,SAASz/E,MAAMwP,SAASgoB,EAAK51B,KAAK+9E,EAAI56E,KAAK4T,GACxDgnE,IACN,MACGqxC,GAAmB,SAAS,KAChC,MAAMr4G,EAAQqxF,EAAUt2B,MAAMrB,MAAMryE,MAAMguC,WAAUxW,GAAQA,EAAK51B,KAAOooG,EAAUpoG,KAClF,OAAQooG,EAAU5qB,WAAWp/E,OAAS+wH,EAAgB/wH,MAAMw7D,MAAKy1D,GAAiBA,EAAgBt4G,IAAU,GAAE,IAE1Gu4G,GAAkB,SAAS,KAC/B,MAAMv4G,EAAQqxF,EAAUt2B,MAAMrB,MAAMryE,MAAMguC,WAAUxW,GAAQA,EAAK51B,KAAOooG,EAAUpoG,KAClF,OAAQooG,EAAU5qB,WAAWp/E,OAAS+wH,EAAgB/wH,MAAMw7D,MAAKy1D,GAAiBA,EAAgBt4G,KAAW,GAAE,IAyCjH,OAvCA,QAAQ23G,GAAuBtmB,IAC/B,EAAA76B,EAAA,IAAU,KACR,MAAMqE,KAAa/Y,EAAM/qD,OAAQnN,EAAMmN,MACjCmsE,KAAcphB,EAAM6gB,QAAS/4E,EAAM+4E,OACnC61C,EAA2BP,GAAqBlhD,YAAYntE,GAC5D6uH,EAA0BZ,GAAoB9gD,YAAYntE,GAChE,OAAO,QAAaA,EAAMuN,IAAK,CAC7B,MAAS,CAAC,oBAAqB,CAC7B,4BAA6Bk6F,EAAU5qB,WAAWp/E,MAClD,mCAAoCgxH,EAAiBhxH,MACrD,kCAAmCkxH,EAAgBlxH,MACnD,8BAA+B2lF,EAAW3lF,OACzC+3E,EAAe/3E,MAAO0sE,EAAuB1sE,MAAOuC,EAAMy4D,OAC7D,MAAS,CAAC2R,EAAsB3sE,MAAOuC,EAAM2E,QAC5C,CACD8hD,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,CAAC,+BAAgC8xB,EAAiB96E,QAC1D,OAAO,QAAak3E,GAAmB,CACxC,SAAY,CACV05C,qBAAsB,IACjBO,GAELX,oBAAqB,IAChBY,KAGN,CACDpoE,QAAS,IAAM,CAAC6yB,IAAY,QAAa+0C,GAAsB,CAC7D,IAAO,SACN,CACD5nE,QAAS,IAAM,CAACyR,EAAM6gB,MAAQ7gB,EAAM6gB,QAAU/4E,EAAM+4E,SAClD9H,IAAW,QAAag9C,GAAqB,CAC/C,IAAO,QACN,CACDxnE,QAAS,IAAM,CAACyR,EAAM/qD,KAAO+qD,EAAM/qD,OAASnN,EAAMmN,QAChD+qD,EAAMzR,iBAEZ,IAEG,CACLghD,YAEJ,ICtFI,GAAkB,CAAC,UAAW,YAAa,QAAS,UAC7CqnB,IAA4B,EAAAxuD,EAAA,GAAa,CACpD57B,KAAMmzB,WACHykB,SACA,QAAKgyC,KAA4B,CAAC,UAAW,eAAgB,QAAS,QAAS,YAAa,aAAc,YAAa,cAAe,WAAY,SAAU,UAAW,OAAQ,eAC/K,cACA,YACAx9C,IACHuI,QAAS,CACPluD,KAAMlZ,OACNw0C,QAAS,UACT+Z,UAAW5wD,GAAK,GAAgB3C,SAAS2C,KAE1C,oBACUm/G,IAAmB,UAAmB,CACjDnxH,KAAM,mBACNoC,MAAO8uH,KACP7jD,MAAO,CACL,oBAAqBvkD,IAAO,GAE9B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,KACJtI,EAAI,KACJ4M,GACEyuE,GAASj9E,EAAO+tH,KACd,aACJziD,IACE,QAAatrE,GACXgvH,GAAe,SAAS,IAAMhvH,EAAMq5E,SAAW,+BAA+Br5E,EAAMq5E,YA6B1F,OA5BA,SAAgB,CACdk1C,gBAAiB,CACf5uC,SAAS,QAAM3/E,EAAO,WACtBwvF,cAAc,QAAMxvF,EAAO,gBAC3BiqE,OAAO,QAAMjqE,EAAO,SACpB+sE,OAAO,QAAM/sE,EAAO,SACpBq4E,WAAW,QAAMr4E,EAAO,aACxByvF,YAAY,QAAMzvF,EAAO,cACzBgqF,WAAW,QAAMhqF,EAAO,aACxBouH,aAAa,QAAMpuH,EAAO,eAC1B8iF,UAAU,QAAM9iF,EAAO,YACvBijF,QAAQ,QAAMjjF,EAAO,UACrBq1E,SAAS,QAAMr1E,EAAO,WACtBigE,QAAQ,QAAMjgE,EAAO,cAGzB,EAAA4sE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,qBAAsB,CAC9B,2BAA4BvN,EAAM0kC,KAClC,2BAA4B1kC,EAAMs1E,MACjChK,EAAa7tE,MAAOuxH,EAAavxH,MAAOuC,EAAMy4D,OACjD,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,CAACyR,EAAMzR,UAAU,CAC9Bj4C,OACA5M,cAGG,CACLA,OACA4M,OAEJ,IChEWygH,IAAgB,EAAA3uD,EAAA,GAAa,CACxCnD,IAAKtF,QACLq3D,OAAQr3D,QACR+gB,SAAU/gB,QACVoW,OAAQpW,QACR59B,OAAQ49B,QACRmS,WAAY,CACV7+C,KAAM0sC,QACNpR,SAAS,OAER,QAAKg8B,GAAc,CACpB3d,QAAQ,IACN,CAAC,gBACFiJ,OACAwS,SACA,QAAoB,CACrB17D,WAAY,oBAEb,QACUsqG,IAAO,UAAmB,CACrCvxH,KAAM,OACNoC,MAAOivH,KACPhkD,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,cAC/BkR,GAAS,QAAW,IACpBq9D,GAAmB,WACnB,UACJhB,GACED,GAAkBp6D,IACfA,EAAQhT,SACbgR,EAAOzT,MAAQyV,EAAQ,GAAGnT,OAAO+W,aAAY,IAEzCs4G,GAAc,SAAS,IAAMpvH,EAAMm9D,KAAOn9D,EAAMsqE,WAChDlqC,GAAW,SAAS,MACnBgvF,EAAY3xH,QACVuC,EAAMgF,UAAUoC,MAAM,KAAKwF,SAAW,YAEzCyiH,GAAc,SAAS,MACtBD,EAAY3xH,QACVuC,EAAMgF,UAAUoC,MAAM,KAAK,IAAM,UAE1C,SAAe,IAAMpH,EAAMm9D,MAAK,KAC9B,MAAM8Q,EAASI,EAAc,CAC3BhvE,GAAIW,EAAMpC,KACVs8C,OAAO,SAAS,IAAMjjC,SAASjX,EAAMk6C,MAAO,MAC5C9Z,WACA6vC,YAAY,SAAS,IAAMjwE,EAAMiuE,OAAS/8D,EAAOzT,MAAQ,GAAK,IAC9DyyE,aAAa,SAAS,IAAMh/D,EAAOzT,MAAQ,KAC3CqnE,QAAQ,SAAS,IAAM9kE,EAAMm9D,KAAOkO,EAAM5tE,QAC1C6sE,UAAU,QAAMtqE,EAAO,eAEzB,SAAY,KACVuuE,EAAiB9wE,MAAQwwE,EAAOM,iBAAiB9wE,KAAK,GACtD,IAEJ,MAAM6xH,GAAU,UAiChB,OAhCA,EAAA1iD,EAAA,IAAU,KACR,MAAMu+C,EAAW/xC,GAAKjM,YAAYntE,GAClC,OAAO,QAAa,MAAO,CACzB,IAAOsvH,EACP,MAAS,CAAC,QAAS,CACjB,kBAAmBtvH,EAAMsqE,SACzB,eAAgBtqE,EAAMm9D,IACtB,kBAAmBn9D,EAAM44E,SACzB,gBAAiB54E,EAAMi6B,OACvB,CAAC,UAAUmG,EAAS3iC,SAAU2xH,EAAY3xH,MAC1C,CAAC,UAAU4xH,EAAY5xH,SAAU2xH,EAAY3xH,OAC5CuC,EAAMy4D,OACT,MAAS,CAACz4D,EAAMm9D,IAAM,IACjBoR,EAAiB9wE,OAClB,CACFyT,OAAQ,UACRF,WAAO3H,GACNrJ,EAAM2E,QACR,EAAC,QAAa,MAAO,CACtB,MAAS,oBACR,EAAC,QAAa,KAAiB,CAChC,OAAU3E,EAAMkvH,OAChB,WAAclvH,EAAM6kB,YACnB,CACD4hC,QAAS,IAAM,EAAC,SAAgB,QAAa2yB,IAAM,QAAY,CAC7D,IAAO7L,GACN49C,EAAU,CACX,YAAU9hH,EACV,cAAYA,IACV6uD,GAAQ,CAAC,CAAC,KAAQl4D,EAAM8kE,gBACxB,IAED,CAAC,CACV,IC7FWyqD,IAAsB,EAAAjvD,EAAA,GAAa,CAC9Co9B,MAAO7lC,QACP+7B,QAAS/7B,QACT23D,kBAAmB,CACjBrkG,KAAMlZ,OACNw0C,QAAS,kCAEXgpE,cAAe,CACbtkG,KAAMlZ,OACNw0C,QAAS,8BAEXipE,UAAW73D,QACX0kB,SAAU1kB,QACV83D,SAAU,CACRxkG,KAAM,CAAC0sC,QAASxlD,OAAQJ,QACxBw0C,SAAS,EACT+Z,UAAW5wD,GACW,mBAANA,GAAmB,CAAC,IAAM,MAAM3C,SAASoF,OAAOzC,QAG/DsoF,GAAgB,CACjBtV,YAAa,UAEf5Y,WAAY,CACV7+C,KAAM,CAACrpB,MAAOrD,QACdgoD,QAASzmD,GAASA,EAAMu8E,SAAW,GAAK,KACxC/b,UAAW95C,IACF,QAAYA,GAAKijC,OAAM/5C,GAAU,MAALA,GAA0B,kBAANA,QAGxD4kF,GAAgB,CACjBE,WAAW,KAEZ,cACUk7B,IAAa,UAAmB,CAC3ChyH,KAAM,aACN07D,cAAc,EACdt5D,MAAOuvH,KACPtkD,MAAO,CACL,gBAAiBloE,IAAK,EACtB,oBAAqBA,IAAK,EAC1B,iBAAkBsxF,IAAW,EAC7B,oBAAqBw7B,IAAS,GAEhC,KAAA53D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,EACJpH,IACE,UACEuoE,GAAQ,QAAgBrrE,EAAO,aAAcA,EAAMgqE,YAAYtjD,IAAO,QAAYA,KAAMA,IAAQ1mB,EAAMu8E,UAAYz6E,MAAMC,QAAQ2kB,GAAOA,EAAI,GAAKA,KAChJ,UACJigD,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACPsqB,GAAO,SAAS,IAAgC,mBAAnBtqB,EAAM2vH,SAAyB3vH,EAAM2vH,cAAWtmH,IAC7EymH,GAAa,SAAS,KAAOzkD,EAAM5tE,OAAS,IAAIk2D,QAAO,CAACo8D,EAAO18G,KACnE,IAAI,KACF9D,EAAO,GACL8D,EACJ,OAAO08G,EAAQxgH,CAAI,GAClB,KACGygH,GAAqB,SAAS,KAAM,QAAsBF,EAAWryH,MAAO6sB,EAAK7sB,SACjFwyH,GAAY,SAAS,KAAO5kD,EAAM5tE,OAAS,IAAI8F,KAAI2sH,IACvD,MAAM,KACJtyH,EAAO,GAAE,KACT2R,EAAO,GACL2gH,EACJ,OAAQlwH,EAAM2vH,SAAkB,GAAG/xH,OAAS,QAAsB2R,EAAM+a,EAAK7sB,UAApDG,CAA6D,MAElFk7F,GAAe,SAAS,KAC5B,MAAMq3B,EAAY9kD,EAAM5tE,OAAOyC,QAAU,EACzC,OAAIF,EAAM2vH,SAAiB7sH,EAAE9C,EAAMwvH,kBAAmBW,EAAWH,EAAmBvyH,OAAmBqF,EAAE9C,EAAMyvH,cAAeU,EAAU,IAEpI72B,GAAY,UACZC,GAAY,UACZC,GAAW,UACXvmD,GAAW,SAAS,IAAM0zB,EAAUlpE,OAASuC,EAAM8kE,SACnDywB,GAAsB,SAAS,IAAM,CAAC,QAAS,cAActoF,SAASjN,EAAMq5E,WAClF,SAASlS,IACHqyB,EAAS/7F,QAAUU,SAAS6F,eAC9Bw1F,EAAS/7F,OAAO8uE,QAEb5F,EAAUlpE,OAAO8uE,GACxB,CACA,SAAS6jD,EAAertH,GACtBy2F,EAAS/7F,OAAO60C,OAClB,CACA,SAASmnD,EAAmB12F,GAC1BM,EAAK,oBAAqBN,EAC5B,CACA,SAAS22F,EAAe32F,GACtBy2F,EAAS/7F,OAAO60C,QAChBjvC,EAAK,gBAAiBN,EACxB,CACA,SAAS42F,EAAQ52F,GACfA,EAAE0rB,kBACF04C,KACA,SAAS,KACPkE,EAAM5tE,MAAQ,IACd,QAAUuC,EAAM,iBAAkB+C,EAAE,GAExC,CAwGA,OAvGA,QAAMsoE,GAAOppB,IACX,MAAMouE,GAAiBvuH,MAAMC,QAAQkgD,KAAcA,EAAS/hD,OACxDmwH,GAAiB72B,EAAS/7F,QAC5B+7F,EAAS/7F,MAAMA,MAAQ,GACzB,KAEF,EAAAmvE,EAAA,IAAU,KACR,MAAMmtB,KAAgB7hC,EAAM07B,UAAW5zF,EAAM4zF,SACvC6E,KAAgBsB,IAAc7hC,EAAMwgC,UACnChS,EAAWC,IAAc,QAAiBjhC,IAE/CskB,WAAYxuD,KACTw+E,GACDzB,GAAOprB,YAAYntE,GACjBi6F,EAAanE,GAAiB91F,GACpC,OAAO,QAAau4F,IAAQ,QAAY,CACtC,IAAOe,EACP,WAAcjuB,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAAS,CAAC,eAAgB,CACxB,wBAAyBptE,EAAM09F,MAC/B,qBAAsB19F,EAAM0vH,UAC5B,4BAA6Bn6B,EAAoB93F,OAChDuC,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,kBAAmByrH,GAClB1pC,EAAWsT,EAAY,CACxB,aAAgBzE,EAAoB93F,MACpC,QAAWkpE,EAAUlpE,QACnB,IACCy6D,EACHzR,QAAS2lC,IACP,IAAI,GACF/sF,EAAE,WACF+jF,EAAU,QACVwU,EAAO,WACPrB,EAAU,QACVS,GACE5K,EACJ,OAAO,QAAa6I,IAAQ,QAAY,CACtC,IAAOsE,EACP,eAAgBv5F,EAAM4iF,YACtB,YAAe6W,EACf,QAAWC,EACX,gBAAiBC,EACjB,uBAAwB35F,EAAM,wBAC9B,sBAAuBA,EAAM,wBAC5Bi6F,EAAY,CACb,GAAM56F,EAAG5B,MACT,OAAUw1C,EAASx1C,OAASm6F,EAAQn6F,MACpC,MAASm6F,EAAQn6F,OAASuC,EAAM60F,MAChC,SAAYzR,EAAW3lF,MACvB,QAAWkpE,EAAUlpE,MACrB,OAA2B,IAAlBu5F,EAAQv5F,QACf,IACCy6D,EACHzR,QAAS6lC,IACP,IACEtsF,OACEy4D,MAAOyhC,KACJ/P,IAEHmC,EACJ,OAAO,QAAa,KAAW,KAAM,EAAC,QAAa,SAAS,QAAY,CACtE,IAAOkN,EACP,KAAQ,OACR,SAAYjD,EAAW94F,MACvB,SAAY2lF,EAAW3lF,MACvB,SAAYuC,EAAMu8E,SAClB,KAAQv8E,EAAMpC,KACd,QAAWmF,IACTA,EAAE0rB,kBACE8nE,EAAW94F,OAAOsF,EAAEioB,iBACxBm8C,GAAS,EAEX,SAAYpkE,IACV,IAAKA,EAAEhD,OAAQ,OACf,MAAMA,EAASgD,EAAEhD,OACjBsrE,EAAM5tE,MAAQ,IAAKsC,EAAO8vH,OAAS,GAAI,EAEzC,QAAW1oD,EACX,OAAUljE,GACTkmF,EAAWxD,GAAa,OAAO,QAAa,MAAO,CACpD,MAASuT,GACR,GAAG7uB,EAAM5tE,OAAOyC,SAAWF,EAAM0vH,YAAcx3D,EAAM4mC,UAAY5mC,EAAM4mC,UAAU,CAClFmxB,UAAWA,EAAUxyH,MACrBqyH,WAAYA,EAAWryH,MACvBuyH,mBAAoBA,EAAmBvyH,QACpCuC,EAAM09F,MAAQuyB,EAAUxyH,MAAM8F,KAAI4J,IAAQ,QAAay9E,GAAO,CACjE,IAAOz9E,EACP,KAAQ,QACR,KAAQA,GACP,QAAS8iH,EAAUxyH,MAAM8K,KAAK,UAAU,GAE7C,EAEJmwF,QAASD,EAAatO,IAAa,QAAa,KAAW,KAAM,CAACjyB,EAAMwgC,UAAUvO,GAAY4P,IAAc,QAAa,KAAW,KAAM,EAAC,QAAa,OAAQ,KAAM,OAAO,QAAarG,GAAU,CAClM,SAAYroB,EAAM5tE,OAAOyC,OACzB,MAAS44F,EAAar7F,MACtB,SAAYuC,EAAMghC,UACjBk3B,EAAM07B,kBAAevqF,GACxB,KAEG,EAAAgkE,GAAA,GAAY,CAAC,EAAGisB,EAAWC,EAAWC,EAC/C,IClNW82B,IAAmB,EAAAhwD,EAAA,GAAa,CAC3CnD,IAAKtF,QACLoS,MAAOh4D,OACPf,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,WAERuxB,SACA,YACAI,QACArK,OACAqH,QACAtE,EAAa,CACdvjE,IAAK,eAEJ,WACF,WACUgjH,IAAU,UAAmB,CACxC3yH,KAAM,UACNoC,MAAOswH,KACP,KAAAr4D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMqkE,GAAmB,WACnB,aACJjD,IACE,QAAatrE,IACX,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,cACJm4E,GACED,GAAUl4E,IACR,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,GACT6f,GAAa,QAAW,KACxB,UACJ0tD,GACED,GAAkBp6D,IACfA,EAAQhT,SACb2f,EAAWpiB,MAAQyV,EAAQ,GAAGnT,OAAO+W,aAAY,IAE7C5F,GAAS,SAAS,IAAuB,SAAjBlR,EAAMkR,OAAoB2O,EAAWpiB,MAAQwZ,SAASjX,EAAMkR,OAAQ,MAsBlG,OArBA,SAAe,IAAMlR,EAAMm9D,MAAK,KAC9B,MAAM8Q,EAASI,EAAc,CAC3BhvE,GAAIW,EAAMpC,KACVs8C,OAAO,SAAS,IAAMjjC,SAASjX,EAAMk6C,MAAO,MAC5C9Z,UAAU,SAAS,IAAM,WACzB6vC,WAAY/+D,EACZg/D,aAAa,SAAS,IAAuB,SAAjBlwE,EAAMkR,YAAoB7H,EAAY6H,EAAOzT,QACzEqnE,QAAQ,SAAS,IAAM9kE,EAAMm9D,MAC7BmN,UAAU,QAAMtqE,EAAO,eAEzB,SAAY,KACVuuE,EAAiB9wE,MAAQwwE,EAAOM,iBAAiB9wE,KAAK,GACtD,KAEJ,EAAAmvE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,IAAOggE,EACP,MAAS,CAAC,WAAYjC,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO06E,EAAc16E,MAAO86E,EAAiB96E,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACjJ,MAAS,CAAC2R,EAAsB3sE,MAAOuC,EAAMm9D,IAAMoR,EAAiB9wE,MAAQ,CAC1EyT,QAAQ,QAAclR,EAAMkR,SAC3BlR,EAAM2E,QACRuzD,KACI,CAAC,CACV,ICjFWs4D,IAAiB,EAAAlwD,EAAA,GAAa,KACtC,YACA61B,MACF,SACUs6B,IAAQ,UAAmB,CACtC7yH,KAAM,QACNoC,MAAOwwH,KACPvlD,MAAO,CACL,oBAAqBvkD,IAAO,EAC5BgqG,OAAQ3tH,IAAK,GAEf,KAAAk1D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,KACL70D,GACE6G,EACJ,MAAMutF,EAAOnB,GAAWt2F,GAClB2wH,GAAU,UAChB,SAASC,EAAQ7tH,GACfA,EAAEioB,iBACFysE,EAAKlhD,OACP,CACA,SAASs6E,EAASC,GAChB,MAAM/tH,EAAI+tH,EACJ3yD,EAAQs5B,EAAKf,WACnB3zF,EAAE+yD,KAAOqI,EAAMrI,KAAKj0D,KAAKs8D,GACzBp7D,EAAEgzD,MAAQoI,EAAMpI,MAAMl0D,KAAKs8D,GAC3Bp7D,EAAEguH,QAAU5yD,EAAM4yD,QAAQlvH,KAAKs8D,GAC/B96D,EAAK,SAAUN,GACVA,EAAE41D,kBACLwF,EAAMrI,MAAKziD,IACT,IAAI,MACFsiD,GACEtiD,EACAsiD,GACFg7D,EAAQlzH,OAAOizH,QACjB,IAGJ3tH,EAAEioB,gBACJ,CASA,OARA,EAAA4hD,EAAA,IAAU,KAAM,QAAa,OAAQ,CACnC,IAAO+jD,EACP,MAAS,CAAC,SAAU3wH,EAAMy4D,OAC1B,MAASz4D,EAAM2E,MACf,YAAc,EACd,QAAWisH,EACX,SAAYC,GACX,CAAC34D,EAAMzR,UAAUgxC,QACb,EAAApqB,GAAA,GAAYoqB,EAAMk5B,EAC3B,IC/CWK,IAAsB,EAAA1wD,EAAA,GAAa,CAC9CovB,MAAO,CACLvkE,KAAM0sC,QACNpR,SAAS,OAER,aACA,aACAqqB,KACF,cACUmgD,IAAa,UAAmB,CAC3CrzH,KAAM,aACNoC,MAAOgxH,KACP,KAAA/4D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,WACJqhE,IACE,WACE,gBACJO,IACE,QAAa9rE,GAOjB,OANA,EAAA4sE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,cAAe,CACvB,qBAAsBvN,EAAM0vF,OAC3BnkB,EAAW9tE,MAAOuC,EAAMy4D,OAC3B,MAAS,CAACqT,EAAgBruE,MAAOuC,EAAM2E,QACtCuzD,KACI,CAAC,CACV,IC9BIg5D,GAAkB,KACf,MAAYv9D,QAAO,CAAC3zD,EAAO0mB,KAChC1mB,EAAM0mB,GAAO,CACXyE,KAAM,CAAC0sC,QAAS5lD,OAAQI,QACxBo0C,SAAS,GAEJzmD,IACN,CAAC,GAPkB,GASlBmxH,GAAc,KACX,MAAYx9D,QAAO,CAAC3zD,EAAO0mB,KAChC,MAAM0qG,EAAY,UAAW,QAAW1qG,GAKxC,OAJA1mB,EAAMoxH,GAAa,CACjBjmG,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,MAEJzmD,CAAK,GACX,CAAC,GARc,GAUdqxH,GAAa,KACV,MAAY19D,QAAO,CAAC3zD,EAAO0mB,KAChC,MAAM4qG,EAAW,SAAU,QAAW5qG,GAKtC,OAJA1mB,EAAMsxH,GAAY,CAChBnmG,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,MAEJzmD,CAAK,GACX,CAAC,GARa,GAUbuxH,GAAU,CACdC,IAAK/yH,OAAO0D,KAAK+uH,IACjBj3F,OAAQx7B,OAAO0D,KAAKgvH,IACpBj3E,MAAOz7C,OAAO0D,KAAKkvH,KAErB,SAASI,GAAgBtmG,EAAMtc,EAAM6X,GACnC,IAAI7I,EAAYsN,EAChB,GAAW,MAAPzE,IAAuB,IAARA,EAAnB,CAGA,GAAI7X,EAAM,CACR,MAAMkkB,EAAalkB,EAAKvG,QAAQ6iB,EAAM,IACtCtN,GAAa,IAAIkV,GACnB,CAOA,MANa,QAAT5H,IACFtN,EAAY,KAAOA,GAKR,QAATsN,GAA2B,KAARzE,IAAsB,IAARA,GAKrC7I,GAAa,IAAI6I,IACV7I,EAAU7L,eAJR6L,EAAU7L,aAbnB,CAkBF,CACA,MAAM0/G,GAAoB,CAAC,OAAQ,QAAS,MAAO,SAAU,WAAY,WAC5DC,IAAgB,EAAArxD,EAAA,GAAa,CACxCx6C,KAAM,CACJqF,KAAM,CAAC0sC,QAAS5lD,OAAQI,QACxBo0C,SAAS,MAERyqE,GACHj3F,OAAQ,CACN9O,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,SAER0qE,GACHj3E,MAAO,CACL/uB,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,SAER4qE,GACHO,UAAW,CACTzmG,KAAMlZ,OACNw0C,QAAS,KACT+Z,UAAWqxD,GAAOH,GAAkBzkH,SAAS4kH,QAE5C,YACA/gD,KACF,QACUghD,IAAO,UAAmB,CACrCl0H,KAAM,OACNoC,MAAO2xH,KACP,KAAA15D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMhD,GAAU,SAAS,KACvB,MAAMsG,EAAY,GAGlB,IAAI2d,EACJ,IAAKA,KAAQomG,GACXA,GAAQpmG,GAAMxnB,SAAQkL,IACpB,MAAMpR,EAAQuC,EAAM6O,GACdgP,EAAY4zG,GAAgBtmG,EAAMtc,EAAMpR,GAC1CogB,GAAWrQ,EAAUhL,KAAKqb,EAAU,IAG5C,MAAMk0G,EAAgBvkH,EAAUyrD,MAAKp7C,GAAaA,EAAUslC,WAAW,YASvE,OARA31C,EAAUhL,KAAK,CAEb,SAAUuvH,IAAkB/xH,EAAM8lB,KAClC,CAAC,SAAS9lB,EAAM8lB,QAAS9lB,EAAM8lB,KAC/B,CAAC,UAAU9lB,EAAMi6B,UAAWj6B,EAAMi6B,OAClC,CAAC,SAASj6B,EAAMk6C,SAAUl6C,EAAMk6C,MAChC,CAAC,cAAcl6C,EAAM4xH,aAAc5xH,EAAM4xH,YAEpCpkH,CAAS,IAElB,MAAO,KAAM,IAAAgrD,GAAEx4D,EAAMuN,IAAK,CACxBkrD,MAAO,CAACvxD,EAAQzJ,MAAOuC,EAAMy4D,OAC7B9zD,MAAO3E,EAAM2E,OACZuzD,EAAMzR,YACX,ICpHIurE,GAAY,CAAC,QAAS,MAAO,UAC7BC,GAAQ,CAAC,gBAAiB,eAAgB,gBAChD,SAASC,GAAan9F,EAAQ91B,GAC5B,OAAO,MAAY00D,QAAO,CAAC3zD,EAAO0mB,KAChC,MAAMyrG,EAAYp9F,GAAS,QAAWrO,GAEtC,OADA1mB,EAAMmyH,GAAalzH,IACZe,CAAK,GACX,CAAC,EACN,CACA,MAAMoyH,GAAe,IAAIJ,GAAW,WAAY,WAC1CK,GAAiBR,GAAOO,GAAanlH,SAAS4kH,GAC9CS,GAAaJ,GAAa,SAAS,KAAM,CAC7C/mG,KAAMlZ,OACNw0C,QAAS,KACT+Z,UAAW6xD,OAEPE,GAAiB,IAAIP,MAAcC,IACnCO,GAAmBX,GAAOU,GAAetlH,SAAS4kH,GAClDY,GAAeP,GAAa,WAAW,KAAM,CACjD/mG,KAAMlZ,OACNw0C,QAAS,KACT+Z,UAAWgyD,OAEPE,GAAuB,IAAIV,MAAcC,GAAO,WAChDU,GAAwBd,GAAOa,GAAqBzlH,SAAS4kH,GAC7De,GAAoBV,GAAa,gBAAgB,KAAM,CAC3D/mG,KAAMlZ,OACNw0C,QAAS,KACT+Z,UAAWmyD,OAEP,GAAU,CACd9yD,MAAOphE,OAAO0D,KAAKmwH,IACnBhF,QAAS7uH,OAAO0D,KAAKswH,IACrBI,aAAcp0H,OAAO0D,KAAKywH,KAEtBE,GAAW,CACfjzD,MAAO,QACPytD,QAAS,UACTuF,aAAc,iBAEhB,SAAS,GAAgB1nG,EAAMtc,EAAM6X,GACnC,IAAI7I,EAAYi1G,GAAS3nG,GACzB,GAAW,MAAPzE,EAAJ,CAGA,GAAI7X,EAAM,CAER,MAAMkkB,EAAalkB,EAAKvG,QAAQ6iB,EAAM,IACtCtN,GAAa,IAAIkV,GACnB,CAGA,OADAlV,GAAa,IAAI6I,IACV7I,EAAU7L,aARjB,CASF,CACO,MAAM+gH,IAAgB,EAAAzyD,EAAA,GAAa,CACxC0yD,MAAOn7D,QACPo7D,UAAWp7D,QACXgI,MAAO,CACL10C,KAAMlZ,OACNw0C,QAAS,KACT+Z,UAAW6xD,OAEVC,GACHhF,QAAS,CACPniG,KAAMlZ,OACNw0C,QAAS,KACT+Z,UAAWgyD,OAEVC,GACHI,aAAc,CACZ1nG,KAAMlZ,OACNw0C,QAAS,KACT+Z,UAAWmyD,OAEVC,OACA,YACA9hD,KACF,QACUoiD,IAAO,UAAmB,CACrCt1H,KAAM,OACNoC,MAAO+yH,KACP,KAAA96D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMhD,GAAU,SAAS,KACvB,MAAMsG,EAAY,GAGlB,IAAI2d,EACJ,IAAKA,KAAQ,GACX,GAAQA,GAAMxnB,SAAQkL,IACpB,MAAMpR,EAAQuC,EAAM6O,GACdgP,EAAY,GAAgBsN,EAAMtc,EAAMpR,GAC1CogB,GAAWrQ,EAAUhL,KAAKqb,EAAU,IAU5C,OAPArQ,EAAUhL,KAAK,CACb,oBAAqBxC,EAAMizH,UAC3B,eAAgBjzH,EAAMgzH,MACtB,CAAC,SAAShzH,EAAM6/D,SAAU7/D,EAAM6/D,MAChC,CAAC,WAAW7/D,EAAMstH,WAAYttH,EAAMstH,QACpC,CAAC,iBAAiBttH,EAAM6yH,gBAAiB7yH,EAAM6yH,eAE1CrlH,CAAS,IAElB,MAAO,KAAM,IAAAgrD,GAAEx4D,EAAMuN,IAAK,CACxBkrD,MAAO,CAAC,QAASvxD,EAAQzJ,MAAOuC,EAAMy4D,OACtC9zD,MAAO3E,EAAM2E,OACZuzD,EAAMzR,YACX,I,eCnHK,MAAM0sE,IAAkB,EAAA7yD,EAAA,GAAa,CAC1Ct/B,SAAU62B,QACVmS,WAAY,CACV7+C,KAAM0sC,QACNpR,QAAS,UAER,WACF,UACU2sE,IAAS,UAAmB,CACvCx1H,KAAM,SACNoC,MAAOmzH,KACPloD,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMmpH,GAAa,QAAgBrzH,EAAO,eACpC,aACJ6mE,EAAY,cACZC,IACE,QAAS9mE,GAAOvC,IAAUuC,EAAMghC,WAAaqyF,EAAW51H,MAAQA,KACpE,MAAO,IAAMy6D,EAAMzR,UAAU,CAC3B4sE,WAAYA,EAAW51H,MACvBuC,MAAO,CACLinE,aAAcJ,EACdK,aAAcJ,IAGpB,ICrBWwsD,IAA2B,EAAAhzD,EAAA,GAAa,CACnD2J,MAAOh4D,OACPwS,UAAW,CACT0G,KAAMlZ,OACNw0C,QAAS,WACT+Z,UAAW5wD,GAAK,CAAC,WAAY,cAAc3C,SAAS2C,IAEtDvF,KAAM,CACJ8gB,KAAMlZ,OACNw0C,QAAS,MACT+Z,UAAW5wD,GAAK,CAAC,QAAS,MAAO,QAAQ3C,SAAS2C,IAEpDy0C,KAAM,CACJl5B,KAAMlZ,OACNw0C,QAAS,YACT+Z,UAAW5wD,GAAK,CAAC,YAAa,UAAU3C,SAAS2C,IAEnD2vC,OAAQ,CAACltC,OAAQJ,QACjBshH,aAAc,CACZpoG,KAAMlZ,OACNw0C,QAAS,oCAEX+sE,UAAW,CACTroG,KAAMlZ,OACNw0C,QAAS,qCAER,aACAqqB,KACF,mBACU2iD,IAA2B,EAAAnkC,EAAA,IAAgB,CACtD1xF,KAAM,2BACNoC,MAAO,CACLqK,KAAM,CACJ8gB,KAAMlZ,OACN2lD,UAAU,GAEZke,WAAY7jE,QAEdg5D,MAAO,CACLmL,UAAW,CAAC/rE,EAAMssE,KAAmB,GAEvC,KAAA1e,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,GACE6G,EACJ,MAAM,gBACJq1E,EAAe,eACf5I,GACE2I,KAWJ,OAVA,QAAM3I,GAAgB9R,UACpBxhE,EAAK,YAAarD,EAAMqK,KAAMqc,EAAI,KAEpC,EAAAkmD,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,8BACT,MAAS,CACP,2BAA4B5sE,EAAM81E,YAEpC,IAAOyJ,GACN,EAAC,QAAiB,SACd,CAAC,CACV,IAEWm0C,IAAkB,UAAmB,CAChD91H,KAAM,kBACNoC,MAAOszH,KACProD,MAAO,CACLqL,KAAMniE,IAAW,GAEnB,KAAA8jD,CAAMj4D,EAAOqT,GACX,IAAI,MACF6kD,EAAK,KACL70D,GACEgQ,EACJ,MAAMsgH,GAAS,UACTC,GAAc,QAAW,MACzBC,GAAY,QAAW,MACvBt0E,GAAS,SAAS,KAAM,QAAcv/C,EAAMu/C,UAC5Co3B,GAAiB,SAAW,GAClC,SAASm9C,EAAgB3yG,GACvB,IAAKwyG,EAAOl2H,MAAO,OACnB,MAAM+5B,EAA+B,aAApBx3B,EAAMykB,UAA2B,YAAc,aAChEkvG,EAAOl2H,MAAM+5B,GAAYrW,CAC3B,CACA,SAAS4yG,IACP,IAAKJ,EAAOl2H,MAAO,OAAO,EAC1B,MAAM+5B,EAA+B,aAApBx3B,EAAMykB,UAA2B,YAAc,aAChE,OAAOkvG,EAAOl2H,MAAM+5B,EACtB,CACA,SAASwwD,IACP,IAAK2rC,EAAOl2H,MAAO,OAAO,EAC1B,MAAM+5B,EAA+B,aAApBx3B,EAAMykB,UAA2B,eAAiB,cACnE,OAAOkvG,EAAOl2H,MAAM+5B,EACtB,CACA,SAASw8F,IACP,IAAKL,EAAOl2H,MAAO,OAAO,EAC1B,MAAM+5B,EAA+B,aAApBx3B,EAAMykB,UAA2B,eAAiB,cACnE,OAAOkvG,EAAOl2H,MAAM+5B,EACtB,CASA,SAASy8F,EAAU5pH,EAAM6pH,GACV,UAAT7pH,EACFupH,EAAYn2H,MAAQy2H,EACF,QAAT7pH,IACTwpH,EAAUp2H,MAAQy2H,EAEtB,CACA,SAASC,EAAU9pH,GACjB,MAAgB,UAATA,EAAmBupH,EAAYn2H,MAAQo2H,EAAUp2H,KAC1D,EAjBA,SAAU,KACHk2H,EAAOl2H,QACO,UAAfuC,EAAMqK,KACRypH,EAAgB9rC,KACQ,SAAfhoF,EAAMqK,MACfypH,EAAgB9rC,IAAkB,EAAIgsC,IAAqB,GAC7D,IAYF,IAAII,EAAqB,EACzB,SAASC,EAAgBhqH,EAAMiqH,GAC7B39C,EAAel5E,MAAQ62H,EACnB39C,EAAel5E,OACjB82H,EAAalqH,EAEjB,CACA,SAASkqH,EAAalqH,GACpB,GAAmB,WAAfrK,EAAMqkD,OAAsBsyB,EAAel5E,MAAO,OACtD,MAAMy2H,EAASC,EAAU9pH,GAIzB,SAAShM,EAAK61H,GACZD,EAAU5pH,EAAM6pH,IAChB,SAAS,KACQ,UAAXA,GAAiC,UAAXA,IACX,OAAXA,GAA4B,UAAT7pH,GACrBypH,EAAgB9rC,IAAkBosC,EAAqBL,KAEtC,WAAf/zH,EAAMqkD,OACR,SAAS,KACPrjD,OAAO4F,uBAAsB,KAC3B5F,OAAO4F,uBAAsB,KAC3B5F,OAAO4F,uBAAsB,KAC3B2tH,EAAalqH,EAAK,GAClB,GACF,GACF,IAEN,GAEJ,CAtBKspH,EAAOl2H,QAAS,CAAC,QAAS,WAAWwP,SAASinH,KACnDE,EAAqBpsC,IACrBisC,EAAU5pH,EAAM,WAqBhBhH,EAAK,OAAQ,CACXgH,OACAhM,SAEJ,CACA,MAAM,EACJyE,IACE,UACJ,SAAS0xH,EAAWnqH,EAAM6pH,GACxB,GAAIl0H,EAAMqK,OAASA,GAAuB,SAAfrK,EAAMqK,KAAiB,OAClD,MAAMsnB,EAAU,IAAM4iG,EAAalqH,GAC7B8/E,EAAY,CAChB9/E,OACArK,MAAO,CACL2xB,UACAs4C,MAAOjqE,EAAMiqE,QAGjB,MAAe,UAAXiqD,EAA2Bh8D,EAAMjL,QAAQk9B,GAC9B,UAAX+pC,EAA2Bh8D,EAAMu8D,QAAQtqC,KAAc,QAAa,MAAO,KAAM,CAACrnF,EAAE9C,EAAMwzH,aAC3E,WAAfxzH,EAAMqkD,KACO,YAAX6vE,EACKh8D,EAAM6pB,UAAUoI,KAAc,QAAatK,GAAmB,CACnE,eAAiB,EACjB,MAAS7/E,EAAMiqE,OACd,MAEE/R,EAAM,eAAeiyB,KAAc,QAAa/Q,GAAM,CAC3D,QAAW,WACX,MAASp5E,EAAMiqE,MACf,QAAWt4C,GACV,CACD80B,QAAS,IAAM,CAAC3jD,EAAE9C,EAAMuzH,iBAGrBr7D,EAAM6pB,UAAUoI,KAAc,QAAatK,GAAmB,CACnE,eAAiB,EACjB,MAAS7/E,EAAMiqE,OACd,KACL,CACA,MAAM,gBACJ6B,IACE,QAAa9rE,IACjB,EAAA4sE,EAAA,IAAU,KACR,MAAM2W,EAAMvjF,EAAMuN,IACZmnH,EAAmC,UAAf10H,EAAMqK,MAAmC,SAAfrK,EAAMqK,KACpDsqH,EAAiC,QAAf30H,EAAMqK,MAAiC,SAAfrK,EAAMqK,KAChDuqH,EAA+B,cAAf50H,EAAMqkD,KAC5B,OAAO,QAAak/B,EAAK,CACvB,IAAOowC,EACP,MAAS,CAAC,oBAAqB,sBAAsB3zH,EAAMykB,YAAa,CACtE,2BAA4BiwG,EAC5B,yBAA0BC,IAE5B,MAAS7oD,EAAgBruE,OACxB,CACDgpD,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,2BACR,CAAC+tE,EAAW,QAASZ,EAAYn2H,SAAUi3H,GAAqBE,IAAiB,QAAanB,GAA0B,CACzH,IAAO,QACP,KAAQ,QACR,YAAeY,EACf,WAAc90E,EAAO9hD,OACpB,MAAOy6D,EAAMzR,YAAakuE,GAAmBC,IAAiB,QAAanB,GAA0B,CACtG,IAAO,MACP,KAAQ,MACR,YAAeY,EACf,WAAc90E,EAAO9hD,OACpB,OAAO,QAAa,MAAO,CAC5B,MAAS,2BACR,CAAC+2H,EAAW,MAAOX,EAAUp2H,WAChC,GAEN,ICjOWo3H,GAAmBxzH,OAAOm+D,IAAI,wBAC9Bs1D,IAAsB,EAAAx0D,EAAA,GAAa,KAC3C,YACAgc,GAAe,CAChBG,cAAe,wBAEd3L,QACA,WACF,cACUikD,IAAa,UAAmB,CAC3Cn3H,KAAM,aACNoC,MAAO80H,KACP7pD,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,WACJ68E,EAAU,OACVG,EAAM,KACNp7E,EAAI,KACJ4M,EAAI,SACJ0uE,GACED,GAASj9E,EAAO60H,IACpB,MAAO,KAAM,QAAa70H,EAAMuN,IAAK,CACnC,MAAS,CAAC,eAAgB+9D,EAAa7tE,MAAOuC,EAAMy4D,OACpD,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,CAACyR,EAAMzR,UAAU,CAC9Bo2B,aACAG,SACAp7E,OACA4M,OACA0uE,SAAUA,EAASz/E,UAGzB,IC/CWu3H,IAAQ,UAAmB,CACtCp3H,KAAM,QACNoC,MAAO08E,KACPzR,MAAO,CACL,iBAAkBvkD,IAAO,GAE3B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,WACJ2yE,EAAU,OACVG,EAAM,OACN/6C,EAAM,cACNw6C,EAAa,MACbh/E,EAAK,SACLujC,GACE27C,GAAa38E,EAAO60H,IACxB,MAAO,IAAM38D,EAAMzR,UAAU,CAC3Bo2B,WAAYA,EAAWp/E,MACvBg/E,cAAeA,EAAch/E,MAC7Bu/E,SACA/6C,SACAxkC,MAAOA,EAAMA,MACbujC,SAAUA,EAASvjC,OAEvB,ICzBWw3H,GAAOjxC,GAAuB,QAAS,OCIvCkxC,IAAmB,EAAA50D,EAAA,GAAa,KACxC,aACA,aACAsN,KACF,WACUunD,IAAU,UAAmB,CACxCv3H,KAAM,UACNoC,MAAOk1H,KACP,KAAAj9D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,cACJsmE,EAAa,aACbC,EAAY,cACZvC,EAAa,MACb4B,EAAK,UACLY,GACEzB,EAAajvE,IACX,gBACJ8rE,IACE,QAAa9rE,GAMjB,OALA,EAAA4sE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,IAAO8D,EACP,MAAS,CAACF,EAAc/yE,MAAOuC,EAAMy4D,OACrC,MAAS,CAACqT,EAAgBruE,MAAOgzE,EAAahzE,MAAOuC,EAAM2E,QAC1D,CAACuzD,EAAMzR,gBACH,CACLynB,gBACA4B,QAEJ,IC/BWslD,IAAuB,EAAA90D,EAAA,GAAa,CAC/ClgC,SAAU,CACRjV,KAAMlZ,OACN2lD,UAAU,GAEZroD,KAAM,CACJ4b,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXujB,WAAYnS,YACT,YACAkW,KACF,eACUsnD,IAAc,UAAmB,CAC5Cz3H,KAAM,cACNoC,MAAOo1H,KACP,KAAAn9D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,iBACJqkE,GACEF,EAAc,CAChBhvE,GAAIW,EAAMpC,KACVs8C,OAAO,SAAS,IAAMjjC,SAASjX,EAAMk6C,MAAO,MAC5C9Z,UAAU,QAAMpgC,EAAO,YACvBkwE,aAAa,QAAMlwE,EAAO,QAC1BiwE,YAAY,QAAMjwE,EAAO,QACzB8kE,QAAQ,QAAM9kE,EAAO,cACrBsqE,UAAU,QAAMtqE,EAAO,cAEzB,MAAO,KAAM,QAAa,MAAO,CAC/B,MAAS,CAAC,gBAAiBA,EAAMy4D,OACjC,MAAS,CAAC8V,EAAiB9wE,MAAOuC,EAAM2E,QACvC,CAACuzD,EAAMzR,aACZ,ICnCW6uE,IAAiB,EAAAh1D,EAAA,GAAa,CACzC0J,WAAYnS,QACZ1jD,QAAS,CACPgX,KAAM1sB,OAGNgoD,QAAS,KAAM,CACblT,UAAMlqC,EACNysE,gBAAYzsE,EACZ+d,eAAW/d,SAGZ,aACA,aACAynE,QACA,QAAoB,CACrBjsD,WAAY,qBAEb,SACU0wG,IAAQ,UAAmB,CACtC33H,KAAM,QACNktE,WAAY,CACVsL,UAAS,MAEXp2E,MAAOs1H,KACPrqD,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,gBACJ4hE,IACE,QAAa9rE,GACXizC,GAAW,QAAgBjzC,EAAO,cACxC,SAASq5F,EAAY1iB,GACf1jC,EAASx1C,QACbw1C,EAASx1C,MAAQk5E,EACnB,CAeA,OAdA,EAAA/J,EAAA,IAAU,KAAM,SAAgB,QAAa5sE,EAAMuN,IAAK,CACtD,MAAS,CAAC,SAAUvN,EAAMy4D,OAC1B,MAAS,CAACqT,EAAgBruE,MAAOuC,EAAM2E,QACtC,CACD8hD,QAAS,IAAM,CAACxT,EAASx1C,QAAS,QAAa,KAAiB,CAC9D,WAAcuC,EAAM6kB,WACpB,QAAU,GACT,CACD4hC,QAAS,IAAM,CAACyR,EAAMzR,kBAEtB,CAAC,EAAC,QAAkB,aAAc,CACpCnxC,QAAS+jF,EACTllF,QAASnU,EAAMmU,SACd,UACI,CAAC,CACV,IC9DWqhH,GAAWxxC,GAAuB,cCGlCyxC,IAA2B,EAAAn1D,EAAA,GAAa,CACnDjqB,MAAOwhB,QACP1J,IAAK0J,YACF,YACAiZ,KACF,mBACU6f,IAAkB,UAAmB,CAChD/yF,KAAM,kBACNoC,MAAOy1H,KACP,KAAAx9D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAQJ,OAPA,EAAA0iE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,qBAAsB,CAC9B,4BAA6BvN,EAAMq2C,MACnC,0BAA2Br2C,EAAMmuD,KAChCnuD,EAAMy4D,OACT,MAASz4D,EAAM2E,OACduzD,KACI,CAAC,CACV,ICrBWw9D,IAA0B,EAAAp1D,EAAA,GAAa,CAClDjqB,MAAOwhB,QACP1J,IAAK0J,YACF,YACAiZ,KACF,kBACU6kD,IAAiB,UAAmB,CAC/C/3H,KAAM,iBACNoC,MAAO01H,KACP,KAAAz9D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAUJ,OATA,EAAA0iE,EAAA,IAAU,KACD,QAAa5sE,EAAMuN,IAAK,CAC7B,MAAS,CAAC,oBAAqB,CAC7B,2BAA4BvN,EAAMq2C,MAClC,yBAA0Br2C,EAAMmuD,KAC/BnuD,EAAMy4D,OACT,MAASz4D,EAAM2E,OACduzD,KAEE,CAAC,CACV,ICpBW09D,IAA2B,EAAAt1D,EAAA,GAAa,CACnDk6C,OAAQvoG,OACR4jH,eAAgB5jH,OAChB+jF,SAAUv3F,OACVkZ,IAAK,CACHwT,KAAM0sC,QACNpR,aAASp9C,OAER,UACF,mBACUysH,IAAkB,UAAmB,CAChDl4H,KAAM,kBACNoC,MAAO41H,KACP,KAAA39D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,WACJqhE,IACE,QAAcvrE,GAKlB,OAJA,EAAA4sE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,oBAAqBrB,EAAW9tE,MAAOuC,EAAMy4D,OACvD,MAASz4D,EAAM2E,OACd,CAACuzD,EAAMzR,gBACH,CAAC,CACV,ICtBWsvE,IAAiB,EAAAz1D,EAAA,GAAa,CACzCujC,WAAYhsC,YACT,aACA,aACAiZ,EAAa,CACdvjE,IAAK,UAEN,SACUyoH,IAAQ,UAAmB,CACtCp4H,KAAM,QACNoC,MAAO+1H,KACP,KAAA99D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,gBACJ4hE,IACE,QAAa9rE,IACX,WACJouE,GACEJ,KACE,cACJ2M,GACED,KAWJ,OAVA,EAAA9N,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,SAAU,CAClB,qBAAsBvN,EAAM6jG,YAC3B7jG,EAAMy4D,OACT,MAAS,CAAC2V,EAAW3wE,MAAOk9E,EAAcl9E,MAAOquE,EAAgBruE,MAAOuC,EAAM2E,QAC7E,CACD8hD,QAAS,IAAM,CAACzmD,EAAM6jG,YAAa,QAAa,MAAO,CACrD,MAAS,oBACR,CAAC3rC,EAAMzR,cAAgByR,EAAMzR,iBAE3B,CAAC,CACV,IC3CK,SAASwvE,GAAU/rH,GACxB,IAAI,OACFypH,EAAM,SACNuC,EAAQ,iBACR3nD,GACErkE,EACJ,MAAMisH,GAAU,SAAW,GACrBC,GAAgB,QAAW,GAC3BC,GAAe,SAAS,KAC5B,MAAMhsH,EAAgC,mBAAlB8rH,EAAQ14H,MAAsB,MAAQ04H,EAAQ14H,MAClE,MAAO,CAACy4H,EAASz4H,MAAQ,CACvB0Q,IAAK,OACL+zD,OAAQ,OACRhxD,YAAQ7H,QACNA,EAAW8sH,EAAQ14H,MAAQ,CAC7B,CAAC4M,IAAO,QAAc+rH,EAAc34H,QAClC,CACF0Q,IAAKogE,EAAiB9wE,MAAM0Q,KAC5B,KAEJ,SAAU,MACR,QAAM+nH,GAAUxvG,IACVA,EACF1lB,OAAO8C,iBAAiB,SAAUiuB,EAAU,CAC1CQ,SAAS,IAGXvxB,OAAO+C,oBAAoB,SAAUguB,EACvC,GACC,CACD2xC,WAAW,GACX,KAEJ,SAAgB,KACd1iE,OAAO+C,oBAAoB,SAAUguB,EAAS,IAEhD,IAAIiqE,EAAgB,EACpB,SAASjqE,IACP,MAAMtN,EAAYu3E,EAAgBh7F,OAAOgN,QAAU,KAAO,OACpDg0D,EAAO2xD,EAAOl2H,MAAMmQ,wBACpB0oH,EAAYztH,WAAW0lE,EAAiB9wE,MAAM0Q,KAAO,GACrDA,EAAMnN,OAAOgN,QAAU1C,KAAKC,IAAI,EAAG6qH,EAAc34H,MAAQ64H,GACzDp0D,EAASF,EAAK9wD,OAAS5F,KAAKC,IAAI6qH,EAAc34H,MAAO64H,GAAat1H,OAAOgN,QAAUhN,OAAOuzB,YAC1FgiG,EAAa1tH,WAAWxC,iBAAiBstH,EAAOl2H,OAAO6I,iBAAiB,uBAAyB,EACnG07D,EAAK9wD,OAASlQ,OAAOuzB,YAAc+hG,GACrCH,EAAQ14H,MAAQ,MAChB24H,EAAc34H,MAAQ64H,GACC,OAAd7xG,GAAwC,WAAlB0xG,EAAQ14H,OAAoC,SAAdgnB,GAA0C,QAAlB0xG,EAAQ14H,OAC7F24H,EAAc34H,MAAQuD,OAAOgN,QAAUg0D,EAAK7zD,IAAMooH,EAClDJ,EAAQ14H,OAAQ,GACO,SAAdgnB,GAAwBy9C,GAAU,GAC3Ck0D,EAAc34H,MAAQ,EACtB04H,EAAQ14H,MAAQ,UACO,OAAdgnB,GAAsBtW,GAAO,IACjCooH,EAGwB,QAAlBJ,EAAQ14H,QACjB24H,EAAc34H,OAAS0Q,EAAMooH,EAAaD,EAC1CH,EAAQ14H,MAAQ,QAJhB24H,EAAc34H,MAAQukE,EAAK7zD,IAAMA,EACjCgoH,EAAQ14H,MAAQ,QAMpBu+F,EAAgBh7F,OAAOgN,OACzB,CACA,MAAO,CACLmoH,UACAE,eAEJ,CCrEA,MAAMG,GAAU,IACVC,GAAU,GAGhB,SAASC,GAAwBC,GAC/B,MAAMC,EAAQ,cACd,OAAQD,EAAO,GAAK,EAAM,GAAOrrH,KAAK4iB,KAAK5iB,KAAKuE,IAAI8mH,IAASC,CAC/D,CAKO,SAASC,GAAyBC,GAEvC,GAAIA,EAAQ52H,OAAS,EAEnB,OAAO,EAMT,GAAuB,IAAnB42H,EAAQ52H,OAEV,OAAI42H,EAAQ,GAAGh0H,IAAMg0H,EAAQ,GAAGh0H,EAEvB,GAEDg0H,EAAQ,GAAGnN,EAAImN,EAAQ,GAAGnN,IAAMmN,EAAQ,GAAGh0H,EAAIg0H,EAAQ,GAAGh0H,GAIpE,IAAI6zH,EAAO,EACX,IAAK,IAAI12H,EAAI62H,EAAQ52H,OAAS,EAAGD,EAAI,EAAGA,IAAK,CAC3C,GAAI62H,EAAQ72H,GAAG6C,IAAMg0H,EAAQ72H,EAAI,GAAG6C,EAElC,SAEF,MAAMi0H,EAAQL,GAAwBC,GAChCK,GAASF,EAAQ72H,GAAG0pH,EAAImN,EAAQ72H,EAAI,GAAG0pH,IAAMmN,EAAQ72H,GAAG6C,EAAIg0H,EAAQ72H,EAAI,GAAG6C,GACjF6zH,IAASK,EAAQD,GAASzrH,KAAKuE,IAAImnH,GAC/B/2H,IAAM62H,EAAQ52H,OAAS,IACzBy2H,GAAQ,GAEZ,CACA,OAAuC,IAAhCD,GAAwBC,EACjC,CACO,SAASM,KACd,MAAMxrG,EAAU,CAAC,EACjB,SAASyrG,EAAYn0H,GACnBjB,MAAM0f,KAAKze,EAAE4qB,gBAAgBhqB,SAAQ0M,IACnC,MAAMymH,EAAUrrG,EAAQpb,EAAMkb,cAAgBE,EAAQpb,EAAMkb,YAAc,IAAI,KAAekrG,KAC7FK,EAAQt0H,KAAK,CAACO,EAAEo0H,UAAW9mH,GAAO,GAEtC,CACA,SAAS+mH,EAASr0H,GAChBjB,MAAM0f,KAAKze,EAAE4qB,gBAAgBhqB,SAAQ0M,WAC5Bob,EAAQpb,EAAMkb,WAAW,GAEpC,CACA,SAAS8rG,EAAYh4H,GACnB,MAAMy3H,EAAUrrG,EAAQpsB,IAAKq1D,SAAS+I,UACtC,IAAKq5D,EACH,MAAM,IAAIjpE,MAAM,2BAA2BxuD,KAE7C,MAAMi4H,EAASR,EAAQ,GACjBvzG,EAAI,GACJC,EAAI,GACV,IAAK,MAAMkD,KAAOowG,EAAS,CACzB,GAAIQ,EAAO,GAAK5wG,EAAI,GAAK8vG,GAAS,MAClCjzG,EAAE/gB,KAAK,CACLM,EAAG4jB,EAAI,GACPijG,EAAGjjG,EAAI,GAAGigB,UAEZnjB,EAAEhhB,KAAK,CACLM,EAAG4jB,EAAI,GACPijG,EAAGjjG,EAAI,GAAGkgB,SAEd,CACA,MAAO,CACLrjB,EAAGszG,GAAyBtzG,GAC5BC,EAAGqzG,GAAyBrzG,GAC5B,aAAIiB,GACF,MAAM,EACJlB,EAAC,EACDC,GACEpd,MACGmxH,EAAMC,GAAQ,CAAClsH,KAAKuE,IAAI0T,GAAIjY,KAAKuE,IAAI2T,IAC5C,OAAO+zG,EAAOC,GAAQj0G,GAAK,EAAI,QAAUg0G,EAAOC,GAAQj0G,GAAK,EAAI,OAASi0G,EAAOD,GAAQ/zG,GAAK,EAAI,OAASg0G,EAAOD,GAAQ/zG,GAAK,EAAI,KAAOi0G,IAC5I,EAEJ,CACA,MAAO,CACLP,cACAE,WACAC,cAEJ,CACA,SAASI,KACP,MAAM,IAAI5pE,KACZ,CC/FO,SAAS6pE,GAASxtH,GACvB,IAAI,GACFxC,EAAE,SACFurC,EAAQ,YACR0kF,EAAW,MACX3mH,EAAK,UACL4mH,EAAS,SACTx3F,GACEl2B,GACJ,SAAU,KACRlJ,OAAO8C,iBAAiB,aAAc+zH,EAAc,CAClDtlG,SAAS,IAEXvxB,OAAO8C,iBAAiB,YAAag0H,EAAa,CAChDvlG,SAAS,IAEXvxB,OAAO8C,iBAAiB,WAAYi0H,EAAY,CAC9CxlG,SAAS,GACT,KAEJ,SAAgB,KACdvxB,OAAO+C,oBAAoB,aAAc8zH,GACzC72H,OAAO+C,oBAAoB,YAAa+zH,GACxC92H,OAAO+C,oBAAoB,WAAYg0H,EAAW,IAEpD,MAAMhhH,GAAe,SAAS,IAAM,CAAC,OAAQ,SAAS9J,SAASmzB,EAAS3iC,UAClE,YACJy5H,EAAW,SACXE,EAAQ,YACRC,GACEJ,KACJ,IAAIe,GAAgB,EACpB,MAAMC,GAAa,SAAW,GACxBC,GAAe,QAAW,GAC1Bj+F,GAAS,QAAW,GAC1B,IAAIoc,EACJ,SAASqpB,EAAUy4D,EAAKrzD,GACtB,OAA2B,SAAnB1kC,EAAS3iC,MAAmB06H,EAAyB,UAAnB/3F,EAAS3iC,MAAoBU,SAASiS,gBAAgByG,YAAcshH,EAAyB,QAAnB/3F,EAAS3iC,MAAkB06H,EAAyB,WAAnB/3F,EAAS3iC,MAAqBU,SAASiS,gBAAgB0G,aAAeqhH,EAAM,OAAWrzD,EAAS9zD,EAAMvT,MAAQ,EACrQ,CACA,SAAS26H,EAAYD,GACnB,IAAIE,IAAQjvH,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,KAAmBA,UAAU,GAC3E,MAAMiC,EAA8B,SAAnB+0B,EAAS3iC,OAAoB06H,EAAMl+F,EAAOx8B,OAASuT,EAAMvT,MAA2B,UAAnB2iC,EAAS3iC,OAAqBU,SAASiS,gBAAgByG,YAAcshH,EAAMl+F,EAAOx8B,OAASuT,EAAMvT,MAA2B,QAAnB2iC,EAAS3iC,OAAmB06H,EAAMl+F,EAAOx8B,OAASuT,EAAMvT,MAA2B,WAAnB2iC,EAAS3iC,OAAsBU,SAASiS,gBAAgB0G,aAAeqhH,EAAMl+F,EAAOx8B,OAASuT,EAAMvT,MAAQ,KACtW,OAAO46H,EAAQ/sH,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAGH,IAAaA,CACtD,CACA,SAASwsH,EAAa90H,GACpB,GAAI60H,EAAUn6H,MAAO,OACrB,MAAMuvC,EAASjqC,EAAE4qB,eAAe,GAAGgZ,QAC7BsG,EAASlqC,EAAE4qB,eAAe,GAAGiZ,QAC7B0xF,EAAY,GACZC,EAAiC,SAAnBn4F,EAAS3iC,MAAmBuvC,EAASsrF,EAA+B,UAAnBl4F,EAAS3iC,MAAoBuvC,EAAS7uC,SAASiS,gBAAgByG,YAAcyhH,EAA+B,QAAnBl4F,EAAS3iC,MAAkBwvC,EAASqrF,EAA+B,WAAnBl4F,EAAS3iC,MAAqBwvC,EAAS9uC,SAASiS,gBAAgB0G,aAAewhH,EAAY,KACnSE,EAAYvlF,EAASx1C,QAA6B,SAAnB2iC,EAAS3iC,MAAmBuvC,EAASh8B,EAAMvT,MAA2B,UAAnB2iC,EAAS3iC,MAAoBuvC,EAAS7uC,SAASiS,gBAAgByG,YAAc7F,EAAMvT,MAA2B,QAAnB2iC,EAAS3iC,MAAkBwvC,EAASj8B,EAAMvT,MAA2B,WAAnB2iC,EAAS3iC,MAAqBwvC,EAAS9uC,SAASiS,gBAAgB0G,aAAe9F,EAAMvT,MAAQ,OAC9T86H,GAAeC,GAAavlF,EAASx1C,OAASk6H,EAAYl6H,SAC5D44C,EAAQ,CAACrJ,EAAQC,GACjBhT,EAAOx8B,MAAQiiE,EAAU3oD,EAAatZ,MAAQuvC,EAASC,EAAQgG,EAASx1C,OACxEy6H,EAAaz6H,MAAQ26H,EAAYrhH,EAAatZ,MAAQuvC,EAASC,GAC/D+qF,EAAgB/9F,EAAOx8B,OAAS,IAAMw8B,EAAOx8B,MAAQ,GACrD25H,EAASr0H,GACTm0H,EAAYn0H,GAEhB,CACA,SAAS+0H,EAAY/0H,GACnB,MAAMiqC,EAASjqC,EAAE4qB,eAAe,GAAGgZ,QAC7BsG,EAASlqC,EAAE4qB,eAAe,GAAGiZ,QACnC,GAAIoxF,EAAe,CACjB,IAAKj1H,EAAEurB,WAEL,YADA0pG,GAAgB,GAGlB,MAAMS,EAAKntH,KAAKuE,IAAIm9B,EAASqJ,EAAM,IAC7BqiF,EAAKptH,KAAKuE,IAAIo9B,EAASoJ,EAAM,IAC7BsiF,EAAe5hH,EAAatZ,MAAQg7H,EAAKC,GAAMD,EAAK,EAAIC,EAAKD,GAAMC,EAAK,EAC1EC,GACFV,EAAWx6H,OAAQ,EACnBu6H,GAAgB,IACNjhH,EAAatZ,MAAQi7H,EAAKD,GAAM,IAC1CT,GAAgB,EAEpB,CACA,IAAKC,EAAWx6H,MAAO,OACvBsF,EAAEioB,iBACFksG,EAAYn0H,GACZ,MAAMsI,EAAW+sH,EAAYrhH,EAAatZ,MAAQuvC,EAASC,GAAQ,GACnEirF,EAAaz6H,MAAQ6N,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAGH,IACzCA,EAAW,EACb4uB,EAAOx8B,MAAQiiE,EAAU3oD,EAAatZ,MAAQuvC,EAASC,GAAQ,GACtD5hC,EAAW,IACpB4uB,EAAOx8B,MAAQiiE,EAAU3oD,EAAatZ,MAAQuvC,EAASC,GAAQ,GAEnE,CACA,SAAS8qF,EAAWh1H,GAElB,GADAi1H,GAAgB,GACXC,EAAWx6H,MAAO,OACvBy5H,EAAYn0H,GACZk1H,EAAWx6H,OAAQ,EACnB,MAAMy5B,EAAWmgG,EAAYt0H,EAAE4qB,eAAe,GAAGpC,YAC3CqtG,EAAKttH,KAAKuE,IAAIqnB,EAAS3T,GACvBs1G,EAAKvtH,KAAKuE,IAAIqnB,EAAS1T,GACvBm1G,EAAe5hH,EAAatZ,MAAQm7H,EAAKC,GAAMD,EAAK,IAAMC,EAAKD,GAAMC,EAAK,EAE9E5lF,EAASx1C,MADPk7H,EACezhG,EAASzS,aAAe,CACvCrW,KAAM,QACN2yD,MAAO,OACP5yD,IAAK,OACL+zD,OAAQ,MACR9hC,EAAS3iC,QAAU,MAEJy6H,EAAaz6H,MAAQ,EAE1C,CACA,MAAMq7H,GAAa,SAAS,IACnBb,EAAWx6H,MAAQ,CACxB0K,UAA8B,SAAnBi4B,EAAS3iC,MAAmB,2BAA2By6H,EAAaz6H,MAAQuT,EAAMvT,YAAiC,UAAnB2iC,EAAS3iC,MAAoB,0BAA0By6H,EAAaz6H,MAAQuT,EAAMvT,YAAiC,QAAnB2iC,EAAS3iC,MAAkB,2BAA2By6H,EAAaz6H,MAAQuT,EAAMvT,YAAiC,WAAnB2iC,EAAS3iC,MAAqB,0BAA0By6H,EAAaz6H,MAAQuT,EAAMvT,YAAc,KAC3YonB,WAAY,aACVxb,IAcN,OAZA,QAAe4uH,GAAY,KACzB,MAAM9vH,EAAYT,EAAGjK,OAAOkH,MAAMwD,WAAa,KACzC0c,EAAand,EAAGjK,OAAOkH,MAAMkgB,YAAc,MACjD,SAAY,KACVnd,EAAGjK,OAAOkH,MAAMqF,YAAY,YAAa8uH,EAAWr7H,OAAO0K,WAAa,QACxET,EAAGjK,OAAOkH,MAAMqF,YAAY,aAAc8uH,EAAWr7H,OAAOonB,YAAc,KAAK,KAEjF,SAAe,KACbnd,EAAGjK,OAAOkH,MAAMqF,YAAY,YAAa7B,GACzCT,EAAGjK,OAAOkH,MAAMqF,YAAY,aAAc6a,EAAW,GACrD,IAEG,CACLozG,aACAC,eACAY,aAEJ,CACA,SAAS,KACP,MAAM,IAAIjrE,KACZ,CClHA,MAAMkrE,GAAY,CAAC,QAAS,MAAO,OAAQ,QAAS,MAAO,UAC9CC,IAA6B,EAAA14D,EAAA,GAAa,CACrD2J,MAAOh4D,OACPgnH,qBAAsBphE,QACtBqhE,oBAAqBrhE,QACrBshE,cAAethE,QACfihB,SAAUjhB,QACVmS,WAAY,CACV7+C,KAAM0sC,QACNpR,QAAS,MAEX2yE,UAAWvhE,QACXwhE,KAAM,CACJluG,KAAM0sC,QACNpR,QAAS,MAEX6yE,UAAW,CACTnuG,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,IAEXmkB,MAAO,CACLz/C,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,SAAS,GAEX5c,MAAO53B,OACPsnH,UAAW1hE,QACX8S,WAAY9S,QACZ+/D,UAAW//D,QACX7mD,MAAO,CACLma,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXzhD,SAAU,CACRmmB,KAAMlZ,OACNw0C,QAAS,QACT+Z,UAAW/iE,GAASs7H,GAAU9rH,SAASxP,IAEzC4iC,OAAQw3B,WACLmgB,SACA,aACA,cACA,SAAiB,CAClByQ,OAAQ,UAEPrQ,QACArK,OACAqH,QACAtE,EAAa,CACdvjE,IAAK,YAEJ,WACF,qBACUisH,IAAoB,UAAmB,CAClD57H,KAAM,oBACNoC,MAAOg5H,KACP/tD,MAAO,CACL,oBAAqBvkD,IAAO,EAC5B,cAAeA,IAAO,GAExB,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,MACJ22D,IACE,WACE,aACJyK,IACE,QAAatrE,IACX,cACJm4E,GACED,GAAUl4E,IACR,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,iBACJu4E,GACED,GAAat4E,IACX,eACJ2oF,EAAc,OACdF,IACE,SAAWzoF,IACT,eACJw1E,GACED,GAAWv1E,GACT02D,GAAS,WACTzjB,GAAW,QAAgBjzC,EAAO,aAAc,MAAM4P,KAAOA,KAC7D,cACJ+qE,GACED,MACE,QACJ1O,IACE,UACE2nD,GAAS,UACTN,GAAa,SAAW,IACxB,aACJxsD,EAAY,cACZC,IACE,QAAS9mE,GAAOvC,IAClB41H,EAAW51H,MAAQA,CAAK,IAEpBuT,GAAQ,SAAS,IACdhR,EAAMq5H,MAAQr5H,EAAMm5H,eAAiB9F,EAAW51H,MAAQ4U,OAAOrS,EAAMgR,OAASqB,OAAOrS,EAAMq5H,KAAOr5H,EAAMs5H,UAAYt5H,EAAMgR,SAE7HhM,GAAW,SAAS,KACjB,SAAWhF,EAAMgF,SAAU67D,EAAMpjE,SAEpCg8H,GAAe,SAAS,IAAMz5H,EAAM2qE,aACpCgtD,GAAc,SAAS,KAAO33H,EAAMo5H,YAAc3wC,EAAOhrF,OAASuC,EAAMu5H,aACxErD,GAAW,SAAS,IAAMl2H,EAAMqgC,SAAWs3F,EAAYl6H,OAA4B,WAAnBuH,EAASvH,SAC/E,SAAe,IAAMuC,EAAMm5H,eAA+B,MAAdn5H,EAAMq5H,OAAc,MAC9D,QAAMhG,GAAY3sG,GAAOrjB,EAAK,eAAgBqjB,IAAK,KAErD,SAAe,KAAO1mB,EAAMi5H,uBAAsB,MAChD,QAAMtB,GAAajxG,IAAQ1mB,EAAMo5H,YAAa,SAAS,IAAMnmF,EAASx1C,OAASipB,KAAK,KAEtF,SAAe,KAAO1mB,EAAMk5H,uBAAyBxiE,IAAQ,MAC3D,QAAMA,EAAOC,cAAc,IAAMghE,EAAYl6H,QAAUw1C,EAASx1C,OAAQ,IAAO,KAEjF,SAAM,IAAMuC,EAAMo5H,YAAW1yG,IACvBA,IAAKusB,EAASx1C,OAAQ,EAAI,IAER,MAApBuC,EAAMgqE,YAAuB2tD,EAAYl6H,QAC3Cw1C,EAASx1C,MAAQuC,EAAMo5H,YAAc3wC,EAAOhrF,OAE9C,MAAM,WACJw6H,EAAU,aACVC,GACER,GAAS,CACXhwH,GAAIisH,EACJ1gF,WACA0kF,cACA3mH,QACA4mH,WAAW,QAAM53H,EAAO,aACxBogC,SAAUp7B,IAENirE,GAAa,SAAS,KAC1B,MAAM1gE,EAAOooH,EAAYl6H,MAAQ,EAAIuC,EAAMq5H,MAAQr5H,EAAMm5H,cAAgB9mH,OAAOrS,EAAMs5H,WAAatoH,EAAMvT,MACzG,OAAOw6H,EAAWx6H,MAAQ8R,EAAO2oH,EAAaz6H,MAAQ8R,CAAI,IAEtD2gE,GAAc,SAAS,IAAM,CAAC,MAAO,UAAUjjE,SAASjN,EAAMgF,UAAY,EAAIgM,EAAMvT,SACpF,iBACJ8wE,EAAgB,sBAChBC,GACEH,EAAc,CAChBhvE,GAAIW,EAAMpC,KACVs8C,OAAO,SAAS,IAAMjjC,SAASjX,EAAMk6C,MAAO,MAC5C9Z,SAAUp7B,EACVirE,aACAC,cACApL,QAAQ,SAAS,IAAM7xB,EAASx1C,OAASw6H,EAAWx6H,QACpD0yE,oBAAoB,SAAS,IAAM8nD,EAAWx6H,QAC9C6sE,UAAU,SAAS,IAEnBtqE,EAAMsqE,UAAY4rD,EAASz4H,OAAkC,kBAAlB04H,EAAQ14H,WAE/C,QACJ04H,EAAO,aACPE,GACEJ,GAAU,CACZtC,SACAuC,WACA3nD,qBAEI5C,GAAa,UAAmB,SAAS,IACf,kBAAhB3rE,EAAM4qE,MAAqB5qE,EAAM4qE,MAAQ,QAEnD8uD,GAAc,SAAS,KAAM,IAC7BzB,EAAWx6H,MAAQ,CACrB+oC,QAA8B,GAArB0xF,EAAaz6H,MACtBonB,WAAY,aACVxb,KACDmlE,EAAsB/wE,UAmE3B,OAjEA,SAAgB,CACdk1F,MAAO,CACLhT,QAAS,kBAGb,EAAA/S,EAAA,IAAU,KACR,MAAM2M,EAAWrhB,EAAMruB,OAAS7pC,EAAM6pC,MACtC,OAAO,QAAa,KAAW,KAAM,EAAC,QAAa7pC,EAAMuN,KAAK,QAAY,CACxE,IAAOomH,EACP,aAAgB9sD,EAChB,aAAgBC,EAChB,MAAS,CAAC,sBAAuB,wBAAwB9hE,EAASvH,QAAS,CACzE,uCAAwCuC,EAAMm5H,cAC9C,gCAAiCn5H,EAAM84E,SACvC,mCAAoCu6C,EAAW51H,MAC/C,4BAA6BuC,EAAMq5H,KACnC,iCAAkC1B,EAAYl6H,MAC9C,kCAAmCg8H,EAAah8H,MAChD,8BAA+Bw1C,EAASx1C,MACxC,8BAA+By4H,EAASz4H,OACvC6tE,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO06E,EAAc16E,MAAOkrF,EAAelrF,MAAO86E,EAAiB96E,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACpJ,MAAS,CAAC2R,EAAsB3sE,MAAO8wE,EAAiB9wE,MAAOk9E,EAAcl9E,MAAO44H,EAAa54H,MAAOuC,EAAM2E,MAAO,CAAC,MAAO,UAAUsI,SAASjI,EAASvH,OAAS,CAChKyT,OAAQ,QACN,CAAC,IACJ86D,EAAStmB,GAAQ,CAClBe,QAAS,IAAM,CAAC8yB,IAAY,QAAa,MAAO,CAC9C,IAAO,QACP,MAAS,4BACR,CAAErhB,EAAMruB,OAMA,QAAa8qC,GAAmB,CACzC,IAAO,iBACP,UAAa30E,EAAM6pC,MACnB,SAAY,CACVssC,KAAM,CACJT,IAAK,GACLC,OAAO,EACPzkE,OAAQ,UACRzN,IAAKzD,EAAM6pC,SAGdquB,EAAMruB,QAjBU,QAAassC,GAAM,CACpC,IAAO,YACP,IAAO,GACP,OAAS,EACT,OAAU,UACV,IAAOn2E,EAAM6pC,OACZ,QAWgBquB,EAAMjvC,UAAW,QAAa,MAAO,CACtD,MAAS,gCACR,CAACivC,EAAMjvC,eAAe,QAAa,MAAO,CAC3C,MAAS,gCACR,CAACivC,EAAMzR,cAAeyR,EAAMlwC,SAAU,QAAa,MAAO,CAC3D,MAAS,+BACR,CAACkwC,EAAMlwC,iBACR,QAAa,KAAY,CAC3B,KAAQ,mBACP,CACDy+B,QAAS,IAAM,CAACkxE,EAAYl6H,QAAUw6H,EAAWx6H,OAASw1C,EAASx1C,UAAYuC,EAAM4qE,QAAS,QAAa,OAAO,QAAY,CAC5H,MAAS,CAAC,6BAA8Be,EAAWxB,uBAAuB1sE,OAC1E,MAAS,CAACi8H,EAAYj8H,MAAOkuE,EAAWvB,sBAAsB3sE,OAC9D,QAAW,KACLg8H,EAAah8H,QACjBw1C,EAASx1C,OAAQ,EAAK,GAEvBuuE,GAAU,UACX,IAEC,CACLmqD,UAEJ,I,eC9QK,MAAMwD,IAAS,EAAArqC,EAAA,IAAgB,CACpC1xF,KAAM,SACN,KAAAq6D,CAAMz8C,EAAGtR,GACP,IAAI,MACFguD,GACEhuD,EACJ,MAAM0vH,GAAO,UACb,MAAO,IAAMA,EAAKn8H,OAASy6D,EAAMzR,WACnC,ICKWozE,IAAqB,EAAAv5D,EAAA,GAAa,CAC7Cu4B,UAAWhhC,QACX5xB,QAASh0B,OACT6nH,SAAUjiE,QACVvgD,MAAO,CACL6T,KAAMlZ,OACNw0C,QAAS,sBAEXvmD,OAAQ,CACNirB,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXujB,WAAY,CACV7+C,KAAM,CAAC9Y,OAAQJ,QACfw0C,aAASp9C,GAEXquE,YAAazlE,OACbkZ,KAAM,CACJA,KAAMlZ,OACNw0C,QAAS,cAER,aACA2tC,SACA,QAAKI,GAAgB,CACtBnb,QAAS,aACP,CAAC,YAAa,UAAW,QAAS,QAAS,WAAY,QAAS,UAAW,UAAW,QAAS,QAAS,aAC3G,aACU0gD,IAAY,UAAmB,CAC1Cn8H,KAAM,YACNoC,MAAO65H,KACP5uD,MAAO,CACL+uD,OAAQtzG,IAAO,EACf,iBAAkBA,IAAO,EACzB,oBAAqBA,IAAO,GAE9B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,gBACJ4hE,IACE,QAAa9rE,IACX,UACJ2mE,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACPqrE,GAAQ,QAAgBrrE,EAAO,aAAc,IAAI0mB,GAAc,MAAPA,EAAc,GAAKzU,OAAOyU,GAAKtf,MAAM,MAAKsf,GAAOA,EAAIne,KAAK,OAClH,EACJzF,IACE,UACE5C,GAAS,SAAS,IAAMmS,OAAOrS,EAAME,UACrC+5H,GAAS,SAAS,IAAMn4H,MAAM5B,EAAOzC,OAAO6qB,KAAK,KACjD4xG,GAAa,SAAK,GAClBjxC,GAAa,UACbuQ,GAAW,QAAI,IACftuF,GAAU,SAAS,IAAMsuF,EAAS/7F,MAAMy8H,EAAWz8H,SACzD,SAAS+oF,IAGP,GAAI2zC,EAAcjvH,EAAQzN,MAAMA,OAE9B,YADAyN,EAAQzN,MAAMA,MAAQ,IAGxB,MAAMgxC,EAAQ48B,EAAM5tE,MAAM6F,QACpB7F,EAAQyN,EAAQzN,MAAMA,MAC5BgxC,EAAMyrF,EAAWz8H,OAASA,EAC1B,IAAIsC,EAAS,KACTm6H,EAAWz8H,MAAQ4tE,EAAM5tE,MAAMyC,OACjCH,EAASsrE,EAAM5tE,MAAMyC,OAAS,EACrBg6H,EAAWz8H,MAAQ,IAAMyC,EAAOzC,QACzCsC,EAAS,QAEXsrE,EAAM5tE,MAAQgxC,EACV1uC,IAAQ,QAAWkpF,EAAWxrF,MAAOsC,EAC3C,CACA,SAASusE,EAAUvpE,GACjB,MAAM0rC,EAAQ48B,EAAM5tE,MAAM6F,QACpB8S,EAAQ8jH,EAAWz8H,MACzB,IAAIsC,EAAS,KACR,CAAC,YAAa,aAAc,YAAa,UAAUkN,SAASlK,EAAEvC,OACnEuC,EAAEioB,iBACY,cAAVjoB,EAAEvC,IACJT,EAAS,OACU,eAAVgD,EAAEvC,IACXT,EAAS,OACA,CAAC,YAAa,UAAUkN,SAASlK,EAAEvC,OAC5CiuC,EAAMyrF,EAAWz8H,OAAS,GAC1B4tE,EAAM5tE,MAAQgxC,EACVyrF,EAAWz8H,MAAQ,GAAe,cAAVsF,EAAEvC,IAC5BT,EAAS,OAET6G,uBAAsB,KACpB4yF,EAAS/7F,MAAM2Y,IAAQ4mE,QAAQ,KAIrCp2E,uBAAsB,KACN,MAAV7G,IACF,QAAWkpF,EAAWxrF,MAAOsC,EAC/B,IAEJ,CACA,SAASq6H,EAAQhkH,EAAOrT,GACtBA,EAAEioB,iBACFjoB,EAAE0rB,kBACF,MAAM4rG,EAAgBt3H,GAAGu3H,eAAe9W,QAAQ,QAAQlgH,MAAM,EAAGpD,EAAOzC,QAAU,GAC9E08H,EAAcE,KAClBhvD,EAAM5tE,MAAQ48H,EAAcjzH,MAAM,IAClCoyF,EAAS/7F,QAAQ2Y,GAAOnS,OAC1B,CACA,SAASsyC,IACP80B,EAAM5tE,MAAQ,EAChB,CACA,SAAS0pE,EAAQpkE,EAAGqT,GAClBm2D,IACA2tD,EAAWz8H,MAAQ2Y,CACrB,CACA,SAASgxD,IACPnjE,IACAi2H,EAAWz8H,OAAS,CACtB,CACA,SAAS08H,EAAc18H,GACrB,MAAsB,WAAfuC,EAAMmrB,MAAqB,UAAU5Y,KAAK9U,EACnD,CAmFA,OAlFA,SAAgB,CACdw3F,OAAQ,CACNhrB,OAAO,SAAS,IAAMjqE,EAAMiqE,QAC5B0V,SAAS,SAAS,IAAM3/E,EAAMiqE,QAC9BkS,WAAW,SAAS,IAAMn8E,EAAMm8E,YAChCn7C,UAAU,SAAS,IAAMhhC,EAAMghC,WAC/BisB,OAAO,SAAS,IAAMjtD,EAAMitD,QAC5BosB,SAAS,SAAS,IAAMr5E,EAAMq5E,YAE/B,CACD3E,QAAQ,KAEV,QAAMrJ,GAAO3kD,IACPA,EAAIxmB,SAAWA,EAAOzC,OAAO4F,EAAK,SAAUqjB,EAAIne,KAAK,IAAI,GAC5D,CACD0uF,MAAM,KAER,QAAMijC,GAAYxzG,IACZA,EAAM,IACV,SAAS,KACP8yE,EAAS/7F,MAAMipB,IAAMs2D,QAAQ,GAC7B,KAEJ,EAAApQ,EAAA,IAAU,KACR,MAAO8Z,EAAWC,IAAc,QAAiBjhC,GACjD,OAAO,QAAa,OAAO,QAAY,CACrC,MAAS,CAAC,cAAe,CACvB,yBAA0B1lD,EAAMimC,SAC/BjmC,EAAMy4D,OACT,MAAS,CAACz4D,EAAM2E,QACf+hF,GAAY,EAAC,QAAa,MAAO,CAClC,IAAOuC,EACP,MAAS,uBACT,MAAS,CAACnd,EAAgBruE,QACzB,CAACw8H,EAAOx8H,MAAM8F,KAAI,CAACiY,EAAGvb,KAAM,QAAa,KAAW,KAAM,CAACD,EAAMimC,SAAiB,IAANhmC,IAAW,QAAa,OAAQ,CAC7G,MAAS,wBACR,CAACD,EAAMimC,WAAW,QAAagvD,GAAQ,CACxC,QAAWtuB,EAAUlpE,OAASuC,EAAM85H,UAAYI,EAAWz8H,QAAUwC,EACrE,IAAOA,GACN,IACEi4D,EACH0rB,YAAQv6E,EACRo9C,QAAS,KACA,QAAa,QAAS,CAC3B,IAAO//B,GAAO8yE,EAAS/7F,MAAMwC,GAAKymB,EAClC,aAAc5jB,EAAE9C,EAAMsX,MAAOrX,EAAI,GACjC,UAAmB,IAANA,GAAWD,EAAM64F,UAC9B,aAAgB,gBAChB,MAAS,CAAC,sBACV,SAAY74F,EAAMghC,SAClB,UAA4B,WAAfhhC,EAAMmrB,KAAoB,UAAY,OACnD,IAAsB,WAAfnrB,EAAMmrB,KAAoB,OAAI9hB,EACrC,UAAa,IACb,YAAerJ,EAAM03E,YACrB,KAAuB,WAAf13E,EAAMmrB,KAAoB,OAASnrB,EAAMmrB,KACjD,MAASkgD,EAAM5tE,MAAMwC,GACrB,QAAWumF,EACX,QAAWzjF,GAAKokE,EAAQpkE,EAAG9C,GAC3B,OAAUmnE,EACV,UAAakF,EACb,QAAW52D,GAAS0kH,EAAQn6H,EAAGyV,IAC9B,aAEA,QAAa,SAAS,QAAY,CACvC,MAAS,oBACT,KAAQ,UACPixE,EAAY,CACb,MAAStb,EAAM5tE,MAAM8K,KAAK,MACxB,OAAO,QAAasiE,GAAA,EAAU,CAChC,WAAa,EACb,gBAAiB,sBACjB,gBAAiB7qE,EAAM+hF,QACvB,YAAc,GACb,CACDt7B,QAAS,IAAM,CAACyR,EAAM0rB,aAAc,QAAa/D,GAAmB,CAClE,MAAkC,mBAAlB7/E,EAAM+hF,aAAwB14E,EAAYrJ,EAAM+hF,QAChE,eAAiB,EACjB,KAAQ,KACR,MAAS,KACR,SACD7pB,EAAMzR,eAAe,IAEpB,CACLxiD,KAAM,KACJu1F,EAAS/7F,OAAOw7D,MAAKotB,GAASA,EAAMpiF,QAAO,EAE7CsoE,MAAO,KACLitB,EAAS/7F,QAAQ,GAAG8uE,OAAO,EAE7Bh2B,QACAowB,YAEJ,IC/NF,SAASlsD,GAAMiM,GACb,OAAOpb,KAAKmP,MAAMnP,KAAKuE,IAAI6W,IAAQpb,KAAK40B,KAAKxZ,EAC/C,CACO,MAAM6zG,IAAqB,EAAAj6D,EAAA,GAAa,CAC7Ch7B,MAAO,CACLna,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,QAER,UACF,aACU+zE,IAAY,UAAmB,CAC1C58H,KAAM,YACNoC,MAAOu6H,KACP,KAAAtiE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,gBACJq1E,EAAe,eACf5I,GACE2I,MACE,UACJ/R,EAAS,YACTh6D,GACE+5D,KAEFp8D,OAAQupH,IACN,WACElnF,GAAO,UAIb,IAAIm5B,GAHJ,SAAY,KACV6S,EAAgB9hF,MAAQ8vE,EAAU9vE,MAAQ81C,EAAK91C,OAAO+qE,GAAG,KAG3D,QAAMmO,GAAgBjwD,IAChBA,GACFgmD,GAAe,EAAA7K,GAAA,IAAgB0d,EAAgB9hF,OAC/CivE,EAAeA,IAAiBvuE,SAASwuE,iBAAmBxuE,SAAWuuE,EACvEA,EAAa5oE,iBAAiB,SAAUiuB,EAAU,CAChDQ,SAAS,IAEXR,KAEA26C,EAAa3oE,oBAAoB,SAAUguB,EAC7C,KAEF,SAAgB,KACd26C,GAAc3oE,oBAAoB,SAAUguB,EAAS,KAEvD,QAAM0oG,EAAe1oG,IACrB,SAAM,IAAMxe,EAAY9V,OAAOyT,QAAQ6gB,GACvC,MAAMuT,GAAQ,SAAS,IACd,GAAI,SAAOtlC,EAAMslC,SAE1B,IAAI0+B,GAAS,EACb,SAASjyC,IACF4kD,EAAel5E,QACpBqJ,qBAAqBk9D,GACrBA,EAAQp9D,uBAAsB,KAC5B,MAAMc,GAAM6rC,EAAK91C,OAAO+qE,KAAKrkE,cAAc,eAC3C,IAAKuD,EAAI,OACT,MAAM+yE,EAAe/N,aAAwBguD,SAAWv8H,SAASiS,gBAAgB0G,aAAe41D,EAAa51D,aACvG6jH,EAAYjuD,aAAwBguD,SAAW15H,OAAOgN,QAAU0+D,EAAa3+D,UAC7EI,EAAMoxE,EAAgB9hF,MAAMmQ,wBAAwBO,IAAMwsH,EAC1DzpH,EAASqC,EAAY9V,MAAMyT,OAC3ButC,EAAStwC,GAAO+C,EAASupE,GAAgB,EACzClwE,EAAYkQ,IAAOkgH,EAAYl8E,GAAUnZ,EAAM7nC,OAC/Cm9H,EAAYtvH,KAAKC,IAAI,GAAI+5B,EAAM7nC,OAASg9E,EAAevpE,GAAUA,GAAUA,GACjFxJ,EAAG/C,MAAMqF,YAAY,YAAa,cAAcO,cAAsBqwH,KAAa,IAEvF,CAWA,OAVA,EAAAhuD,EAAA,IAAU,KAAM,QAAauJ,GAAM,CACjC,MAAS,CAAC,aAAc,CACtB,qBAAsBQ,EAAel5E,OACpCuC,EAAMy4D,OACT,MAASz4D,EAAM2E,MACf,IAAO4uC,EACP,OAAS,EACT,YAAexhB,EACf,OAAUA,GACTmmC,KACI,CAAC,CACV,ICzFW2iE,IAAkB,EAAAv6D,EAAA,GAAa,IACvCslB,GAA2B,CAC5BR,UAAW,YACXC,SAAU,cAEX,UACUy1C,IAAS,UAAmB,CACvCl9H,KAAM,SACNoC,MAAO66H,KACP,KAAA5iE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EASJ,OARA,EAAA0iE,EAAA,IAAU,KACR,MAAMqa,EAAef,GAAkB/Y,YAAYntE,GACnD,OAAO,QAAakmF,IAAmB,QAAYe,EAAc,CAC/D,MAAS,CAAC,UAAWjnF,EAAMy4D,OAC3B,MAASz4D,EAAM2E,MACf,KAAQ,UACNuzD,EAAM,IAEL,CAAC,CACV,ICbW6iE,IAAuB,EAAAz6D,EAAA,GAAa,CAC/CpvD,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,WAERyxC,SACA,QAAKhT,KAAkC,CAAC,aAC3CG,SAAU,CACRl6D,KAAM,MACNs7B,QAAS,YAEX2+B,UAAW,CACTj6D,KAAM,MACNs7B,QAAS,aAEXt7B,KAAM,CACJA,KAAMlZ,OACNw0C,QAAS,UAEV,eACUu0E,IAAc,UAAmB,CAC5Cp9H,KAAM,cACN07D,cAAc,EACdt5D,MAAO+6H,KACP9vD,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAMk/D,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,eAAe+pE,MAC/CiC,GAAQ,QAAgBrrE,EAAO,cAiDrC,OAhDA,EAAA4sE,EAAA,IAAU,KACR,MAAO8Z,EAAW4hB,IAAgB,QAAiB5iD,GAC7Cs0C,EAAazB,GAAOprB,YAAYntE,GAChCinF,EAAef,GAAkB/Y,YAAYntE,GAC7CsX,EAAQ4gD,EAAM5gD,MAAQ4gD,EAAM5gD,MAAM,CACtCA,MAAOtX,EAAMsX,MACbtX,MAAO,CACLw/D,IAAKngE,EAAG5B,SAEPuC,EAAMsX,MACX,OAAO,QAAaihF,IAAQ,QAAY,CACtC,MAAS,CAAC,gBAAiBv4F,EAAMy4D,OACjC,MAASz4D,EAAM2E,OACd+hF,EAAWsT,EAAY,CACxB,WAAc3uB,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,GAAM/tE,EAAG5B,QACP,IACCy6D,EACHzR,QAASpzC,IACP,IAAI,GACFhU,EAAE,WACF81F,EAAU,WACV/R,EAAU,WACVmT,GACEljF,EACJ,OAAO,QAAa,KAAW,KAAM,CAACiE,IAAS,QAAa0tE,GAAQ,CAClE,GAAM3lF,EAAG5B,OACR,CACDgpD,QAAS,IAAM,CAACnvC,MACd,QAAakuE,IAAwB,QAAYyB,EAAc,CACjE,GAAM5nF,EAAG5B,MACT,mBAAoB03F,EAAW13F,MAC/B,eAAkB,SAClB,SAAYuC,EAAMqlF,SAClB,UAAarlF,EAAMolF,UACnB,KAAQplF,EAAMmrB,KACd,SAAYi4D,EAAW3lF,MACvB,SAAY84F,EAAW94F,MACvB,kBAAmB6Z,EAAQjY,EAAG5B,WAAQ4L,EACtC,UAAY,GACXi/F,EAAc,CACf,WAAcj9B,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,IAC7ClV,IAAQ,GAEd,IAEG,CAAC,CACV,IClFW+iE,IAAwB,EAAA36D,EAAA,GAAa,IAC7C8zB,QACA8D,QACAuT,KACHv9C,OAAQ2J,QACRmS,WAAY,CACV7+C,KAAMrpB,MACN2kD,QAAS,IAAM,CAAC,EAAG,KAEpB,gBACUy0E,IAAe,UAAmB,CAC7Ct9H,KAAM,eACNoC,MAAOi7H,KACPhwD,MAAO,CACL,iBAAkBxtE,IAAS,EAC3B,oBAAqBA,IAAS,EAC9B0wD,IAAK1wD,IAAS,EACd44C,MAAO54C,IAAS,GAElB,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,KACL70D,GACE6G,EACJ,MAAMixH,GAAgB,UAChBC,GAAe,UACf5hC,GAAW,WACX,WACJjuB,IACE,UACJ,SAASqhC,EAAe7pG,GACtB,IAAKo4H,EAAc19H,QAAU29H,EAAa39H,MAAO,OACjD,MAAMuvG,EAActtC,GAAU38D,EAAGo4H,EAAc19H,MAAM+qE,IAAKxoE,EAAMykB,WAC1D42G,EAAa37D,GAAU38D,EAAGq4H,EAAa39H,MAAM+qE,IAAKxoE,EAAMykB,WACxDpc,EAAIiD,KAAKuE,IAAIm9F,GACbn4E,EAAIvpB,KAAKuE,IAAIwrH,GACnB,OAAOhzH,EAAIwsB,GAAKxsB,IAAMwsB,GAAKm4E,EAAc,EAAImuB,EAAc19H,MAAM+qE,IAAM4yD,EAAa39H,MAAM+qE,GAC5F,CACA,MAAMgkC,EAAQN,GAASlsG,GACjBqrE,GAAQ,QAAgBrrE,EAAO,kBAAcqJ,GAAW+zE,GACvDA,GAAKl9E,OACHk9E,EAAI75E,KAAI9F,GAAS+uG,EAAMJ,WAAW3uG,KADhB,CAAC,EAAG,MAGzB,eACJyvG,EAAc,UACde,EAAS,IACT1iG,EAAG,IACHC,EAAG,aACHuhG,EAAY,kBACZe,EAAiB,mBACjBD,EAAkB,SAClBztE,EAAQ,kBACR6sE,EAAiB,SACjBnqB,GACEypB,GAAU,CACZvsG,QACAwsG,QACAC,cAAe,KACbppG,EAAK,QAASgoE,EAAM5tE,MAAM,EAE5BkvG,YAAat5F,IACX,IAAI,MACF5V,GACE4V,EACJ,MAAM4uC,EAAWirD,EAAezvG,QAAU09H,EAAc19H,OAAO+qE,IAAM,CAAC/qE,EAAO4tE,EAAM5tE,MAAM,IAAM,CAAC4tE,EAAM5tE,MAAM,GAAIA,IAC3GuC,EAAMkuD,QAAUjM,EAAS,GAAKA,EAAS,KAC1CopB,EAAM5tE,MAAQwkD,GAEhB5+C,EAAK,MAAOgoE,EAAM5tE,MAAM,EAE1BivG,aAActgB,IACZ,IAAI,MACF3uF,GACE2uF,EACJ,MAAO/1C,EAAO3V,GAAQ2qC,EAAM5tE,MACvBuC,EAAMkuD,QAAU7X,IAAU3V,GAAQ2V,IAAU7qC,EAAI/N,QACnDyvG,EAAezvG,MAAQA,EAAQ44C,EAAQ+kF,EAAa39H,OAAO+qE,IAAM2yD,EAAc19H,OAAO+qE,IACtF0kC,EAAezvG,OAAO8uE,SAEpB2gC,EAAezvG,QAAU09H,EAAc19H,OAAO+qE,IAChD6C,EAAM5tE,MAAQ,CAAC6N,KAAKE,IAAI/N,EAAOijC,GAAOA,GAEtC2qC,EAAM5tE,MAAQ,CAAC44C,EAAO/qC,KAAKC,IAAI8qC,EAAO54C,GACxC,EAEFmvG,oBAEI,UACJjmC,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACPotG,GAAa,SAAS,IAAMhtE,EAASirC,EAAM5tE,MAAM,MACjD4yG,GAAY,SAAS,IAAMjwE,EAASirC,EAAM5tE,MAAM,MAgHtD,OA/GA,EAAAmvE,EAAA,IAAU,KACR,MAAMotB,EAAazB,GAAOprB,YAAYntE,GAChCwjF,KAAgBxjF,EAAMsX,OAAS4gD,EAAM5gD,OAAS4gD,EAAMjvC,SAC1D,OAAO,QAAasvE,IAAQ,QAAY,CACtC,MAAS,CAAC,WAAY,iBAAkB,CACtC,yBAA0BrgC,EAAM,eAAiB+1C,EAAUxwG,MAC3D,oBAAqBkpE,EAAUlpE,MAC/B,oBAAqBsvG,EAAatvG,MAClC,qBAAsBuC,EAAMghC,UAC3BuqC,EAAW9tE,MAAOuC,EAAMy4D,OAC3B,MAASz4D,EAAM2E,MACf,IAAO60F,GACNQ,EAAY,CACb,QAAWrzB,EAAUlpE,QACnB,IACCy6D,EACHjvC,QAASu6D,EAAa2G,IAAa,QAAa,KAAW,KAAM,CAACjyB,EAAM5gD,QAAQ6yE,KAAenqF,EAAMsX,OAAQ,QAAa0tE,GAAQ,CAChI,MAAS,kBACT,KAAQhlF,EAAMsX,OACb,WAAQjO,GAAY6uD,EAAMjvC,UAAUkhE,UAAe9gF,EACtDo9C,QAAS6lC,IACP,IAAI,GACFjtF,EAAE,WACF81F,GACE7I,EACJ,OAAO,QAAa,MAAO,CACzB,MAAS,sBACT,YAAgBxJ,EAASrlF,WAA4B4L,EAApBykG,EACjC,oBAAwBhrB,EAASrlF,WAA6B4L,EAArBwkG,GACxC,EAAC,QAAa,QAAS,CACxB,GAAM,GAAGxuG,EAAG5B,cACZ,KAAQuC,EAAMpC,MAAQyB,EAAG5B,MACzB,WAAcuC,EAAMghC,SACpB,WAAchhC,EAAM8iF,SACpB,SAAY,KACZ,MAASzX,EAAM5tE,MAAM,IACpB,OAAO,QAAa,QAAS,CAC9B,GAAM,GAAG4B,EAAG5B,aACZ,KAAQuC,EAAMpC,MAAQyB,EAAG5B,MACzB,WAAcuC,EAAMghC,SACpB,WAAchhC,EAAM8iF,SACpB,SAAY,KACZ,MAASzX,EAAM5tE,MAAM,IACpB,OAAO,QAAa2xG,GAAc,CACnC,IAAOnC,EACP,MAASG,EAAW3vG,MACpB,KAAQ4yG,EAAU5yG,OACjB,CACD,aAAcy6D,EAAM,iBAClB,QAAai2C,GAAc,CAC7B,IAAOgtB,EACP,mBAAoBhmC,EAAW13F,MAC/B,QAAWkpE,GAAaumC,EAAezvG,QAAU09H,EAAc19H,OAAO+qE,IACtE,WAAc6C,EAAM5tE,MAAM,GAC1B,sBAAuBmS,GAAKy7D,EAAM5tE,MAAQ,CAACmS,EAAGy7D,EAAM5tE,MAAM,IAC1D,QAAWsF,IACTwpE,IACA2gC,EAAezvG,MAAQ09H,EAAc19H,OAAO+qE,IAMxC6C,EAAM5tE,MAAM,KAAO4tE,EAAM5tE,MAAM,IAAM4tE,EAAM5tE,MAAM,KAAO+N,EAAI/N,OAASsF,EAAE4mF,gBAAkByxC,EAAa39H,OAAO+qE,MAC/G2yD,EAAc19H,OAAO+qE,IAAIvkE,OACzBm3H,EAAa39H,OAAO+qE,IAAI+D,QAC1B,EAEF,OAAU,KACRtoE,IACAipG,EAAezvG,WAAQ4L,CAAS,EAElC,IAAOmC,EAAI/N,MACX,IAAO4tE,EAAM5tE,MAAM,GACnB,SAAY2vG,EAAW3vG,MACvB,OAAUuC,EAAMijF,QACf,CACD,cAAe/qB,EAAM,kBACnB,QAAai2C,GAAc,CAC7B,IAAOitB,EACP,mBAAoBjmC,EAAW13F,MAC/B,QAAWkpE,GAAaumC,EAAezvG,QAAU29H,EAAa39H,OAAO+qE,IACrE,WAAc6C,EAAM5tE,MAAM,GAC1B,sBAAuBmS,GAAKy7D,EAAM5tE,MAAQ,CAAC4tE,EAAM5tE,MAAM,GAAImS,GAC3D,QAAW7M,IACTwpE,IACA2gC,EAAezvG,MAAQ29H,EAAa39H,OAAO+qE,IAMvC6C,EAAM5tE,MAAM,KAAO4tE,EAAM5tE,MAAM,IAAM4tE,EAAM5tE,MAAM,KAAO8N,EAAI9N,OAASsF,EAAE4mF,gBAAkBwxC,EAAc19H,OAAO+qE,MAChH4yD,EAAa39H,OAAO+qE,IAAIvkE,OACxBk3H,EAAc19H,OAAO+qE,IAAI+D,QAC3B,EAEF,OAAU,KACRtoE,IACAipG,EAAezvG,WAAQ4L,CAAS,EAElC,IAAOgiE,EAAM5tE,MAAM,GACnB,IAAO8N,EAAI9N,MACX,SAAY4yG,EAAU5yG,MACtB,OAAUuC,EAAMijF,QACf,CACD,cAAe/qB,EAAM,kBACnB,GAEN,IAEG,CAAC,CACV,IC7MWojE,IAAmB,EAAAh7D,EAAA,GAAa,CAC3C1iE,KAAMqU,OACNspH,cAAe,CACbpwG,KAAMlZ,OACNw0C,QAAS,kCAEXi8B,YAAazwE,OACbg4D,MAAOh4D,OACPyiF,UAAW78B,QACX72B,SAAU62B,QACV2jE,UAAW,CACTrwG,KAAM,MACNs7B,QAAS,gBAEXg1E,SAAU,CACRtwG,KAAM,MACNs7B,QAAS,eAEXi1E,eAAgB7jE,QAChButC,MAAOvtC,QACP33D,OAAQ,CACNirB,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXq8B,SAAUjrB,QACVmS,WAAY,CACV7+C,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEXk1E,WAAY75H,MACZ85H,kBAAmB,CACjBzwG,KAAMlZ,OACNw0C,QAAS,MACT+Z,UAAW5wD,GAAK,CAAC,MAAO,UAAU3C,SAAS2C,IAE7CqzE,OAAQprB,YACL,YACA0jB,QACAgD,QACAzN,QACA,WACF,WACU+qD,IAAU,UAAmB,CACxCj+H,KAAM,UACNoC,MAAOs7H,KACPrwD,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,EACJpH,IACE,WACE,aACJwoE,IACE,QAAatrE,GACX87H,GAAS,QAAgB97H,EAAO,cAChCkgF,GAAkB,SAAS,KAAM,QAAMr3E,WAAWizH,EAAOr+H,OAAQ,GAAIuC,EAAME,UAC3Es9G,GAAQ,SAAS,KAAM,QAAYnrG,OAAOrS,EAAME,QAAS,KACzD67H,GAAa,SAAS,IAAMve,EAAM//G,MAAMu+H,SAAQpsH,GAAK5P,EAAM07H,eAAiB,CAAC9rH,EAAI,GAAKA,GAAK,CAACA,OAC5FqsH,GAAa,SAAY,GACzBC,GAAY,SAAS,IAAMH,EAAWt+H,MAAM8F,KAAI9F,IACpD,MAAM41H,EAAarzH,EAAMolG,OAAS62B,EAAWx+H,OAAS,EAChD0+H,EAAWj8C,EAAgBziF,OAASA,EACpCipE,EAAYu1D,EAAWx+H,OAASA,EAChC2+H,EAAa/I,EAAa3sD,EAAYy1D,EACtCv9C,EAAOw9C,EAAap8H,EAAMy7H,SAAWz7H,EAAMw7H,UAC3C94C,EAAc1iF,EAAM0iF,aAAe1iF,EAAMiqE,MACzCA,EAAQkyD,GAAYz1D,EAAYgc,EAAc1iF,EAAMiqE,MAC1D,MAAO,CACLkyD,WACAz1D,YACAkY,OACA3U,QACD,MAEGoyD,GAAa,SAAS,IAAM,CAAC,KAAMN,EAAWt+H,OAAO8F,KAAI9F,IAC7D,SAASwpE,IACPg1D,EAAWx+H,MAAQA,CACrB,CACA,SAASypE,IACP+0D,EAAWx+H,OAAS,CACtB,CACA,SAASk0B,IACH3xB,EAAMghC,UAAYhhC,EAAM8iF,WAC5Bg5C,EAAOr+H,MAAQyiF,EAAgBziF,QAAUA,GAASuC,EAAM00F,UAAY,EAAIj3F,EAC1E,CACA,MAAO,CACLwpE,aAAcjnE,EAAMolG,MAAQn+B,OAAe59D,EAC3C69D,aAAclnE,EAAMolG,MAAQl+B,OAAe79D,EAC3CsoB,UACD,MAEG/zB,GAAO,SAAS,IAAMoC,EAAMpC,MAAQ,aAAY,cACtD,SAAS0+H,EAAYjpH,GACnB,IAAI,MACF5V,EAAK,MACL2Y,EAAK,SACLmmH,GAAW,GACTlpH,EACJ,MAAM,aACJ4zD,EAAY,aACZC,EAAY,QACZv1C,GACE0qG,EAAW5+H,MAAM2Y,EAAQ,GACvB/W,EAAK,GAAGzB,EAAKH,SAASwU,OAAOxU,GAAO6K,QAAQ,IAAK,OACjD6iH,EAAW,CACflhD,MAAOiyD,EAAUz+H,MAAM2Y,IAAQ6zD,MAC/B0O,QAAS34E,EAAM24E,QACf33C,SAAUhhC,EAAMghC,SAChB49C,KAAMs9C,EAAUz+H,MAAM2Y,IAAQwoE,KAC9BqE,OAAQjjF,EAAMijF,OACd1zE,KAAMvP,EAAMuP,KACZ8pE,QAAS,SAEX,OAAO,QAAa,KAAW,KAAM,EAAC,QAAa,QAAS,CAC1D,IAAOh6E,EACP,MAAS,CACP,uBAAwBW,EAAM07H,gBAAkBj+H,EAAQ,EAAI,EAC5D,uBAAwBuC,EAAM07H,gBAAkBj+H,EAAQ,IAAM,GAEhE,aAAgBwpE,EAChB,aAAgBC,EAChB,QAAWv1C,GACV,EAAC,QAAa,OAAQ,CACvB,MAAS,oBACR,CAAC7uB,EAAE9C,EAAMu7H,cAAe99H,EAAOuC,EAAME,UAAYq8H,EAAuBrkE,EAAMjjC,KAAOijC,EAAMjjC,KAAK,IAC9FinG,EAAUz+H,MAAM2Y,GACnBpW,MAAOmrH,EACP1tH,QACA2Y,QACA0lH,OAAQ57C,EAAgBziF,SACrB,QAAa27E,IAAM,QAAY,CAClC,aAAct2E,EAAE9C,EAAMu7H,cAAe99H,EAAOuC,EAAME,SACjDirH,GAAW,WARiD9hH,KAQxC,QAAa,QAAS,CAC3C,MAAS,mBACT,KAAQzL,EAAKH,MACb,GAAM4B,EACN,KAAQ,QACR,MAAS5B,EACT,QAAWyiF,EAAgBziF,QAAUA,EACrC,UAAa,EACb,SAAYuC,EAAM8iF,SAClB,SAAY9iF,EAAMghC,UACjB,OACL,CACA,SAASw7F,EAAYC,GACnB,OAAIvkE,EAAM,cAAsBA,EAAM,cAAcukE,GAChDA,EAAWnlH,OAAc,QAAa,OAAQ,KAAM,CAACmlH,EAAWnlH,SAC7D,QAAa,OAAQ,KAAM,EAAC,QAAiB,MACtD,CAsCA,OArCA,EAAAs1D,EAAA,IAAU,KACR,MAAMqhC,IAAcjuG,EAAM27H,YAAYz7H,QAAUg4D,EAAM,cACtD,OAAO,QAAal4D,EAAMuN,IAAK,CAC7B,MAAS,CAAC,WAAY,CACpB,kBAAmBvN,EAAMolG,MACzB,qBAAsBplG,EAAM8iF,UAC3BxX,EAAa7tE,MAAOuC,EAAMy4D,OAC7B,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,EAAC,QAAa61E,EAAa,CACxC,MAAS,EACT,OAAU,EACV,UAAY,GACX,MAAO9e,EAAM//G,MAAM8F,KAAI,CAAC9F,EAAOwC,KAAM,QAAa,MAAO,CAC1D,MAAS,qBACR,CAACguG,GAAyC,QAA5BjuG,EAAM47H,kBAA8BY,EAAY,CAC/D/+H,QACA2Y,MAAOnW,EACPqX,MAAOtX,EAAM27H,aAAa17H,UACvBoJ,GAAW,QAAa,MAAO,CAClC,MAAS,kBACR,CAACrJ,EAAM07H,gBAAiB,QAAa,KAAW,KAAM,EAAC,QAAaY,EAAa,CAClF,MAAS7+H,EAAQ,GACjB,MAAa,EAAJwC,GACR,OAAO,QAAaq8H,EAAa,CAClC,MAAS7+H,EACT,MAAa,EAAJwC,EAAQ,GAChB,SAAU,QAAaq8H,EAAa,CACrC,MAAS7+H,EACT,MAASwC,GACR,QAASguG,GAAyC,WAA5BjuG,EAAM47H,kBAAiCY,EAAY,CAC1E/+H,QACA2Y,MAAOnW,EACPqX,MAAOtX,EAAM27H,aAAa17H,UACvBoJ,QACL,IAEG,CAAC,CACV,ICnMWqzH,GAAY,CACvBp5B,QAAS,WACTq5B,QAAS,qBACTv5B,OAAQ,SACRv3E,OAAQ,SACR+wG,KAAM,iBACN,cAAe,0BACfn9B,KAAM,OACN,cAAe,8EACf,sBAAuB,iBACvB,mBAAoB,YACpBx5D,QAAS,UACT42F,QAAS,UACThzF,MAAO,QACP,YAAa,OACb,mBAAoB,eACpB,qBAAsB,YACtB,4BAA6B,oBAC7B,uBAAwB,YACxB,8BAA+B,oBAC/BizF,OAAQ,SACRC,UAAW,SACXC,UAAW,SACXzsC,SAAU,OACV0sC,MAAO,uDACP,gBAAiB,aACjB,cAAe,YACf,cAAe,sBACf,oBAAqB,qBACrB,YAAa,SACb,cAAe,mBACf9vH,KAAM,QAER,SAAS+vH,GAAQ/xG,GACf,IAAI1mB,EAAW2E,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GACnF,OAAO,QAAa,MAAO,CACzB,MAAS,CAAC,0BAA2B,sBAAsB+hB,MAC1D,CAAC1mB,GACN,CACA,SAAS04H,GAASC,GAEhB,MAAOjyG,EAAMjrB,GAAUk9H,EAAKh2H,MAAM,KAIlC,OAAOtF,MAAM0f,KAAK,CAChBthB,WACCqD,KAAI,IAAM85H,GAAalyG,IAC5B,CACA,SAASkyG,GAAalyG,GACpB,IAAI1mB,EAAW,GACf,IAAK0mB,EAAM,OAAO1mB,EAGlB,MAAM24H,EAAOV,GAAUvxG,GAIvB,GAAIA,IAASiyG,OAER,IAAIjyG,EAAKle,SAAS,KAAM,OAAOqwH,GAASnyG,GAExC,GAAIA,EAAKle,SAAS,KAAM,OAAOkwH,GAAShyG,GAEpCiyG,EAAKnwH,SAAS,KAAMxI,EAAW64H,GAASF,GAExCA,EAAKnwH,SAAS,KAAMxI,EAAW04H,GAASC,GAExCA,GAAM34H,EAASjC,KAAK66H,GAAaD,GAAM,CAChD,MAAO,CAACF,GAAQ/xG,EAAM1mB,GACxB,CACA,SAAS64H,GAASC,GAEhB,OAAOA,EAAMj1H,QAAQ,MAAO,IAAIlB,MAAM,KAAK7D,IAAI85H,GACjD,CACO,MAAMG,IAA2B,EAAAl9D,EAAA,GAAa,CACnDm9D,YAAa5lE,QACboS,MAAOh4D,OACP8vE,QAASlqB,QACT8rD,YAAa,CACXx4F,KAAMlZ,OACNw0C,QAAS,oBAEXt7B,KAAM,CACJA,KAAM,CAAClZ,OAAQnQ,OACf2kD,QAAS,cAER,aACA2xB,SACA,WACF,mBACUslD,IAAkB,UAAmB,CAChD9/H,KAAM,kBACNoC,MAAOw9H,KACP,KAAAvlE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,uBACJigE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,gBACJ8rE,IACE,QAAa9rE,IACX,iBACJu4E,GACED,GAAat4E,IACX,aACJsrE,IACE,QAAatrE,IACX,EACJ8C,IACE,UACEgtE,GAAQ,SAAS,IAAMutD,IAAa,QAAYr9H,EAAMmrB,MAAM5iB,KAAK,QAevE,OAdA,EAAAqkE,EAAA,IAAU,KACR,MAAM+wD,GAAazlE,EAAMzR,SAAWzmD,EAAM+hF,QACpC67C,EAAe59H,EAAMy9H,cAAgBE,EAAY,CAAC,EAAI,CAC1DE,SAAU,SACVrhB,UAAW15G,EAAE9C,EAAM2jH,aACnBjyE,KAAM,SAER,OAAO,QAAa,OAAO,QAAY,CACrC,MAAS,CAAC,oBAAqB,CAC7B,iCAAkC1xC,EAAMy9H,aACvCnyD,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO86E,EAAiB96E,OACtE,MAAS,CAAC2sE,EAAsB3sE,MAAOkgI,EAAY7xD,EAAgBruE,MAAQ,CAAC,IAC3EmgI,GAAe,CAACD,EAAY7tD,EAAMryE,MAAQy6D,EAAMzR,aAAa,IAE3D,CAAC,CACV,IC1IWq3E,IAAkB,UAAmB,CAChDlgI,KAAM,kBACNoC,MAAO08E,KACPzR,MAAO,CACL,iBAAkBvkD,IAAO,GAE3B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM6zH,EAAiBphD,GAAa38E,EAAOmoF,IAC3C,MAAO,IAAMjwB,EAAMzR,UAAU,CAC3Bo2B,WAAYkhD,EAAelhD,WAAWp/E,MACtCu/E,OAAQ+gD,EAAe/gD,OACvB/6C,OAAQ87F,EAAe97F,OACvBw6C,cAAeshD,EAAethD,cAAch/E,OAEhD,ICCF,SAASugI,GAAaC,GACpB,MAAMzzH,GAAO,QAAWyzH,KACxB,IAAIjnD,GAAS,EACb,SAAShkB,IACPkrE,cAAclnD,EAChB,CACA,SAASzgC,IACPyc,KACA,SAAS,IAAMxoD,EAAK/M,MAAQwgI,KAC9B,CACA,SAAS5nF,EAAM3uC,GACb,MAAM/C,EAAQ+C,EAAKrB,iBAAiBqB,GAAM,CACxC4c,mBAAoB,IAEhBwiF,EAAkD,IAAvCj+F,WAAWlE,EAAM2f,qBAA8B,IAEhE,GADA0uC,IACIxoD,EAAK/M,OAAS,EAAG,OACrB,MAAMgN,EAAY86D,YAAY99D,MAC9BuvE,EAAQh2E,OAAOm9H,aAAY,KACzB,MAAMC,EAAU74D,YAAY99D,MAAQgD,EAAYq8F,EAChDt8F,EAAK/M,MAAQ6N,KAAKC,IAAI0yH,IAAiBG,EAAS,GAC5C5zH,EAAK/M,OAAS,GAAGu1D,GAAO,GAC3B8zC,EACL,CAEA,OADA,QAAe9zC,GACR,CACLA,QACAxoD,OACA6rC,QACAE,QAEJ,CACO,MAAM8nF,IAAqB,EAAA/9D,EAAA,GAAa,CAC7Cg+D,UAAWzmE,QACX1qD,KAAM8E,OACN+kE,MAAO,CAACnf,QAAS5lD,QACjBurB,QAAS,CACPrS,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,KAEXwqC,SAAUp5B,WACP0oB,GAAkB,CACnBv7E,SAAU,cAETo9E,QACAhN,QACAyG,SACA,cACA,SAAK,QAAkB,CACxBh3D,WAAY,0BACV,CAAC,aAAc,mBAAoB,QAAS,oBAC/C,aACU05G,IAAY,UAAmB,CAC1C3gI,KAAM,YACNoC,MAAOq+H,KACPpzD,MAAO,CACL,oBAAqBr7D,IAAK,GAE5B,KAAAqoD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM+oC,GAAW,QAAgBjzC,EAAO,eAClC,gBACJsiF,GACED,GAAYriF,IACV,QACJgsE,IACE,WACE,aACJV,IACE,QAAatrE,IACX,aACJg8E,EAAY,YACZC,EAAW,eACXF,GACED,GAAW97E,IACT,eACJw1E,GACED,GAAWv1E,GACTw+H,EAAYR,IAAa,IAAM3rH,OAAOrS,EAAMw9B,WAC5CyvC,GAAU,UACVwxD,GAAW,UACXpL,GAAa,SAAW,GACxBzmG,GAAS,QAAW,GACpBwhD,GAAa,UACbswD,GAAY,QAAOjxD,OAAkBpkE,IAC3C,SAAe,MAAQq1H,IAAW,KAChC,MAAMzwD,EAASD,KACf,SAAY,KACVI,EAAW3wE,MAAQwwE,EAAOG,WAAW3wE,KAAK,GAC1C,KAEJ,QAAMw1C,EAAUk0D,IAChB,SAAM,IAAMnnG,EAAMw9B,SAAS2pE,IAC3B,SAAU,KACJl0D,EAASx1C,OAAO0pG,GAAc,IAEpC,IAAIw3B,GAAiB,EACrB,SAASx3B,IACPq3B,EAAUjoF,QACVv1C,OAAO0F,aAAai4H,GACpB,MAAMnhG,EAAUnrB,OAAOrS,EAAMw9B,SAC7B,IAAKyV,EAASx1C,QAAsB,IAAb+/B,EAAgB,OACvC,MAAMrxB,GAAU,QAAWsyH,EAAShhI,OACpC+gI,EAAUnoF,MAAMlqC,GAChBwyH,EAAgB39H,OAAOyF,YAAW,KAChCwsC,EAASx1C,OAAQ,CAAK,GACrB+/B,EACL,CACA,SAAS92B,IACP83H,EAAUjoF,QACVv1C,OAAO0F,aAAai4H,EACtB,CACA,SAASC,IACPvL,EAAW51H,OAAQ,EACnBiJ,GACF,CACA,SAASm4H,IACPxL,EAAW51H,OAAQ,EACnB0pG,GACF,CACA,SAAS0wB,EAAaniH,GACpBkX,EAAOnvB,MAAQiY,EAAM+V,QAAQ,GAAGmb,OAClC,CACA,SAASmxF,EAAWriH,GACdpK,KAAKuE,IAAI+c,EAAOnvB,MAAQiY,EAAMiY,eAAe,GAAGiZ,SAAW,KAC7DqM,EAASx1C,OAAQ,EAErB,CACA,SAASguE,IACH4nD,EAAW51H,OAAOohI,GACxB,CACA,MAAMC,GAAkB,SAAS,IACxB9+H,EAAMgF,SAASoC,MAAM,KAAKusD,QAAO,CAAC8vD,EAAKsb,KAC5Ctb,EAAI,eAAesb,MAAS,EACrBtb,IACN,CAAC,KA+DN,OA7DA,EAAA72C,EAAA,IAAU,KACR,MAAMM,EAAerC,GAAA,EAASsC,YAAYntE,GACpCwrE,KAAgBtT,EAAMzR,SAAWyR,EAAM/qD,MAAQnN,EAAMmN,MAC3D,OAAO,QAAa09D,GAAA,GAAU,QAAY,CACxC,IAAOoC,EACP,MAAS,CAAC,aAAc,CACtB,qBAAsBh6B,EAASx1C,MAC/B,yBAA0BuC,EAAMs+H,YAAct+H,EAAMixF,SACpD,sBAAuBjxF,EAAMg3E,MAC7B,uBAAwBh3E,EAAMixF,UAC7B6tC,EAAgBrhI,MAAO6kF,EAAgB7kF,MAAOuC,EAAMy4D,OACvD,MAAS,CAAC2V,EAAW3wE,MAAOuC,EAAM2E,QACjCuoE,EAAc,CACf,WAAcj6B,EAASx1C,MACvB,sBAAuB2vE,GAAUn6B,EAASx1C,MAAQ2vE,EAClD,cAAgB,QAAW,CACzB3U,MAAO,CAAC,sBAAuB6S,EAAa7tE,MAAOu+E,EAAav+E,MAAO+3E,EAAe/3E,MAAOs+E,EAAet+E,OAC5GkH,MAAO,CAACs3E,EAAYx+E,OACpBmhI,iBACAC,kBACC3xD,EAAazC,cAChB,YAAc,EACd,kBAAoB,EACpB,OAAS,EACT,eAAkB,OAClB,qBAAuB,EACvB,oBAAuBotD,EACvB,WAAcE,EACd,aAAgBtsD,GACfO,GAAU,CACXvlB,QAAS,IAAM,CAACk1B,IAAY,EAAO,cAAe37E,EAAMg3E,QAAUq8C,EAAW51H,QAAS,QAAa,MAAO,CACxG,IAAO,QACP,MAAS,qBACR,EAAC,QAAa0jF,GAAiB,CAChC,IAAOs9C,EACP,MAAgC,kBAAhBz+H,EAAMg3E,MAAqBh3E,EAAMg3E,MAAQ,OACzD,IAAOh3E,EAAMw9B,QACb,cAAeghG,EAAUh0H,KAAK/M,OAC7B,QAAS+tE,IAAc,QAAa,MAAO,CAC5C,IAAO,UACP,MAAS,sBACT,KAAQ,SACR,YAAa,UACZ,CAACtT,EAAM/qD,UAAYnN,EAAMmN,KAAM+qD,EAAMzR,cAAeyR,EAAMorC,UAAW,QAAa3uB,GAAmB,CACtG,SAAY,CACVyE,KAAM,CACJC,QAAS,OACT4J,QAAQ,EACRF,MAAM,KAGT,CACDt8B,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,uBACR,CAACyR,EAAMorC,QAAQ,CAChBrwD,mBAGJ8yB,UAAW7N,EAAM6N,WACjB,KAEG,EAAAsH,GAAA,GAAY,CAAC,EAAGJ,EACzB,IC7NW+xD,IAAgB,EAAA1+D,EAAA,GAAa,CACxC2+D,SAAUpnE,QACVqnE,iBAAkB,CAAC7sH,OAAQJ,QAC3BktH,eAAgB,CACdh0G,KAAMlZ,OACNw0C,QAAS,QAEXwjB,MAAOh4D,OACP2jE,SAAU,CACRzqD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjB24E,kBAAmB,CACjBj0G,KAAMlZ,OACNuuD,UAAW95C,GAAO,CAAC,MAAO,SAAU,OAAQ,SAASzZ,SAASyZ,GAC9D+/B,QAAS,OAEXv1C,OAAQ,CACNia,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,IAEX44E,OAAQ,CACNl0G,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjB64E,UAAW,CACTn0G,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,GAEX84E,UAAW,CACTp0G,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,GAEXpnD,GAAI4S,OACJ8/E,UAAW,CACT5mE,KAAMlZ,OACNw0C,QAAS,SAEXujB,WAAY,CACV7+C,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBj7C,IAAK,CAACyG,OAAQI,QACd9G,IAAK,CAAC0G,OAAQI,QACdmtH,QAAS,CACPr0G,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,GAEXg5E,WAAY5nE,QACZ6nE,OAAQ7nE,QACR7mD,MAAO,CACLma,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,MAEV,QCnDUk5E,IAAoB,EAAAr/D,EAAA,GAAa,CAC5Cs/D,cAAe/nE,WACZmnE,MACF,YACUa,IAAW,UAAmB,CACzCjiI,KAAM,WACNoC,MAAO2/H,KACP,KAAA1nE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMk/D,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,WAAW+pE,MAC3C81D,GAAmB,SAAS,IAAM7sH,OAAOrS,EAAMk/H,mBAAqB,MACpEjxB,GAAY,SAAS,IAClBp2C,QAAQ73D,EAAMy/H,YAAcz/H,EAAMq/H,OAAOn/H,OAAS,KAAOg4D,GAAO5gD,SAEnEioH,GAAY,SAAS,IAAM12H,WAAW7I,EAAMu/H,YAAc,IAC1DniB,GAAa,SAAS,IAAM9xG,KAAKC,IAAIvL,EAAMgqE,WAAW9pE,OAASq/H,EAAU9hI,MAAO4U,OAAOrS,EAAMgR,UAC7F8uH,GAAW,SAAS,KACjB,CACLh2F,KAAM,EACNE,KAAMozE,EAAW3/G,MACjBssC,KAAM,EACNE,KAAMhzB,SAASjX,EAAMkR,OAAQ,QAG3B4+D,GAAQ,SAAS,IAAM9vE,EAAMgqE,WAAWzmE,KAAI0xB,IAAQ,QAAoBA,EAAMj1B,EAAM+xF,UAAW98D,OACrG,SAAS8qG,EAAQrrE,EAAQorE,GACvB,MAAM,KACJh2F,EAAI,KACJE,EAAI,KACJD,EAAI,KACJE,GACE61F,EACEE,EAActrE,EAAOx0D,OAC3B,IAAI+/H,EAAwB,MAAbjgI,EAAMuL,IAAc8G,OAAOrS,EAAMuL,KAAOD,KAAKC,OAAOmpD,GAC/DwrE,EAAwB,MAAblgI,EAAMwL,IAAc6G,OAAOrS,EAAMwL,KAAOF,KAAKE,OAAOkpD,GAC/DwrE,EAAW,GAAkB,MAAblgI,EAAMwL,MAAa00H,EAAW,GAC9CD,EAAW,GAAkB,MAAbjgI,EAAMuL,MAAa00H,EAAW,GAClD,MAAME,EAAQn2F,EAAOg2F,EACfI,GAASn2F,EAAOF,IAASk2F,EAAWC,GAAY,GAChDG,EAAWp2F,EAAO3+B,KAAKuE,IAAIqwH,EAAWE,GAC5C,OAAO1rE,EAAOnxD,KAAI,CAAC9F,EAAO2Y,KACxB,MAAMlF,EAAS5F,KAAKuE,IAAIuwH,EAAQ3iI,GAChC,MAAO,CACL8lB,EAAGumB,EAAO1zB,EAAQ+pH,EAClB38G,EAAG68G,EAAWnvH,KAAWzT,EAAQ,GAAKyT,EACtCA,SACAzT,QACD,GAEL,CACA,MAAM6iI,GAAe,SAAS,KAC5B,MAAMjB,EAAS,GACT7qG,EAASurG,EAAQjwD,EAAMryE,MAAOqiI,EAASriI,OACvCgM,EAAM+qB,EAAOt0B,OACnB,IAAK,IAAID,EAAI,EAAGo/H,EAAOn/H,OAASuJ,EAAKxJ,IAAK,CACxC,MAAMg1B,EAAOT,EAAOv0B,GACpB,IAAIxC,EAAQuC,EAAMq/H,OAAOp/H,GACpBxC,IACHA,EAAwB,kBAATw3B,EAAoBA,EAAKx3B,MAAQw3B,GAElDoqG,EAAO78H,KAAK,CACV+gB,EAAG0R,EAAK1R,EACR9lB,MAAOwU,OAAOxU,IAElB,CACA,OAAO4hI,CAAM,IAETkB,GAAO,SAAS,IAAMR,EAAQjwD,EAAMryE,MAAOqiI,EAASriI,SACpDyvC,GAAU,SAAS,KAAO5hC,KAAKuE,IAAI0wH,EAAK9iI,MAAM,GAAG8lB,EAAIg9G,EAAK9iI,MAAM,GAAG8lB,GAAKg8G,EAAU9hI,OAAS,KACjG,EAAAmvE,EAAA,IAAU,KACR,MAAM4zD,EAAgBxgI,EAAM41E,SAAStyE,QAAQpD,OAAgBF,EAAM41E,SAAStyE,QAAQm6D,UAA9B,CAAC,IACvD,OAAO,QAAa,MAAO,CACzB,QAAW,SACV,EAAC,QAAa,OAAQ,KAAM,EAAC,QAAa,iBAAkB,CAC7D,GAAMp+D,EAAG5B,MACT,cAAiB,iBACjB,GAAkC,SAA5BuC,EAAMo/H,kBAA+B,OAAS,IACpD,GAAkC,QAA5Bp/H,EAAMo/H,kBAA8B,OAAS,IACnD,GAAkC,UAA5Bp/H,EAAMo/H,kBAAgC,OAAS,IACrD,GAAkC,WAA5Bp/H,EAAMo/H,kBAAiC,OAAS,KACrD,CAACoB,EAAaj9H,KAAI,CAAC0mE,EAAO7zD,KAAU,QAAa,OAAQ,CAC1D,OAAUA,EAAQ9K,KAAKC,IAAIi1H,EAAatgI,OAAS,EAAG,GACpD,aAAc+pE,GAAS,gBACtB,aAAY,QAAa,WAAY,CACtC,GAAM,GAAG5qE,EAAG5B,cACX,CAAC8iI,EAAK9iI,MAAM8F,KAAI0xB,IAAQ,QAAa,OAAQ,CAC9C,EAAKA,EAAK1R,EAAI2pB,EAAQzvC,MACtB,EAAKw3B,EAAKzR,EACV,MAAS+7G,EAAU9hI,MACnB,OAAUw3B,EAAK/jB,OACf,GAA8B,kBAAjBlR,EAAM0/H,OAAsB1/H,EAAM0/H,OAAS1/H,EAAM0/H,OAAS,EAAI,EAC3E,GAA8B,kBAAjB1/H,EAAM0/H,OAAsB1/H,EAAM0/H,OAAS1/H,EAAM0/H,OAAS,EAAI,GAC1E,CAAC1/H,EAAMi/H,WAAY,QAAa,KAAW,KAAM,EAAC,QAAa,UAAW,CAC3E,cAAiB,IACjB,KAAQhqG,EAAKzR,EAAIyR,EAAK/jB,OACtB,GAAM+jB,EAAKzR,EACX,IAAO,GAAG07G,EAAiBzhI,UAC3B,KAAQ,UACP,OAAO,QAAa,UAAW,CAChC,cAAiB,SACjB,KAAQ,IACR,GAAMw3B,EAAK/jB,OACX,IAAO,GAAGguH,EAAiBzhI,UAC3B,KAAQ,UACP,cAAcwwG,EAAUxwG,QAAS,QAAa,IAAK,CACpD,IAAO,SACP,MAAS,CACPgjI,WAAY,SACZC,iBAAkB,eAClBp4G,KAAM,iBAEP,CAACg4G,EAAa7iI,MAAM8F,KAAI,CAAC0xB,EAAMh1B,KAAM,QAAa,OAAQ,CAC3D,EAAKg1B,EAAK1R,EAAI2pB,EAAQzvC,MAAQ8hI,EAAU9hI,MAAQ,EAChD,EAAKwZ,SAASjX,EAAMkR,OAAQ,IAAM,GAAK+F,SAASjX,EAAMs/H,UAAW,KAAO,MACxE,YAAajtH,OAAOrS,EAAMs/H,YAAc,GACvC,CAACpnE,EAAM5gD,QAAQ,CAChBlB,MAAOnW,EACPxC,MAAOw3B,EAAKx3B,SACRw3B,EAAKx3B,aAAY,QAAa,IAAK,CACvC,YAAa,QAAQ4B,EAAG5B,cACxB,KAAQ,QAAQ4B,EAAG5B,UAClB,EAAC,QAAa,OAAQ,CACvB,EAAK,EACL,EAAK,EACL,MAAS6N,KAAKC,IAAIvL,EAAMgqE,WAAW9pE,OAASq/H,EAAU9hI,MAAO4U,OAAOrS,EAAMgR,QAC1E,OAAUhR,EAAMkR,QACf,SAAS,GAEhB,IChIK,SAAS,GAAQsjB,EAAQ40E,GAC9B,IAAI9gF,EAAOlf,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,IAAmBA,UAAU,GACtE8H,EAAS9H,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GACjF,GAAsB,IAAlBorB,EAAOt0B,OAAc,MAAO,GAChC,MAAMm2C,EAAQ7hB,EAAO5nB,QACfuhD,EAAM35B,EAAOA,EAAOt0B,OAAS,GACnC,OAAQooB,EAAO,IAAI+tB,EAAM9yB,KAAKrS,EAASmlC,EAAM9yB,EAAI,MAAM8yB,EAAM9yB,KAAK8yB,EAAM7yB,IAAM,IAAI6yB,EAAM9yB,KAAK8yB,EAAM7yB,KAAOgR,EAAOjxB,KAAI,CAACkxB,EAAOre,KAC3H,MAAMxU,EAAO4yB,EAAOpe,EAAQ,GACtB5H,EAAOgmB,EAAOpe,EAAQ,IAAMigC,EAC5BsqF,EAAc/+H,GAAQg/H,GAAeh/H,EAAM6yB,EAAOjmB,GACxD,IAAK5M,GAAQ++H,EACX,MAAO,IAAIlsG,EAAMlR,KAAKkR,EAAMjR,IAE9B,MAAM4D,EAAY9b,KAAKE,IAAIq1H,GAAYryH,EAAMimB,GAAQosG,GAAYj/H,EAAM6yB,IACjEqsG,EAAsB15G,EAAY,EAAIgiF,EACtC23B,EAAiBD,EAAsB15G,EAAY,EAAIgiF,EACvDtmC,EAASk+D,GAAOxyH,EAAMimB,EAAOssG,GAC7Bh+D,EAAQi+D,GAAOp/H,EAAM6yB,EAAOssG,GAClC,MAAO,IAAIj+D,EAAOv/C,KAAKu/C,EAAOt/C,KAAKiR,EAAMlR,KAAKkR,EAAMjR,KAAKu/C,EAAMx/C,KAAKw/C,EAAMv/C,GAAG,IAC5Ejb,KAAK,KAAO+f,EAAO,IAAI6lC,EAAI5qC,KAAKrS,EAASmlC,EAAM9yB,EAAI,MAAQ,GAChE,CACA,SAAS,GAAI9lB,GACX,OAAOwZ,SAASxZ,EAAO,GACzB,CAOO,SAASmjI,GAAeK,EAAIC,EAAIC,GACrC,OAAO,GAAIF,EAAG19G,EAAI49G,EAAG59G,KAAO,GAAI,EAAI29G,EAAG39G,IAAM,GAAI09G,EAAGz9G,EAAI29G,EAAG39G,KAAO,GAAI,EAAI09G,EAAG19G,EAC/E,CACO,SAASq9G,GAAYK,EAAIC,GAC9B,OAAO71H,KAAK4iB,KAAK5iB,KAAK41G,IAAIigB,EAAG59G,EAAI29G,EAAG39G,EAAG,GAAKjY,KAAK41G,IAAIigB,EAAG39G,EAAI09G,EAAG19G,EAAG,GACpE,CACO,SAASw9G,GAAO73H,EAAIqY,EAAM4nF,GAC/B,MAAMg4B,EAAS,CACb79G,EAAGpa,EAAGoa,EAAI/B,EAAK+B,EACfC,EAAGra,EAAGqa,EAAIhC,EAAKgC,GAEXtjB,EAASoL,KAAK4iB,KAAKkzG,EAAO79G,EAAI69G,EAAO79G,EAAI69G,EAAO59G,EAAI49G,EAAO59G,GAC3D69G,EAAa,CACjB99G,EAAG69G,EAAO79G,EAAIrjB,EACdsjB,EAAG49G,EAAO59G,EAAItjB,GAEhB,MAAO,CACLqjB,EAAG/B,EAAK+B,EAAI89G,EAAW99G,EAAI6lF,EAC3B5lF,EAAGhC,EAAKgC,EAAI69G,EAAW79G,EAAI4lF,EAE/B,CCpDO,MAAMk4B,IAAsB,EAAAhhE,EAAA,GAAa,CAC9Ch4C,KAAMuvC,WACHmnE,MACF,cACUuC,IAAa,UAAmB,CAC3C3jI,KAAM,aACNoC,MAAOshI,KACP,KAAArpE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMk/D,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,aAAa+pE,MAC7C81D,GAAmB,SAAS,IAAM7sH,OAAOrS,EAAMk/H,oBAAsBl/H,EAAMsoB,KAAO,IAAM,OACxFk5G,GAAa,QAAI,GACjB7+G,GAAO,QAAI,MACjB,SAAS8+G,EAAU/sE,EAAQorE,GACzB,MAAM,KACJh2F,EAAI,KACJE,EAAI,KACJD,EAAI,KACJE,GACE61F,EACEE,EAActrE,EAAOx0D,OACrB+/H,EAAwB,MAAbjgI,EAAMuL,IAAc8G,OAAOrS,EAAMuL,KAAOD,KAAKC,OAAOmpD,GAC/DwrE,EAAwB,MAAblgI,EAAMwL,IAAc6G,OAAOrS,EAAMwL,KAAOF,KAAKE,OAAOkpD,GAC/DyrE,GAASn2F,EAAOF,IAASk2F,EAAc,GACvCI,GAASn2F,EAAOF,IAASk2F,EAAWC,GAAY,GACtD,OAAOxrE,EAAOnxD,KAAI,CAAC9F,EAAO2Y,KACjB,CACLmN,EAAGumB,EAAO1zB,EAAQ+pH,EAClB38G,EAAGymB,GAAQxsC,EAAQyiI,GAAYE,EAC/B3iI,WAGN,CACA,MAAMwwG,GAAY,SAAS,IAClBp2C,QAAQ73D,EAAMy/H,YAAcz/H,EAAMq/H,OAAOn/H,OAAS,KAAOg4D,GAAO5gD,SAEnEioH,GAAY,SAAS,IAClB12H,WAAW7I,EAAMu/H,YAAc,IAElCniB,GAAa,SAAS,IAAM/qG,OAAOrS,EAAMgR,SACzC8uH,GAAW,SAAS,KACxB,MAAMN,EAAUntH,OAAOrS,EAAMw/H,SAC7B,MAAO,CACL11F,KAAM01F,EACNx1F,KAAMozE,EAAW3/G,MAAQ+hI,EACzBz1F,KAAMy1F,EACNv1F,KAAMhzB,SAASjX,EAAMkR,OAAQ,IAAMsuH,EACpC,IAEG1vD,GAAQ,SAAS,IAAM9vE,EAAMgqE,WAAWzmE,KAAI0xB,IAAQ,QAAoBA,EAAMj1B,EAAM+xF,UAAW98D,OAC/FqrG,GAAe,SAAS,KAC5B,MAAMjB,EAAS,GACT7qG,EAASitG,EAAU3xD,EAAMryE,MAAOqiI,EAASriI,OACzCgM,EAAM+qB,EAAOt0B,OACnB,IAAK,IAAID,EAAI,EAAGo/H,EAAOn/H,OAASuJ,EAAKxJ,IAAK,CACxC,MAAMg1B,EAAOT,EAAOv0B,GACpB,IAAIxC,EAAQuC,EAAMq/H,OAAOp/H,GACpBxC,IACHA,EAAwB,kBAATw3B,EAAoBA,EAAKx3B,MAAQw3B,GAElDoqG,EAAO78H,KAAK,CACV+gB,EAAG0R,EAAK1R,EACR9lB,MAAOwU,OAAOxU,IAElB,CACA,OAAO4hI,CAAM,IA+Bf,SAASqC,EAAQp5G,GACf,OAAO,GAASm5G,EAAU3xD,EAAMryE,MAAOqiI,EAASriI,OAAQuC,EAAM0/H,OAAS,EAAIrtH,OAAOrS,EAAM0/H,QAASp3G,EAAMrR,SAASjX,EAAMkR,OAAQ,IAChI,EA/BA,SAAM,IAAMlR,EAAMgqE,aAAYnF,UAE5B,SADM,WACD7kE,EAAMi/H,WAAat8G,EAAKllB,MAAO,OACpC,MAAMkkI,EAAUh/G,EAAKllB,MACfyC,EAASyhI,EAAQC,iBAClB5hI,EAAMsoB,MAaTq5G,EAAQh9H,MAAMy4C,gBAAkB,gBAChCukF,EAAQh9H,MAAMkgB,WAAa,OAC3B88G,EAAQh9H,MAAMwD,UAAY,YAC1Bw5H,EAAQ/zH,wBACR+zH,EAAQh9H,MAAMkgB,WAAa,aAAaq6G,EAAiBzhI,WAAWuC,EAAMm/H,iBAC1EwC,EAAQh9H,MAAMwD,UAAY,cAhB1Bw5H,EAAQh9H,MAAMk9H,gBAAkB,GAAG3hI,IACnCyhI,EAAQh9H,MAAMm9H,iBAAmB,GAAG5hI,IAGpCyhI,EAAQ/zH,wBAGR+zH,EAAQh9H,MAAMkgB,WAAa,qBAAqBq6G,EAAiBzhI,WAAWuC,EAAMm/H,iBAClFwC,EAAQh9H,MAAMm9H,iBAAmB,KAUnCN,EAAW/jI,MAAQyC,CAAM,GACxB,CACDwjE,WAAW,KAKb,EAAAkJ,EAAA,IAAU,KACR,MAAM4zD,EAAgBxgI,EAAM41E,SAAStyE,QAAQpD,OAAgBF,EAAM41E,SAAStyE,QAAQm6D,UAA9B,CAAC,IACvD,OAAO,QAAa,MAAO,CACzB,QAAW,QACX,eAAgB50D,WAAW7I,EAAMu/H,YAAc,GAC9C,EAAC,QAAa,OAAQ,KAAM,EAAC,QAAa,iBAAkB,CAC7D,GAAMlgI,EAAG5B,MACT,cAAiB,iBACjB,GAAkC,SAA5BuC,EAAMo/H,kBAA+B,OAAS,IACpD,GAAkC,QAA5Bp/H,EAAMo/H,kBAA8B,OAAS,IACnD,GAAkC,UAA5Bp/H,EAAMo/H,kBAAgC,OAAS,IACrD,GAAkC,WAA5Bp/H,EAAMo/H,kBAAiC,OAAS,KACrD,CAACoB,EAAaj9H,KAAI,CAAC0mE,EAAO7zD,KAAU,QAAa,OAAQ,CAC1D,OAAUA,EAAQ9K,KAAKC,IAAIi1H,EAAatgI,OAAS,EAAG,GACpD,aAAc+pE,GAAS,gBACtB,YAAYgkC,EAAUxwG,QAAS,QAAa,IAAK,CAClD,IAAO,SACP,MAAS,CACPgjI,WAAY,SACZC,iBAAkB,eAClBp4G,KAAM,iBAEP,CAACg4G,EAAa7iI,MAAM8F,KAAI,CAAC0xB,EAAMh1B,KAAM,QAAa,OAAQ,CAC3D,EAAKg1B,EAAK1R,EAAIg8G,EAAU9hI,MAAQ,EAAI8hI,EAAU9hI,MAAQ,EACtD,EAAKwZ,SAASjX,EAAMkR,OAAQ,IAAM,GAAK+F,SAASjX,EAAMs/H,UAAW,KAAO,MACxE,YAAajtH,OAAOrS,EAAMs/H,YAAc,GACvC,CAACpnE,EAAM5gD,QAAQ,CAChBlB,MAAOnW,EACPxC,MAAOw3B,EAAKx3B,SACRw3B,EAAKx3B,aAAY,QAAa,OAAQ,CAC1C,IAAOklB,EACP,EAAK++G,EAAQ1hI,EAAMsoB,MACnB,KAAQtoB,EAAMsoB,KAAO,QAAQjpB,EAAG5B,SAAW,OAC3C,OAAUuC,EAAMsoB,KAAO,OAAS,QAAQjpB,EAAG5B,UAC1C,MAAOuC,EAAMsoB,OAAQ,QAAa,OAAQ,CAC3C,EAAKo5G,GAAQ,GACb,KAAQ,OACR,OAAU1hI,EAAMiqE,OAASjqE,EAAM41E,WAAW,IACzC,OAAO,GAEd,IC3IWmsD,IAAsB,EAAAzhE,EAAA,GAAa,CAC9Cn1C,KAAM,CACJA,KAAMlZ,OACNw0C,QAAS,YAERk5E,QACA2B,MACF,cACUU,IAAa,UAAmB,CAC3CpkI,KAAM,aACNoC,MAAO+hI,KACP,KAAA9pE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,iBACJ80E,EAAgB,gBAChBC,IACE,UAAa,QAAMj/E,EAAO,UACxBiuG,GAAY,SAAS,IAClBp2C,QAAQ73D,EAAMy/H,YAAcz/H,EAAMq/H,OAAOn/H,OAAS,KAAOg4D,GAAO5gD,SAEnE2qH,GAAc,SAAS,KAC3B,IAAI/wH,EAAS+F,SAASjX,EAAMkR,OAAQ,IAEpC,OADI+8F,EAAUxwG,QAAOyT,GAA0C,IAAhC+F,SAASjX,EAAMs/H,UAAW,KAClDpuH,CAAM,KAEf,EAAA07D,EAAA,IAAU,KACR,MAAM2W,EAAqB,UAAfvjF,EAAMmrB,KAAmBo2G,GAAa1B,GAC5CqC,EAA2B,UAAfliI,EAAMmrB,KAAmBo2G,GAAWp0D,YAAYntE,GAAS6/H,GAAS1yD,YAAYntE,GAChG,OAAO,QAAaujF,GAAK,QAAY,CACnC,IAAOvjF,EAAMmrB,KACb,MAAS6zD,EAAiBvhF,MAC1B,MAASwhF,EAAgBxhF,MACzB,QAAW,OAAOuC,EAAMgR,SAASiG,SAASgrH,EAAYxkI,MAAO,OAC5DykI,GAAYhqE,EAAM,GAEzB,IClCWiqE,IAAsB,EAAA7hE,EAAA,GAAa,KAC3C,YACAuyB,GAAe,CAChB54D,OAAQ,EACRonC,SAAU,EACV2xB,UAAW,EACXD,WAAY,IACZ/tF,SAAU,aACV6f,WAAY,sBAEb,cACUu9G,IAAa,UAAmB,CAC3CxkI,KAAM,aACNoC,MAAOmiI,KACPl3D,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,cAC/BqiI,GAAU,UACVr9H,GAAW,SAAS,KACxB,MAAOwe,EAAGD,EAAI,UAAYvjB,EAAMgF,UAAUoC,MAAM,MAAQ,GACxD,MAAO,GAAGoc,KAAKD,GAAG,IAEdu7G,GAAkB,SAAS,KAAM,CACrC,CAAC,0BAA0B95H,EAASvH,MAAM6K,QAAQ,IAAK,SAAS,MAgClE,OA9BA,EAAAskE,EAAA,IAAU,KACR,MAAMsxB,EAAYjL,GAAM9lB,YAAYntE,GACpC,OAAO,QAAaizF,IAAO,QAAYiL,EAAW,CAChD,WAAc7yB,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAASptE,EAAMy4D,MACf,MAASz4D,EAAM2E,MACf,aAAgB,CAAC,wBAAyBm6H,EAAgBrhI,MAAOuC,EAAMwqE,cACvE,SAAYxlE,EAASvH,MACrB,IAAO4kI,EACP,WAAc,oBACZ,IACCnqE,EACHzR,QAAS0jC,IAAa,QAAaxV,GAAmB,CACpD,SAAY,CACVyE,KAAM,CACJ7pE,KAAM,WAGT,CACDk3C,QAAS,IAAM,EAAC,QAAa,KAAiB,CAC5C,QAAU,EACV,OAAS,EACT,WAAczmD,EAAM6kB,YACnB,CACD4hC,QAAS,IAAM,CAACyR,EAAMzR,UAAU0jC,UAGpC,IAEG,CAAC,CACV,ICvEWm4C,GAAiBjhI,OAAOm+D,IAAI,qBCI5B+iE,IAA2B,EAAAjiE,EAAA,GAAa,CACnD2J,MAAOh4D,OACP+uB,SAAU,CACR7V,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,SAAS,GAEX+7E,SAAU,CACRr3G,KAAMlZ,OACNw0C,QAAS,yBAEXg8E,SAAU,CACRt3G,KAAMlZ,OACNw0C,QAAS,0BAEV,mBACUi8E,IAAkB,UAAmB,CAChD9kI,KAAM,kBACNoC,MAAOuiI,KACPt3D,MAAO,CACL,aAAc,KAAM,EACpB,aAAc,KAAM,GAEtB,KAAAhT,CAAMj4D,EAAOkK,GACX,IAAI,KACF7G,EAAI,MACJ60D,GACEhuD,EACJ,MAAM,EACJpH,IACE,UACJ,SAASsjH,IACP/iH,EAAK,aACP,CACA,SAASgjH,IACPhjH,EAAK,aACP,CAqCA,OApCA,EAAAupE,EAAA,IAAU,KACR,MAAM+1D,EAAgB,CACpBhxG,QAASy0F,GAELwc,EAAgB,CACpBjxG,QAAS00F,GAEX,OAAO,QAAa,MAAO,CACzB,MAAS,qBACR,EAAC,QAAa1xC,GAAmB,CAClC,SAAY,CACVyE,KAAM,CACJp4C,SAAU,CAAC,QAAQ,GAAM/zB,SAASjN,EAAMghC,UACxC7zB,KAAMrK,EAAE9C,EAAMwiI,UACdnpD,QAAS,UAGZ,CACD5yB,QAAS,IAAM,CAACyR,EAAM1pD,OAAO,CAC3BxO,MAAO2iI,MACH,QAAavpD,GAAMupD,EAAe,UACtC,QAAahuD,GAAmB,CAClC,SAAY,CACVyE,KAAM,CACJnP,MAAOjqE,EAAMiqE,MACbjpC,SAAU,CAAC,QAAQ,GAAM/zB,SAASjN,EAAMghC,UACxC7zB,KAAMrK,EAAE9C,EAAMyiI,UACdppD,QAAS,WAGZ,CACD5yB,QAAS,IAAM,CAACyR,EAAMt2D,OAAO,CAC3B5B,MAAO4iI,MACH,QAAaxpD,GAAMwpD,EAAe,UACtC,IAEC,CAAC,CACV,IC7EWC,GAAiB7+C,GAAuB,oBCWxC8+C,IAAuB,EAAAxiE,EAAA,GAAa,CAC/C2J,MAAOh4D,OACP8mE,MAAO9mE,OACPs+E,SAAUt+E,OACVmmB,SAAUy/B,QACVkrE,aAAc,CACZ53G,KAAMlZ,OACNw0C,QAAS,aAEXu8E,SAAUnrE,QACVorE,SAAU,CACR93G,KAAMlZ,OACNw0C,QAAS,SAEXwG,MAAO4K,QACPqrE,UAAW,CACT/3G,KAAMlZ,OACNw0C,QAAS,UAEXm4B,KAAM3sE,OACNgxE,OAAQ,CACN93D,KAAM,CAAC0sC,QAASp5D,QAChBgoD,SAAS,GAEX4wC,MAAO,CACLlsE,KAAMrpB,MACN2kD,QAAS,IAAM,KAEhB,eACU08E,IAAwB,EAAA7iE,EAAA,GAAa,IAC7CwiE,QACApmD,MACF,gBACU0mD,IAAe,UAAmB,CAC7CxlI,KAAM,eACNktE,WAAY,CACVqb,OAAM,MAERnmF,MAAOmjI,KACPl4D,MAAO,CACL,iBAAkBvkD,IAAO,GAE3B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMinE,EAAQwL,GAAa38E,EAAOsiI,IAAgB,GAC5C59G,GAAO,SAAS,IAAMysD,GAAO1zE,MAAMA,OAASuC,EAAMvC,QAClDu5F,GAAU,SAAS,IAAMh3F,EAAMq3F,MAAM1tC,OAAMr0C,IAAyB,IAAdA,QACtDsmE,GAAc,SAAS,KAAO57E,EAAMghC,UAAYhhC,EAAMgjI,WACtDK,GAAU,SAAS,KAAOrjI,EAAMghC,UAAYhhC,EAAMgjI,WAClDM,GAAW,SAAS,IAAMtjI,EAAMitD,QAAU+pC,EAAQv5F,QAClD8lI,GAAe,SAAS,IAAMvjI,EAAMo4B,UAAYp4B,EAAMq3F,MAAMn3F,OAAS,GAAK82F,EAAQv5F,QAClFmhF,GAAO,SAAS,IAChB0kD,EAAS7lI,MAAcuC,EAAMkjI,UAC7BK,EAAa9lI,MAAcuC,EAAM+iI,aACjC5xD,EAAM0L,WAAWp/E,OAASuC,EAAMgjI,SAAiBhjI,EAAMijI,SACpDjjI,EAAM4+E,OAETuL,GAAY,SAAS,KAAM,CAC/Bk5C,QAASA,EAAQ5lI,MACjB6lI,SAAUA,EAAS7lI,MACnB8lI,aAAcA,EAAa9lI,MAC3Bs7E,MAAO/4E,EAAM+4E,MACbwX,SAAUvwF,EAAMuwF,SAChB7rE,KAAMA,EAAKjnB,MACXA,MAAOuC,EAAMvC,UAoCf,OAlCA,EAAAmvE,EAAA,IAAU,KACR,MAAM2e,IAAapa,GAASA,EAAM0L,WAAWp/E,OAAS8lI,EAAa9lI,OAAS4lI,EAAQ5lI,SAAW6lI,EAAS7lI,QAAUuC,EAAMghC,SAClHs4C,IAA6B,MAAft5E,EAAM+4E,QAAiB7gB,EAAM6gB,OAC3C2X,IAAmC,MAAlB1wF,EAAMuwF,WAAoBr4B,EAAMq4B,UACvD,SAAS5+D,IACPw/C,GAAOlvC,QACT,CACA,OAAO,SAAgB,QAAa,SAAU,CAC5C,MAAS,CAAC,iBAAkB,CAC1B,2BAA4BshG,EAAa9lI,MACzC,2BAA4BuC,EAAMghC,SAClC,wBAAyBsiG,EAAS7lI,OACjC0zE,GAAOsL,cAAch/E,OACxB,UAAauC,EAAMgjI,SACnB,QAAWrxG,GACV,CAACiqD,EAAYn+E,OAASk+E,IAAY,EAAM,mBAAmB,QAAamJ,GAAS,CAClF,IAAO,iBACP,MAAS,yBACT,MAASyG,EAAWvrF,EAAMiqE,WAAQ5gE,EAClC,KAAQ,IACP,CACDo9C,QAAS,IAAM,CAACyR,EAAM0mB,OAAOuL,EAAU1sF,SAAWmhF,EAAKnhF,OAAQ,QAAaohF,GAAO,CACjF,KAAQD,EAAKnhF,OACZ,MAAQinB,EAAKjnB,WACd,QAAa,MAAO,CACtB,MAAS,2BACR,CAAC67E,IAAY,QAAa,MAAO,CAClC,IAAO,QACP,MAAS,yBACR,CAACphB,EAAM6gB,QAAQoR,EAAU1sF,QAAUuC,EAAM+4E,QAAS2X,IAAe,QAAa,MAAO,CACtF,IAAO,WACP,MAAS,4BACR,CAACx4B,EAAMq4B,WAAWpG,EAAU1sF,QAAUuC,EAAMuwF,WAAYr4B,EAAMzR,UAAU0jC,EAAU1sF,WAAY,CAAC,EAAC,QAAkB,UAAWuC,EAAMijF,QAAUjjF,EAAMgjI,SAAU,OAAO,IAElK,CAAC,CACV,IC7GWQ,IAA0B,EAAAljE,EAAA,GAAa,KAC/C,QAAKolC,KAAoB,CAAC,aAAc,WAAY,WAAY,aAAc,QAAS,eACzF,kBACU+9B,IAAiB,UAAmB,CAC/C7lI,KAAM,iBACNoC,MAAOwjI,KACPv4D,MAAO,CACL,oBAAqBr7D,IAAK,GAE5B,KAAAqoD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMinE,GAAQ,QAAOmxD,GAAgB,MAC/BoB,GAAS,QAAgB1jI,EAAO,cAChCqrE,GAAQ,QAAS,CACrB,GAAAroE,GAGE,OAAoB,MAAhB0gI,EAAOjmI,OAAkB0zE,EAItBA,EAAMrB,MAAMryE,MAAM2iB,MAAK6U,GAAQk8C,EAAM+L,SAASz/E,MAAMwP,SAASgoB,EAAK51B,OAAM5B,MAJpCimI,EAAOjmI,KAKpD,EACA,GAAAwF,CAAIyjB,GACFg9G,EAAOjmI,MAAQipB,CACjB,IAeF,OAbA,EAAAkmD,EAAA,IAAU,KACR,MAAMy6B,EAAczB,GAAQz4B,YAAYntE,GACxC,OAAO,QAAa4lG,IAAS,QAAY,CACvC,IAAO,kBACNyB,EAAa,CACd,WAAch8B,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAAS,CAAC,mBAAoBptE,EAAMy4D,OACpC,MAASz4D,EAAM2E,MACf,WAAa,EACb,OAAS,IACPuzD,EAAM,IAEL,CAAC,CACV,IC9CWyrE,IAA8B,EAAArjE,EAAA,GAAa,IACnDgnC,MACF,sBACUs8B,IAAqB,UAAmB,CACnDhmI,KAAM,qBACNoC,MAAO2jI,KACP,KAAA1rE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAUJ,OATA,EAAA0iE,EAAA,IAAU,KACR,MAAMu7B,EAAkBX,GAAYr6B,YAAYntE,GAChD,OAAO,QAAawnG,IAAa,QAAY,CAC3C,IAAO,sBACNW,EAAiB,CAClB,MAAS,CAAC,wBAAyBnoG,EAAMy4D,OACzC,MAASz4D,EAAM2E,QACbuzD,EAAM,IAEL,CAAC,CACV,ICNW2rE,IAAmB,EAAAvjE,EAAA,GAAa,CAC3CwjE,UAAWjsE,QACX8nB,QAAS1tE,OACT8wH,aAAc9wH,OACdgxH,SAAUhxH,OACV+wH,SAAUnrE,QACVqrE,UAAWjxH,OACXm8G,YAAav2D,QACbiY,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBqrC,UAAW,CACT3mE,KAAMlZ,OACNw0C,QAAS,SAEXsrC,UAAW,CACT5mE,KAAMlZ,OACNw0C,QAAS,SAEXs9E,UAAWlsE,QACXnzB,KAAMmzB,YACH,YACF,WACUmsE,IAAoB,EAAA1jE,EAAA,GAAa,IACzCujE,QACAvnD,GAAe,CAChBE,UAAW,QACXC,cAAe,gCAEdq3B,SACA,QAAKyuB,KAA4B,CAAC,WAAY,cAChD,YACU0B,IAAW,UAAmB,CACzCrmI,KAAM,WACNoC,MAAOgkI,KACP/4D,MAAO,CACL,oBAAqBr7D,IAAK,GAE5B,KAAAqoD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MACE4lE,MAAOo0D,EAAM,KACbtiI,EAAI,KACJ4M,EAAI,SACJ0uE,GACED,GAASj9E,EAAOsiI,KACd,eACJ35C,EAAc,OACdF,IACE,SAAWzoF,IACT,aACJ+iI,EAAY,SACZE,EAAQ,UACRC,EAAS,MACTj5D,EAAK,SACL+4D,EAAQ,SACRR,EAAQ,SACRC,IACE,QAAOziI,GACL8vE,GAAQ,SAAS,IAAM9vE,EAAM8vE,MAAMvsE,KAAI,CAAC0xB,EAAM7e,KAClD,MAAM2iE,GAAQ,QAAoB9jD,EAAMj1B,EAAM8xF,UAAW78D,GACnDx3B,GAAQ,QAAoBw3B,EAAMj1B,EAAM+xF,UAAW37E,EAAQ,GACjE,MAAO,CACL2iE,QACAt7E,QACAoiC,IAAK5K,EACN,MAEG7X,GAAc,SAAS,IACpB8mH,EAAOzmI,MAAMguC,WAAUxW,GAAQioD,EAASz/E,MAAMwP,SAASgoB,EAAK51B,QAE/D2hC,GAAW,SAAS,IACpBhhC,EAAMghC,SAAiBhhC,EAAMghC,SACP,IAAtB5jB,EAAY3f,MAAoB,OAChC2f,EAAY3f,QAAUymI,EAAOzmI,MAAMyC,OAAS,GAAU,SAsE5D,OAnEA,SAAgB,CACdkjI,aAAc,CACZJ,WACAE,YACAH,eACAE,WACAT,WACAC,YAEFC,gBAAiB,CACfz4D,QACAjpC,WACAwhG,WACAC,eAGJ,EAAA71D,EAAA,IAAU,KACR,MAAM8nC,EAAaX,GAAO5mC,YAAYntE,GAChCslG,KAAeptC,EAAM05B,SAAU5xF,EAAM8vE,MAAM5vE,QAC3CikI,EAAYnkI,EAAM8vE,MAAM5vE,OAAS,EACjCytH,GAAc3tH,EAAMouH,gBAAkB+V,IAAajsE,EAAMorC,SAC/D,OAAO,QAAayQ,IAAQ,QAAYW,EAAY,CAClD,MAAS10G,EAAM2/E,QACf,MAAS,CAAC,YAAa,CACrB,wBAAyB3/E,EAAM8jI,UAC/B,kBAAmB9jI,EAAM0kC,KACzB,wBAAyB1kC,EAAM+jI,UAC/B,oBAAqBt7C,EAAOhrF,OAC3BkrF,EAAelrF,MAAOuC,EAAMy4D,OAC/B,MAASz4D,EAAM2E,QACb,CACF8hD,QAAS,IAAM,CAAC6+C,IAAa,QAAau9B,GAAgB,CACxD,IAAO,kBACN,CACDp8E,QAAS,IAAM,CAACqpB,EAAMryE,MAAM8F,KAAI,CAAC8P,EAAO+C,KACtC,IAAI,IACFypB,KACG5K,GACD5hB,EACJ,OAAO,QAAa,KAAW,KAAM,GAAG+C,IAAS,QAAa86E,GAAU,KAAM,OAAO,QAAakyC,GAAcnuG,EAAM,CACpHwxB,QAASyR,EAAM,eAAejjC,EAAKx3B,UAAYy6D,EAAM05B,OACrDhT,KAAM1mB,EAAM0mB,KACZ7F,MAAO7gB,EAAM6gB,MACbwX,SAAUr4B,EAAMq4B,YACd,OAEJ4zC,IAAa,QAAaV,GAAgB,CAC5C,IAAO,kBACN,CACDh9E,QAAS,IAAM,CAACqpB,EAAMryE,MAAM8F,KAAI0xB,IAAQ,QAAa2uG,GAAoB,CACvE,MAAS3uG,EAAKx3B,OACb,CACDgpD,QAAS,IAAMyR,EAAM,QAAQjjC,EAAKx3B,WAAWw3B,IAASijC,EAAMjjC,OAAOA,UAEnEijC,EAAMzR,UAAU,CAClBj4C,OACA5M,SACE+rH,IAAez1D,EAAMorC,UAAU,CACjC1hG,OACA4M,WACI,QAAak0H,GAAiB,CAClC,IAAO,kBACP,eAAgBl0H,EAChB,eAAgB5M,GACfs2D,MACH,IAEG,CACL1pD,OACA5M,OAEJ,ICzJWwiI,IAAmB,EAAA9jE,EAAA,GAAa,CAC3Csf,cAAe/nB,QACfg5B,MAAOh5B,QACPnzB,KAAMmzB,QACNkqB,QAAS,CACP52D,KAAM,CAAC0sC,QAAS5lD,QAChBw0C,SAAS,MAERyxC,QACAtS,MACF,WACUy+C,IAAU,UAAmB,CACxCzmI,KAAM,UACN07D,cAAc,EACdt5D,MAAOokI,KACPn5D,MAAO,CACL,iBAAkBopB,IAAW,EAC7B,oBAAqB52F,IAAS,EAC9B,uBAAwBA,IAAS,GAEnC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAM01E,GAAgB,QAAgB5/E,EAAO,iBACvCqrE,GAAQ,QAAgBrrE,EAAO,eAC/B,cACJiiF,GACED,GAAUhiF,IACR,UACJ2mE,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACPwpB,GAAU,UACVk4D,EAA2B,MAAc1gF,OAAO2F,WAAW,2BAA2B4F,QACtF+3H,GAAc,SAAS,IACK,kBAAlBtkI,EAAM+hF,SAA0C,KAAlB/hF,EAAM+hF,QAAiB/hF,EAAM+hF,QAAU/hF,EAAMiqE,QAErFb,GAAM,UACN/pE,GAAK,SAAS,IAAMW,EAAMX,IAAM,UAAU+pE,MAChD,SAAS4d,IACHpH,EAAcniF,QAChBmiF,EAAcniF,OAAQ,EAE1B,CACA,SAAS8mI,EAAaxhI,GACpBA,EAAE0rB,kBACF1rB,EAAEioB,iBACFxB,EAAQ/rB,OAAO4oF,OAAO/zC,OACxB,CAiHA,OAhHA,EAAAs6B,EAAA,IAAU,KACR,MAAO8Z,EAAW4hB,IAAgB,QAAiB5iD,GAC7Cs0C,EAAazB,GAAOprB,YAAYntE,GAChCinF,EAAef,GAAkB/Y,YAAYntE,GACnD,OAAO,QAAau4F,IAAQ,QAAY,CACtC,MAAS,CAAC,WAAY,CACpB,iBAAkBv4F,EAAM0kC,MACvB,CACD,kBAAmB1kC,EAAM6wF,OACxB,CACD,0BAA2BjR,EAAcniF,OACxCwkF,EAAcxkF,MAAOuC,EAAMy4D,QAC7BiuB,EAAWsT,EAAY,CACxB,WAAc3uB,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,GAAM/tE,EAAG5B,MACT,QAAWkpE,EAAUlpE,MACrB,MAASuC,EAAM2E,QACb,IACCuzD,EACHzR,QAASpzC,IACP,IAAI,GACFhU,EAAE,WACF81F,EAAU,WACV/R,EAAU,WACVmT,EAAU,QACVS,GACE3jF,EACJ,MAAM82E,EAAY,CAChB9e,QACA2rB,WAEF,OAAO,QAAa9Q,IAAmB,QAAY,CACjD,IAAO18D,GACNy9D,EAAc,CACf,WAAc5b,EAAM5tE,MACpB,sBAAuB,CAAC2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAAQ4Z,GACxD,GAAM3nF,EAAG5B,MACT,mBAAoB03F,EAAW13F,MAC/B,KAAQ,WACR,eAAgBmiF,EAAcniF,MAAQ,aAAU4L,EAChD,SAAY+5E,EAAW3lF,MACvB,SAAY84F,EAAW94F,MACvB,QAAW8uE,EACX,OAAUtoE,GACTqkG,GAAe,IACbpwC,EACHzR,QAAS2lC,IACP,IAAI,uBACFjiB,EAAsB,sBACtBC,GACEgiB,EACJ,OAAO,QAAa,MAAO,CACzB,MAAS,CAAC,kBAAoB1K,OAA0Dr4E,EAA/B8gE,EAAuB1sE,OAChF,MAAS2sE,EAAsB3sE,MAC/B,QAAW8mI,GACV,CAACrsE,EAAM,gBAAiB,QAAa,MAAO,CAC7C,IAAO,UACP,MAAS,wBACR,CAACA,EAAM,cAAciyB,KAAcjyB,EAAM,iBAAkB,QAAa,MAAO,CAChF,IAAO,SACP,MAAS,yBACR,CAACA,EAAM,eAAeiyB,MAAc,EAEzC9D,MAAOiG,IACL,IAAI,UACF1F,EAAS,KACThI,EAAI,uBACJzU,EAAsB,sBACtBC,GACEkiB,EACJ,OAAO,QAAa,KAAW,KAAM,CAAC1F,GAAW,QAAa,MAAO,CACnE,MAAS,CAAC,kBAAmB,CAC3B,0BAA2BhI,GAAQ5+E,EAAM+hF,SACxC/hF,EAAM6wF,OAASnP,OAA2Br4E,EAAY8gE,EAAuB1sE,OAChF,MAASuC,EAAM6wF,WAAQxnF,EAAY+gE,EAAsB3sE,OACxD,CAACy6D,EAAMssE,OAAQ,QAAa7vD,GAAmB,CAChD,SAAY,CACVkK,MAAO,CACLD,OACArvE,KAAM,aAGT,CACDk3C,QAAS,IAAM,CAACyR,EAAMssE,MAAM,IACvBr6C,EACHvL,aAEC,QAAa9K,EAAkB,KAAM,CACxCrtB,QAAS,IAAM,CAAEzmD,EAAM+hF,SAIZ,QAAaG,GAAY,CAClC,KAAQ,WACR,QAAU,EACV,OAA2B,IAAlB8U,EAAQv5F,WAAkB4L,EAAYi7H,EAAY7mI,OAC1D,CACDgpD,QAAS0jC,GAAajyB,EAAM0rB,OAAS1rB,EAAM0rB,OAAOuG,IAAa,QAAatK,GAAmB,CAC7F,OAAUsK,EAAUl3C,SACpB,MAASk3C,EAAUlgB,MACnB,eAAiB,EACjB,KAAQ,KACR,MAAS,KACR,QAf4B2U,IAAQ,QAAaC,GAAO,CAC3D,IAAO5sE,OAAO2sE,GACd,KAAQA,EACR,KAAQ,WACP,YAaC,GAER,GAEJ,IAEG,CAAC,CACV,ICtKW6lD,IAAsB,EAAAnkE,EAAA,GAAa,CAC9C2J,MAAOh4D,OACPf,OAAQ,CAACmB,OAAQJ,QACjBjR,OAAQ62D,YACL,YACAugB,QACArK,OACAqH,QACAtE,QACA,WACF,cACU4zD,IAAa,UAAmB,CAC3C9mI,KAAM,aACNoC,MAAOykI,KACP,KAAAxsE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,WAC9B,iBACJu4E,GACED,GAAat4E,IACX,eACJw1E,GACED,GAAWv1E,IACT,cACJ26E,GACED,KACExpE,GAAS,SAAS,IAAMlR,EAAMkR,SAAWlR,EAAMgB,OAAS,GAAK,OAC7D,iBACJutE,GACEF,EAAc,CAChBhvE,GAAIW,EAAMpC,KACVs8C,OAAO,SAAS,IAAMjjC,SAASjX,EAAMk6C,MAAO,MAC5C9Z,UAAU,QAAW,OACrB6vC,WAAY/+D,EACZg/D,YAAah/D,EACb4zD,QAAQ,SAAS,KAAM,IACvBwF,UAAU,QAAMtqE,EAAO,cAQzB,OANA,EAAA4sE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,eAAgB,CACxB,uBAAwBvN,EAAMgB,QAC7BsqE,EAAa7tE,MAAO0sE,EAAuB1sE,MAAO86E,EAAiB96E,MAAO+3E,EAAe/3E,MAAOuC,EAAMy4D,OACzG,MAAS,CAAC2R,EAAsB3sE,MAAO8wE,EAAiB9wE,MAAOk9E,EAAcl9E,MAAOuC,EAAM2E,QACzFuzD,KACI,CAAC,CACV,IClEWysE,GAActjI,OAAOm+D,IAAI,kBCSzBolE,IAAgB,EAAAtkE,EAAA,GAAa,CACxC0+C,MAAOnnD,QACPgtE,YAAa5yH,OACb6yH,WAAYjtE,QACZpzC,UAAW,CACT0G,KAAMlZ,OACNw0C,QAAS,kBAER,QAAKg8B,GAAc,CACpBhG,cAAe,kBACfpD,QAAS,SACP,CAAC,SAAU,QAAS,OAAQ,WAAY,WAAY,YACvD,QACU0rD,IAAO,UAAmB,CACrCnnI,KAAM,OACNoC,MAAO4kI,KACP,KAAA3sE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,EAAK,MACLxS,GACEx7C,EACJ,MACE80E,iBAAkBgmD,EAClB/lD,gBAAiBgmD,IACf,SAAajlI,EAAO,eAClB2zH,GAAS,UACTuR,GAAW,UACXnuH,GAAe,SAAS,IAA0B,eAApB/W,EAAMykB,YACpCo4D,GAAa,SAAS,IAAM82C,EAAOl2H,OAAO0zE,OAAO0L,WAAWp/E,QAAS,IAC3E,SAAS0nI,EAAa9xH,GACpB,IAAI,MACF5V,GACE4V,EACJ,GAAI5V,EAAO,CACT,MAAMyzB,EAASyiG,EAAOl2H,OAAO+qE,IAAIr5D,eAAehL,cAAc,mCACxD8sB,EAASi0G,EAASznI,MACxB,IAAKyzB,IAAWD,EAAQ,OACxB,MAAMg5C,EAAQ5jE,iBAAiB6qB,GAAQ+4C,MACjCm7D,EAAUl0G,EAAOtjB,wBACjBy3H,EAAUp0G,EAAOrjB,wBACjB03H,EAAKvuH,EAAatZ,MAAQ,IAAM,IAChC8nI,EAAKxuH,EAAatZ,MAAQ,IAAM,IAChC+nI,EAAczuH,EAAatZ,MAAQ,QAAU,SAC7CgoI,EAAc1uH,EAAatZ,MAAQ,QAAU,SAC7CioI,EAAUN,EAAQE,GAClBK,EAAUN,EAAQC,GAClB1lG,EAAQ8lG,EAAUC,EAAUP,EAAQI,GAAeH,EAAQG,GAAeJ,EAAQE,GAAMD,EAAQC,GAChGjgI,EAASiG,KAAK40B,KAAKN,GAAS,EAAI7oB,EAAatZ,MAAQ,QAAU,SAAW6N,KAAK40B,KAAKN,GAAS,EAAI7oB,EAAatZ,MAAQ,OAAS,MAAQ,SACvI8R,EAAOjE,KAAKuE,IAAI+vB,IAAUt0B,KAAK40B,KAAKN,GAAS,EAAIwlG,EAAQK,GAAeJ,EAAQI,IAChFngG,EAAQ/1B,EAAOjE,KAAKC,IAAI65H,EAAQK,GAAcJ,EAAQI,KAAiB,EACvEG,EAAeR,EAAQK,GAAeJ,EAAQI,IAAgB,EAC9DI,EAAQ,KACd,OAAQ50G,EAAQ,CACd60G,gBAAiB,CAAC77D,EAAO,gBACzB9hE,UAAW,CAAC,YAAYo9H,KAAM3lG,aAAiB2lG,KAAMK,KAAiB,YAAYL,KAAM3lG,EAAQimG,aAAiBN,MAAOjgG,EAAQ,GAAKugG,EAAQ,KAAM,QACnJzoF,gBAAiBt7C,MAAM,GAAGwmB,KAAKjjB,IAC9B,CACDqF,SAAU,IACV8hE,OAAQ,MAEZ,CACF,CAyBA,OAxBA,EAAAI,EAAA,IAAU,KACR,MAAMu+C,EAAW/xC,GAAKjM,YAAYntE,GAClC,OAAO,QAAao5E,IAAM,QAAY,CACpC,OAAUurD,GACV,IAAOhR,EACP,MAAS,CAAC,QAAS3zH,EAAMy4D,OACzB,MAASz4D,EAAM2E,MACf,SAAYk4E,EAAWp/E,MAAQ,GAAK,EACpC,KAAQ,MACR,gBAAiBwU,OAAO4qE,EAAWp/E,OACnC,QAAU,GACT0tH,EAAUzlE,EAAO,CAClB,MAAS1lD,EAAMg/G,MACf,SAAYh/G,EAAMg/G,MAAQ,SAAM31G,EAChC,mBAAoB87H,IAClB,IACCjtE,EACHzR,QAAS,KAAM,QAAa,KAAW,KAAM,CAACyR,EAAMzR,aAAezmD,EAAMmN,MAAOnN,EAAM8kI,aAAc,QAAa,MAAO,CACtH,IAAOI,EACP,MAAS,CAAC,gBAAiBF,EAAmBvnI,OAC9C,MAASwnI,EAAkBxnI,OAC1B,SACH,KAEG,EAAA4vE,GAAA,GAAY,CAAC,EAAGsmD,EACzB,IC3FWoS,IAAuB,EAAAzlE,EAAA,GAAa,KAC5C,QAAKolC,KAAoB,CAAC,aAAc,WAAY,WAAY,aAAc,QAAS,eACzF,eACUsgC,IAAc,UAAmB,CAC5CpoI,KAAM,cACNoC,MAAO+lI,KACP96D,MAAO,CACL,oBAAqBr7D,IAAK,GAE5B,KAAAqoD,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAMinE,GAAQ,QAAOwzD,GAAa,MAC5BjB,GAAS,QAAgB1jI,EAAO,cAChCqrE,GAAQ,QAAS,CACrB,GAAAroE,GAGE,OAAoB,MAAhB0gI,EAAOjmI,OAAkB0zE,EAItBA,EAAMrB,MAAMryE,MAAM2iB,MAAK6U,GAAQk8C,EAAM+L,SAASz/E,MAAMwP,SAASgoB,EAAK51B,OAAM5B,MAJpCimI,EAAOjmI,KAKpD,EACA,GAAAwF,CAAIyjB,GACFg9G,EAAOjmI,MAAQipB,CACjB,IAeF,OAbA,EAAAkmD,EAAA,IAAU,KACR,MAAMy6B,EAAczB,GAAQz4B,YAAYntE,GACxC,OAAO,QAAa4lG,IAAS,QAAY,CACvC,IAAO,eACNyB,EAAa,CACd,WAAch8B,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAAS,CAAC,gBAAiBptE,EAAMy4D,OACjC,MAASz4D,EAAM2E,MACf,WAAa,EACb,OAAS,IACPuzD,EAAM,IAEL,CAAC,CACV,IC9CW+tE,IAA2B,EAAA3lE,EAAA,GAAa,IAChDgnC,MACF,mBACU4+B,IAAkB,UAAmB,CAChDtoI,KAAM,kBACNoC,MAAOimI,KACP,KAAAhuE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAUJ,OATA,EAAA0iE,EAAA,IAAU,KACR,MAAMu7B,EAAkBX,GAAYr6B,YAAYntE,GAChD,OAAO,QAAawnG,IAAa,QAAY,CAC3C,IAAO,mBACNW,EAAiB,CAClB,MAAS,CAAC,qBAAsBnoG,EAAMy4D,OACtC,MAASz4D,EAAM2E,QACbuzD,EAAM,IAEL,CAAC,CACV,ICNF,SAASiuE,GAAWr2D,GAClB,OAAKA,EACEA,EAAMvsE,KAAI0xB,IACV,QAASA,GAIPA,EAJqB,CAC1B9nB,KAAM8nB,EACNx3B,MAAOw3B,KAJQ,EAQrB,CACO,MAAMmxG,IAAiB,EAAA9lE,EAAA,GAAa,CACzC+lE,UAAW,CACTl7G,KAAMlZ,OACNw0C,QAAS,SAEXwjB,MAAOh4D,OACPq0H,UAAWzuE,QACXiY,MAAO,CACL3kD,KAAMrpB,MACN2kD,QAAS,IAAM,IAEjBu8B,QAASnrB,QACT8nB,QAAS1tE,OACTuxF,KAAM3rC,QACN3mD,OAAQ,CACNia,KAAM,CAAC9Y,OAAQJ,QACfw0C,aAASp9C,GAEXy7H,WAAYjtE,QACZgtE,YAAa5yH,UACVm2E,GAAqB,CACtB5L,UAAW,QACXC,cAAe,4BAEdlB,QACAzK,KACF,SACU0I,IAAQ,UAAmB,CACtC57E,KAAM,QACNoC,MAAOomI,KACPn7D,MAAO,CACL,oBAAqBr7D,IAAK,GAE5B,KAAAqoD,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,MACLwS,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,cAC/B8vE,GAAQ,SAAS,IAAMq2D,GAAWnmI,EAAM8vE,UACxC,eACJ2L,GACED,GAAWx7E,IACT,uBACJmqE,EAAsB,sBACtBC,IACE,UAAmB,QAAMpqE,EAAO,aAC9B,QACJgsE,IACE,UAsDJ,OArDA,SAAgB,CACd+4D,KAAM,CACJ96D,OAAO,QAAMjqE,EAAO,SACpBykB,WAAW,QAAMzkB,EAAO,aACxBgjF,SAAS,QAAMhjF,EAAO,WACtBg/G,OAAO,QAAMh/G,EAAO,aACpB6kI,aAAa,QAAM7kI,EAAO,eAC1B8kI,YAAY,QAAM9kI,EAAO,kBAG7B,EAAA4sE,EAAA,IAAU,KACR,MAAMie,EAAkBnC,GAAYvb,YAAYntE,GAC1CmkI,KAAejsE,EAAMl3D,QAAUhB,EAAM8vE,MAAM5vE,OAAS,GAC1D,OAAO,QAAa,KAAW,KAAM,EAAC,QAAawoF,IAAa,QAAYmC,EAAiB,CAC3F,WAAcxf,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAAS,CAAC,SAAU,WAAWptE,EAAMykB,YAAa,sBAAsBzkB,EAAMqmI,YAAa,CACzF,qBAAsBrmI,EAAMsmI,UAC5B,eAAgBtmI,EAAMwjG,KACtB,kBAAmBxjG,EAAMgjF,SACxBvH,EAAeh+E,MAAO0sE,EAAuB1sE,MAAOuC,EAAMy4D,OAC7D,MAAS,CAAC,CACR,mBAAmB,QAAcz4D,EAAMkR,SACtCk5D,EAAsB3sE,MAAOuC,EAAM2E,OACtC,KAAQ,UACR,OAAUggI,IACT34D,EAAStmB,GAAQ,CAClBe,QAAS,IAAM,CAACyR,EAAMzR,aAAeqpB,EAAMryE,MAAM8F,KAAI0xB,GAAQijC,EAAMquE,MAAM,CACvEtxG,WACI,QAAa8vG,IAAM,QAAY9vG,EAAM,CACzC,IAAOA,EAAK9nB,KACZ,MAAS8nB,EAAKx3B,QACZ,CACFgpD,QAASyR,EAAM,OAAOjjC,EAAKx3B,SAAW,IAAMy6D,EAAM,OAAOjjC,EAAKx3B,WAAW,CACvEw3B,cACG5rB,SAEL86H,IAAa,QAAa6B,IAAa,QAAY,CACrD,WAAc36D,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,IAAO,eACNpB,GAAU,CACXvlB,QAAS,IAAM,CAACqpB,EAAMryE,MAAM8F,KAAI0xB,GAAQijC,EAAMjjC,OAAO,CACnDA,WACI,QAAaixG,GAAiB,CAClC,MAASjxG,EAAKx3B,OACb,CACDgpD,QAAS,IAAMyR,EAAM,QAAQjjC,EAAKx3B,WAAW,CAC3Cw3B,aAECijC,EAAMl3D,eACT,IAEC,CAAC,CACV,ICpHWwlI,IAAqB,EAAAlmE,EAAA,GAAa,CAC7CmmE,SAAU5uE,QACVghC,UAAWhhC,QACX+7B,QAAS,CAAC/7B,QAASxlD,OAAQJ,QAC3B6mF,aAAc56F,SACd62B,OAAQ9iB,OACRylE,YAAazlE,OACb8mF,sBAAuBlhC,QACvBmhC,kBAAmBnhC,QACnB6uE,SAAU7uE,QACVp+C,KAAM,CACJ0R,KAAM,CAAC9Y,OAAQJ,QACfw0C,QAAS,EACT+Z,UAAW5wD,IAAMsH,MAAMrO,WAAW+G,KAEpC+2H,QAAS,CACPx7G,KAAM,CAAC9Y,OAAQJ,QACfuuD,UAAW5wD,IAAMsH,MAAMrO,WAAW+G,KAEpC40B,OAAQvyB,OACRgnF,eAAgBx6F,UACby5F,QACA1D,MACF,aACUoyC,IAAY,UAAmB,CAC1ChpI,KAAM,YACNktE,WAAY,CACVquB,UAAS,MAEX7/B,cAAc,EACdt5D,MAAOwmI,KACPv7D,MAAO,CACL,gBAAiBloE,IAAK,EACtB,oBAAqBA,IAAK,EAC1B,iBAAkBsxF,IAAW,EAC7B,oBAAqB3tE,IAAO,GAE9B,KAAAuxC,CAAMj4D,EAAOkK,GACX,IAAI,MACFw7C,EAAK,KACLriD,EAAI,MACJ60D,GACEhuD,EACJ,MAAMmhE,GAAQ,QAAgBrrE,EAAO,eAC/B,UACJ2mE,EAAS,MACT4F,EAAK,KACLtoE,GACEqwF,GAASt0F,GACP84F,GAAe,SAAS,IACS,oBAAvB94F,EAAM84F,aAA8B94F,EAAM84F,aAAaztB,EAAM5tE,QAAU4tE,EAAM5tE,OAAS,IAAIM,WAAWmC,SAE/GqL,GAAM,SAAS,IACfm6C,EAAM0zC,UAAkB1zC,EAAM0zC,WAC7Bp5F,EAAM4zF,SAAoC,kBAAlB5zF,EAAM4zF,SAAiD,kBAAlB5zF,EAAM4zF,aAAxE,EACO5zF,EAAM4zF,UAEf,SAASyF,EAAY1iB,EAAgBzjE,GAC9BlT,EAAM64F,WAAcliB,GACzBzjE,EAAQ,GAAGnT,QAAQwsE,SACrB,CACA,MAAM+sB,GAAY,UACZC,GAAY,UACZstC,GAAgB,QAAW,IAC3BC,GAAc,UACd7zF,GAAW,SAAS,IAAMjzC,EAAM+4F,uBAAyBpyB,EAAUlpE,OAASuC,EAAM8kE,SACxF,SAASqC,IACH2/D,EAAYrpI,QAAUU,SAAS6F,eACjC8iI,EAAYrpI,OAAO8uE,QAEhB5F,EAAUlpE,OAAO8uE,GACxB,CACA,SAASmtB,EAAe32F,GACtBokE,IACA9jE,EAAK,gBAAiBN,EACxB,CACA,SAAS02F,EAAmB12F,GAC1BM,EAAK,oBAAqBN,EAC5B,CACA,SAAS42F,EAAQ52F,GACfA,EAAE0rB,kBACF04C,KACA,SAAS,KACPkE,EAAM5tE,MAAQ,IACd,QAAUuC,EAAM,iBAAkB+C,EAAE,GAExC,CACA,SAASyjF,EAAQzjF,GACf,MAAM2E,EAAK3E,EAAEhD,OAEb,GADAsrE,EAAM5tE,MAAQiK,EAAGjK,MACbuC,EAAMi5F,gBAAgB9xF,KAAM,CAC9B,MAAMyyF,EAAgB,CAAClyF,EAAGmyF,eAAgBnyF,EAAGoyF,eAC7C,SAAS,KACPpyF,EAAGmyF,eAAiBD,EAAc,GAClClyF,EAAGoyF,aAAeF,EAAc,EAAE,GAEtC,CACF,CACA,MAAMmtC,GAAW,UACXttH,GAAO,SAAKzZ,EAAMyZ,MAClB87E,GAAsB,SAAS,IAAM,CAAC,QAAS,cAActoF,SAASjN,EAAMq5E,WAIlF,SAAS2tD,IACFhnI,EAAMymI,WACX,SAAS,KACP,IAAKM,EAAStpI,QAAU87F,EAAU97F,MAAO,OACzC,MAAMkH,EAAQ0B,iBAAiB0gI,EAAStpI,OAClCwpI,EAAa5gI,iBAAiBkzF,EAAU97F,MAAM+qE,KAC9Cg3D,EAAU32H,WAAWlE,EAAM2B,iBAAiB,0BAA4BuC,WAAWlE,EAAM2B,iBAAiB,0BAA4BuC,WAAWlE,EAAM2B,iBAAiB,6BACxK4K,EAAS61H,EAAStpI,MAAMg9E,aACxBysD,EAAar+H,WAAWlE,EAAMuiI,YAC9B5lE,EAAYh2D,KAAKC,IAAI1C,WAAW7I,EAAMyZ,MAAQytH,EAAa1H,EAAS32H,WAAWo+H,EAAW3gI,iBAAiB,8BAC3Gk7D,EAAY34D,WAAW7I,EAAM2mI,SAAWO,EAAa1H,GAAW/9D,IAChEruD,GAAY,QAAMlC,GAAU,EAAGowD,EAAWE,GAChD/nD,EAAKhc,MAAQ6N,KAAKmP,OAAOrH,EAAYosH,GAAW0H,GAChDL,EAAcppI,OAAQ,QAAc2V,EAAU,GAElD,CAMA,IAAIT,EAmHJ,OA3IA,SAAY,KACL3S,EAAMymI,WAAUhtH,EAAKhc,OAASuC,EAAMyZ,KAAI,KAkB/C,QAAUutH,IACV,QAAM37D,EAAO27D,IACb,SAAM,IAAMhnI,EAAMyZ,MAAMutH,IACxB,SAAM,IAAMhnI,EAAM2mI,SAASK,IAC3B,SAAM,IAAMhnI,EAAM24E,SAASquD,IAE3B,QAAMD,GAAUrgH,IACVA,GACF/T,EAAW,IAAIM,eAAe+zH,GAC9Br0H,EAASe,QAAQqzH,EAAStpI,QAE1BkV,GAAUwC,YACZ,KAEF,SAAgB,KACdxC,GAAUwC,YAAY,KAExB,EAAAy3D,EAAA,IAAU,KACR,MAAMmtB,KAAgB7hC,EAAM07B,SAAW5zF,EAAM4zF,SAAW5zF,EAAM84F,cACxDL,KAAgBsB,IAAc7hC,EAAMwgC,UACnChS,EAAWC,IAAc,QAAiBjhC,IAE/CskB,WAAYxuD,KACTw+E,GACDzB,GAAOprB,YAAYntE,GACjBi6F,EAAanE,GAAiB91F,GACpC,OAAO,QAAau4F,IAAQ,QAAY,CACtC,IAAOe,EACP,WAAcjuB,EAAM5tE,MACpB,sBAAuB2vE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,MAAS,CAAC,0BAA2B,CACnC,uBAAwBptE,EAAM+0B,OAC9B,uBAAwB/0B,EAAMwkC,OAC9B,yBAA0BxkC,EAAM+0B,OAChC,yBAA0B/0B,EAAMwkC,OAChC,wBAAyBxkC,EAAMymI,SAC/B,wBAAyBzmI,EAAM0mI,UAAY1mI,EAAMymI,SACjD,4BAA6BlxC,EAAoB93F,OAChDuC,EAAMy4D,OACT,MAASz4D,EAAM2E,OACd+hF,EAAWsT,EAAY,CACxB,YAA8B,IAAfvgF,EAAKhc,QAAgB83F,EAAoB93F,MACxD,QAAWkpE,EAAUlpE,QACnB,IACCy6D,EACHzR,QAASpzC,IACP,IAAI,GACFhU,EAAE,WACF+jF,EAAU,QACVwU,EAAO,WACPrB,EAAU,QACVS,GACE3jF,EACJ,OAAO,QAAa4hF,IAAQ,QAAY,CACtC,IAAOsE,EACP,MAAS,CACP,8BAA+BstC,EAAcppI,OAE/C,QAAWi8F,EACX,YAAeD,EACf,gBAAiBE,EACjB,uBAAwB35F,EAAM,wBAC9B,sBAAuBA,EAAM,wBAC5Bi6F,EAAY,CACb,GAAM56F,EAAG5B,MACT,OAAUw1C,EAASx1C,OAASm6F,EAAQn6F,MACpC,YAA8B,IAAfgc,EAAKhc,QAAgB83F,EAAoB93F,MACxD,MAASm6F,EAAQn6F,OAASuC,EAAM60F,MAChC,SAAYzR,EAAW3lF,MACvB,QAAWkpE,EAAUlpE,MACrB,OAA2B,IAAlBu5F,EAAQv5F,QACf,IACCy6D,EACHzR,QAAS2lC,IACP,IACEpsF,OACEy4D,MAAOyhC,KACJ/P,IAEHiC,EACJ,OAAO,QAAa,KAAW,KAAM,CAACpsF,EAAM+0B,SAAU,QAAa,OAAQ,CACzE,MAAS,wBACR,CAAC/0B,EAAM+0B,UAAU,SAAgB,QAAa,YAAY,QAAY,CACvE,IAAO+xG,EACP,MAAS5sC,EACT,MAAS7uB,EAAM5tE,MACf,QAAW+oF,EACX,UAAaxmF,EAAM64F,UACnB,SAAYtC,EAAW94F,MACvB,SAAY2lF,EAAW3lF,MACvB,YAAeuC,EAAM03E,YACrB,KAAQ13E,EAAMyZ,KACd,KAAQzZ,EAAMpC,KACd,QAAWupE,EACX,OAAUljE,GACTkmF,EAAWxD,GAAa,MAAO,CAAC,EAAC,QAAkB,aAAc,CAClErxE,QAAS+jF,GACR,KAAM,CACP1jF,MAAM,MACF3V,EAAMymI,WAAY,SAAgB,QAAa,WAAY,CAC/D,MAAS,CAACvsC,EAAY,qBACtB,GAAM,GAAG/P,EAAU9qF,WACnB,sBAAuB+tE,GAAU/B,EAAM5tE,MAAQ2vE,EAC/C,IAAO25D,EACP,UAAY,EACZ,cAAe,QACd,MAAO,CAAC,CAAC,KAAa17D,EAAM5tE,SAAUuC,EAAMwkC,SAAU,QAAa,OAAQ,CAC5E,MAAS,wBACR,CAACxkC,EAAMwkC,UAAU,GAEtB,EAEJk0D,QAASD,EAAatO,IAAa,QAAa,KAAW,KAAM,CAACjyB,EAAMwgC,UAAUvO,GAAY4P,IAAc,QAAa,KAAW,KAAM,EAAC,QAAa,OAAQ,KAAM,OAAO,QAAarG,GAAU,CAClM,OAAU1zF,EAAMg5F,mBAAqBryB,EAAUlpE,MAC/C,MAASq7F,EAAar7F,MACtB,IAAO8N,EAAI9N,MACX,SAAYuC,EAAMghC,UACjBk3B,EAAM07B,kBAAevqF,GACxB,KAEG,EAAAgkE,GAAA,GAAY,CAAC,EAAGisB,EAAWC,EAAWutC,EAC/C,ICxPWK,IAA0B,EAAA7mE,EAAA,GAAa,CAClD8mE,eAAgBvvE,YACb,aACA,aACAiZ,KACF,kBACUu2D,IAAiB,UAAmB,CAC/CzpI,KAAM,iBACNoC,MAAOmnI,KACP,KAAAlvE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,GACjB,MAAO,IACAA,EAAMonI,gBACJ,QAAapnI,EAAMuN,IAAK,CAC7B,MAAS,CAAC,mBAAoB+9D,EAAa7tE,MAAOuC,EAAMy4D,OACxD,MAASz4D,EAAM2E,OACd,CACD8hD,QAAS,IAAM,CAACyR,EAAMzR,eALUyR,EAAMzR,WAQ5C,ICtBW6gF,IAA4B,EAAAhnE,EAAA,GAAa,CACpDinE,SAAUt1H,OACVu1H,QAAS3vE,QACT4vE,QAAS5vE,QACT+mB,KAAM,MACN8oD,UAAWz1H,OACX01H,UAAW11H,WACR,YACAmjE,QACAmJ,QACAnG,MACF,oBACUwvD,IAAmB,UAAmB,CACjDhqI,KAAM,mBACNoC,MAAOsnI,KACP,KAAArvE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,YACJu0E,EAAW,WACXC,GACEF,GAAQx+E,EAAO,4BACb,sBACJoqE,EAAqB,uBACrBD,IACE,UAAmB,QAAMnqE,EAAO,cAC9B,eACJw1E,GACED,GAAWv1E,EAAO,4BAChB,iBACJu4E,GACED,GAAat4E,IAEfmqE,uBAAwB09D,EACxBz9D,sBAAuB09D,IACrB,UAAmB,QAAM9nI,EAAO,cAmCpC,OAlCA,EAAA4sE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,qBAAsB,CAC9B,+BAAgC5sE,EAAMwnI,SACrCxnI,EAAMy4D,OACT,MAASz4D,EAAM2E,OACd,EAAC,QAAa,MAAO,CACtB,MAAS,CAAC,6BAA8BkjI,EAAiBpqI,OACzD,MAASqqI,EAAgBrqI,OACxB,OAAQuC,EAAMynI,UAAW,QAAa,MAAO,CAC9C,IAAO,MACP,MAAS,CAAC,0BAA2BlvD,EAAiB96E,MAAO+3E,EAAe/3E,MAAOghF,EAAYhhF,OAC/F,MAASihF,EAAWjhF,OACnB,EAAC,QAAa,MAAO,CACtB,MAAS,CAAC,gCAAiC0sE,EAAuB1sE,MAAO+3E,EAAe/3E,OACxF,MAAS2sE,EAAsB3sE,OAC9B,CAAEy6D,EAAMzR,SAKA,QAAakuB,GAAmB,CACzC,IAAO,gBACP,UAAa30E,EAAM4+E,KACnB,SAAY,CACVC,MAAO,CACL5U,MAAOjqE,EAAM0nI,UACb9oD,KAAM5+E,EAAM4+E,KACZrvE,KAAMvP,EAAMuP,QAGf2oD,EAAMzR,UAfY,QAAao4B,GAAO,CACvC,IAAO,OACP,MAAS7+E,EAAM0nI,UACf,KAAQ1nI,EAAM4+E,KACd,KAAQ5+E,EAAMuP,MACb,WAUoB,QAAa,MAAO,CACzC,MAAS,CAAC,4BAA6Bs4H,EAAiBpqI,OACxD,MAASqqI,EAAgBrqI,OACxB,UACI,CAAC,CACV,ICvEWsqI,IAAyB,EAAAznE,EAAA,GAAa,CACjDqY,QAAS1mE,OACTs1H,SAAUt1H,OACVu1H,QAAS3vE,QACT4vE,QAAS5vE,QACTmwE,aAAc,CACZ78G,KAAM0sC,QACNpR,aAASp9C,GAEXu1E,KAAM,MACN8oD,UAAWz1H,OACXg2H,UAAW,CAAC51H,OAAQJ,YACjB,aACA,aACAmmE,QACAhD,QACAmJ,QACAzN,KACF,iBACUo3D,IAAgB,UAAmB,CAC9CtqI,KAAM,gBACNoC,MAAO+nI,KACP,KAAA9vE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,gBACJ4hE,IACE,QAAa9rE,GACX0oG,GAAU,QAAW,GACrBy/B,GAAS,UAiCf,OAhCA,QAAMA,GAAQlmF,IACPA,IACLymD,EAAQjrG,MAAQwkD,EAASumB,IAAIrkE,cAAc,6BAA6ByJ,wBAAwBoD,OAAS,EAAC,GACzG,CACDipD,MAAO,UAET,EAAA2S,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,kBAAmB,CAC3B,4BAA6B5sE,EAAMwnI,SAClCxnI,EAAMy4D,OACT,MAAS,CAAC,CACR,yBAAyB,QAAciwC,EAAQjrG,OAC/C,0BAA2BuC,EAAMioI,UAAY,0CAAyC,QAAcjoI,EAAMioI,eAAgB,QAAc,IACvIjoI,EAAM2E,QACR,EAAC,QAAa,MAAO,CACtB,MAAS,wBACT,MAASmnE,EAAgBruE,OACxB,CAACy6D,EAAMzR,eAAe,QAAamhF,GAAkB,CACtD,IAAOO,EACP,QAAWnoI,EAAMynI,QACjB,KAAQznI,EAAM4+E,KACd,UAAa5+E,EAAM0nI,UACnB,KAAQ1nI,EAAMuP,KACd,UAAavP,EAAMq4E,UACnB,SAAYr4E,EAAMunI,SAClB,QAAWvnI,EAAMwnI,QACjB,QAAWxnI,EAAMq1E,SAChB,CACD5uB,QAASyR,EAAM0mB,OACK,YAAlB5+E,EAAM24E,UAAyB,QAAa,MAAO,CACrD,MAAS,6BACR,EAAE34E,EAAMgoI,cAAgB9vE,EAAMuoB,mBAC1B,CAAC,CACV,IC/DW2nD,IAAqB,EAAA9nE,EAAA,GAAa,CAC7CT,MAAO,CACL10C,KAAMlZ,OACNw0C,QAAS,SACT+Z,UAAW5wD,GAAK,CAAC,SAAU,SAAS3C,SAAS2C,IAE/C6U,UAAW,CACT0G,KAAMlZ,OACNw0C,QAAS,WACT+Z,UAAW5wD,GAAK,CAAC,WAAY,cAAc3C,SAAS2C,IAEtD09G,QAAS,CACPniG,KAAMlZ,OACNw0C,QAAS,OACT+Z,UAAW5wD,GAAK,CAAC,OAAQ,UAAU3C,SAAS2C,IAE9CvF,KAAM,CACJ8gB,KAAMlZ,OACNuuD,UAAW5wD,GAAU,MAALA,GAAa,CAAC,QAAS,OAAO3C,SAAS2C,IAEzDy4H,cAAe,CACbl9G,KAAM,CAAClZ,OAAQI,QACfo0C,QAAS,GAEXkhF,UAAW11H,OACXq2H,aAAc,CACZn9G,KAAMlZ,OACNuuD,UAAW5wD,GAAK,CAAC,QAAS,MAAO,QAAQ3C,SAAS2C,QAEjD,QAAKm4H,GAAuB,CAC7BE,UAAW,IACT,CAAC,WAAY,UAAW,eAAgB,YAAa,YAAa,aACnE,YACA1sD,QACAzK,QACA,WACF,aACUy3D,IAAY,UAAmB,CAC1C3qI,KAAM,YACNoC,MAAOooI,KACP,KAAAnwE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM,aACJohE,IACE,QAAatrE,IACX,eACJy7E,GACED,GAAWx7E,IACT,WACJurE,IACE,WACJ,SAAgB,CACdq8D,iBAAkB,CAChBD,WAAW,QAAM3nI,EAAO,cAE1BkoI,cAAe,CACbvvD,SAAS,QAAM34E,EAAO,WACtBunI,UAAU,QAAMvnI,EAAO,YACvBwnI,SAAS,QAAMxnI,EAAO,WACtBgoI,cAAc,QAAMhoI,EAAO,gBAC3B0nI,WAAW,QAAM1nI,EAAO,aACxB2nI,WAAW,QAAM3nI,EAAO,aACxBioI,WAAW,QAAMjoI,EAAO,aACxBuP,MAAM,QAAMvP,EAAO,WAGvB,MAAMwoI,GAAc,SAAS,KAC3B,MAAMn+H,EAAOrK,EAAMqK,KAAOrK,EAAMqK,KAAyB,YAAlBrK,EAAM24E,QAAwB,MAAQ,KAC7E,OAAOtuE,GAAQ,oBAAoBA,GAAM,IAErCo+H,GAAkB,SAAS,KAC/B,MAAMvhI,EAAU,CAAC,kCAAmC,iCACpD,OAAQlH,EAAMsoI,cACZ,IAAK,OACH,OAAOphI,EACT,IAAK,QACH,OAAOA,EAAQ,GACjB,IAAK,MACH,OAAOA,EAAQ,GACjB,QACE,OAAO,KACX,IAUF,OARA,EAAA0lE,EAAA,IAAU,KAAM,QAAa5sE,EAAMuN,IAAK,CACtC,MAAS,CAAC,aAAc,eAAevN,EAAMykB,YAAa,qBAAqBzkB,EAAM6/D,QAAS,uBAAuB7/D,EAAMstH,UAAWmb,EAAgBhrI,MAAO,CAC3J,2BAA4BuC,EAAMioI,WACjC38D,EAAa7tE,MAAOg+E,EAAeh+E,MAAO+qI,EAAY/qI,MAAO8tE,EAAW9tE,MAAOuC,EAAMy4D,OACxF,MAAS,CAAC,CACR,+BAA+B,QAAcz4D,EAAMqoI,gBAClDroI,EAAM2E,QACRuzD,KACI,CAAC,CACV,ICrGWwwE,IAAyB,EAAApoE,EAAA,GAAa,KAC9C,YACAub,GAAiB,CAClBxC,QAAS,UAEV,iBACUsvD,IAAgB,UAAmB,CAC9C/qI,KAAM,gBACNoC,MAAO0oI,KACP,KAAAzwE,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EAYJ,OAXA,SAAgB,CACdkvE,KAAM,CACJnP,OAAO,QAAMjqE,EAAO,SACpBkR,OAAQ,UACRmoE,SAAS,QAAMr5E,EAAO,eAG1B,EAAA4sE,EAAA,IAAU,KAAM,QAAa,MAAO,CAClC,MAAS,CAAC,kBAAmB5sE,EAAMy4D,OACnC,MAASz4D,EAAM2E,OACd,CAACuzD,EAAMzR,gBACH,CAAC,CACV,I,eC7BK,MAAMmiF,IAAc,UAAmB,CAC5ChrI,KAAM,cACNoC,MAAOm3F,KACPlsB,MAAO,CACL,oBAAqBxtE,IAAS,GAEhC,KAAAw6D,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAM2+H,EAAatxC,GAAcv3F,EAAO,cACxC,MAAO,IAAMk4D,EAAMzR,UAAUoiF,EAC/B,G,uJCXK,SAASC,EAASp1B,GACvB,OAAO,SAAiB,KACtB,MAAMxsG,EAAU,GACV08C,EAAS,CAAC,EAChB,GAAI8vD,EAAOj2G,MAAMyzG,WACf,IAAI,QAAWwC,EAAOj2G,MAAMyzG,aAE1B,GADAttD,EAAOkiF,gBAAkBpyB,EAAOj2G,MAAMyzG,YACjCwC,EAAOj2G,MAAM0P,OAAQ,QAAgBumG,EAAOj2G,MAAMyzG,YAAa,CAClE,MAAM40B,GAAkB,QAAWpyB,EAAOj2G,MAAMyzG,YAChD,GAAyB,MAArB40B,EAAgBz9H,GAAmC,IAAtBy9H,EAAgBz9H,EAAS,CACxD,MAAMu6F,GAAY,QAAckjC,GAChCliF,EAAOqmB,MAAQ24B,EACfh/C,EAAOmlF,WAAanmC,CACtB,CACF,OAEA17F,EAAQ1E,KAAK,MAAMkxG,EAAOj2G,MAAMyzG,cAWpC,OARIwC,EAAOj2G,MAAM0P,QACX,QAAWumG,EAAOj2G,MAAM0P,OAC1By2C,EAAOqmB,MAAQypC,EAAOj2G,MAAM0P,KAC5By2C,EAAOmlF,WAAar1B,EAAOj2G,MAAM0P,MAEjCjG,EAAQ1E,KAAK,QAAQkxG,EAAOj2G,MAAM0P,SAG/B,CACL6uE,aAAc90E,EACd+0E,YAAar4B,EACd,GAEL,CACO,SAASolF,EAAahpI,EAAOpC,GAClC,MAAM81G,GAAS,SAAS,KAAM,CAC5BvmG,MAAM,QAAMnN,GAASA,EAAMvC,MAAQG,EAAOoC,EAAMpC,GAAQ,UAGxDo+E,aAAcgD,EACd/C,YAAagD,GACX6pD,EAASp1B,GACb,MAAO,CACL10B,mBACAC,kBAEJ,CACO,SAASgqD,EAAmBjpI,EAAOpC,GACxC,MAAM81G,GAAS,SAAS,KAAM,CAC5BxC,YAAY,QAAMlxG,GAASA,EAAMvC,MAAQG,EAAOoC,EAAMpC,GAAQ,UAG9Do+E,aAAc7R,EACd8R,YAAa7R,GACX0+D,EAASp1B,GACb,MAAO,CACLvpC,yBACAC,wBAEJ,C,iFC3DO,MAAM8+D,GAAqB,OAAa,CAC7CzwE,MAAO,CAACxmD,OAAQnQ,MAAOrD,QACvBkG,MAAO,CACLwmB,KAAM,CAAClZ,OAAQnQ,MAAOrD,QACtBgoD,QAAS,OAEV,Y,yMCPH,MAAM0iF,EAAW,CACf,MAAO,EACPC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJ,iBAAkB,EAClBC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,GAEN,SAASzqB,EAAaV,EAAM7M,EAAQ0M,GAClC,MAAMY,EAAQ,GACd,IAAI2qB,EAAc,GAClB,MAAMC,EAAkBhrB,EAAaL,GAC/BsrB,EAAiB5pB,EAAW1B,GAC5BxsB,EAAQqsB,GAAkBiiB,EAAS3uB,EAAOl3G,OAAO,GAAGs1B,gBAAkB,EACtEg6G,GAAqBF,EAAgBlqB,SAAW3tB,EAAQ,GAAK,EAC7Dg4C,GAAoBF,EAAenqB,SAAW3tB,EAAQ,GAAK,EACjE,IAAK,IAAI56F,EAAI,EAAGA,EAAI2yI,EAAmB3yI,IAAK,CAC1C,MAAM6yI,EAAc,IAAIpzI,KAAKgzI,GAC7BI,EAAY7mB,QAAQ6mB,EAAYC,WAAaH,EAAoB3yI,IACjEwyI,EAAYjwI,KAAKswI,EACnB,CACA,IAAK,IAAI7yI,EAAI,EAAGA,GAAK0yI,EAAeI,UAAW9yI,IAAK,CAClD,MAAM4nH,EAAM,IAAInoH,KAAK2nH,EAAK2rB,cAAe3rB,EAAKI,WAAYxnH,GAG1DwyI,EAAYjwI,KAAKqlH,GAGU,IAAvB4qB,EAAYvyI,SACd4nH,EAAMtlH,KAAKiwI,GACXA,EAAc,GAElB,CACA,IAAK,IAAIxyI,EAAI,EAAGA,EAAI,EAAI4yI,EAAkB5yI,IAAK,CAC7C,MAAM6yI,EAAc,IAAIpzI,KAAKizI,GAC7BG,EAAY7mB,QAAQ6mB,EAAYC,UAAY9yI,GAC5CwyI,EAAYjwI,KAAKswI,EACnB,CAIA,OAHIL,EAAYvyI,OAAS,GACvB4nH,EAAMtlH,KAAKiwI,GAEN3qB,CACT,CACA,SAAS0B,EAAYnC,EAAM7M,EAAQ0M,GACjC,MAAMW,EAAMX,GAAkBiiB,EAAS3uB,EAAOl3G,OAAO,GAAGs1B,gBAAkB,EACpE+wF,EAAI,IAAIjqH,KAAK2nH,GACnB,MAAOsC,EAAEnB,WAAaX,EACpB8B,EAAEsC,QAAQtC,EAAEopB,UAAY,GAE1B,OAAOppB,CACT,CACA,SAASspB,EAAU5rB,EAAM7M,GACvB,MAAMmP,EAAI,IAAIjqH,KAAK2nH,GACba,IAAYihB,EAAS3uB,EAAOl3G,OAAO,GAAGs1B,gBAAkB,GAAK,GAAK,EACxE,MAAO+wF,EAAEnB,WAAaN,EACpByB,EAAEsC,QAAQtC,EAAEopB,UAAY,GAE1B,OAAOppB,CACT,CACA,SAASjC,EAAaL,GACpB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe3rB,EAAKI,WAAY,EACvD,CACA,SAASsB,EAAW1B,GAClB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe3rB,EAAKI,WAAa,EAAG,EAC3D,CACA,SAASyrB,EAAez1I,GACtB,MAAM01I,EAAQ11I,EAAM2J,MAAM,KAAK7D,IAAI8O,QAGnC,OAAO,IAAI3S,KAAKyzI,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,GAChD,CACA,MAAMC,EAAW,kEACjB,SAAS/rB,EAAK5pH,GACZ,GAAa,MAATA,EAAe,OAAO,IAAIiC,KAC9B,GAAIjC,aAAiBiC,KAAM,OAAOjC,EAClC,GAAqB,kBAAVA,EAAoB,CAC7B,IAAIikH,EACJ,GAAI0xB,EAAS7gI,KAAK9U,GAChB,OAAOy1I,EAAez1I,GAIxB,GAFEikH,EAAShiH,KAAK6iD,MAAM9kD,IAEjByZ,MAAMwqG,GAAS,OAAO,IAAIhiH,KAAKgiH,EACtC,CACA,OAAO,IACT,CACA,MAAM2xB,EAA0B,IAAI3zI,KAAK,IAAM,EAAG,GAClD,SAASmrH,EAAYrQ,EAAQ0M,GAC3B,MAAMosB,EAAiBpsB,GAAkBiiB,EAAS3uB,EAAOl3G,OAAO,GAAGs1B,gBAAkB,EACrF,OAAO,QAAY,GAAGr1B,KAAItD,IACxB,MAAMszI,EAAU,IAAI7zI,KAAK2zI,GAEzB,OADAE,EAAQtnB,QAAQonB,EAAwBN,UAAYO,EAAiBrzI,GAC9D,IAAI86G,KAAKy4B,eAAeh5B,EAAQ,CACrC+4B,QAAS,WACRrqB,OAAOqqB,EAAQ,GAEtB,CACA,SAASrqB,EAAOzrH,EAAOg2I,EAAcj5B,EAAQk5B,GAC3C,MAAMC,EAAUtsB,EAAK5pH,IAAU,IAAIiC,KAC7Bk0I,EAAeF,IAAUD,GAC/B,GAA4B,oBAAjBG,EACT,OAAOA,EAAaD,EAASF,EAAcj5B,GAE7C,IAAIrmG,EAAU,CAAC,EACf,OAAQs/H,GACN,IAAK,WACHt/H,EAAU,CACR4yG,KAAM,UACNF,MAAO,OACPgB,IAAK,WAEP,MACF,IAAK,sBACH1zG,EAAU,CACRo/H,QAAS,OACTxsB,KAAM,UACNF,MAAO,OACPgB,IAAK,WAEP,MACF,IAAK,aACH,MAAMA,EAAM8rB,EAAQZ,UACdlsB,EAAQ,IAAI9L,KAAKy4B,eAAeh5B,EAAQ,CAC5CqM,MAAO,SACNqC,OAAOyqB,GACV,MAAO,GAAG9rB,KAAOhB,IACnB,IAAK,wBACH1yG,EAAU,CACRo/H,QAAS,QACT1rB,IAAK,UACLhB,MAAO,SAET,MACF,IAAK,YACH1yG,EAAU,CACR0yG,MAAO,QACPgB,IAAK,WAEP,MACF,IAAK,OACH1zG,EAAU,CACR4yG,KAAM,WAER,MACF,IAAK,QACH5yG,EAAU,CACR0yG,MAAO,QAET,MACF,IAAK,aACH1yG,EAAU,CACR0yG,MAAO,SAET,MACF,IAAK,eACH1yG,EAAU,CACR0yG,MAAO,OACPE,KAAM,WAER,MACF,IAAK,eACH5yG,EAAU,CACR0yG,MAAO,OACPgB,IAAK,WAEP,MACF,IAAK,UACH1zG,EAAU,CACRo/H,QAAS,QAEX,MACF,IAAK,eACHp/H,EAAU,CACRo/H,QAAS,SAEX,MACF,IAAK,aACH,OAAO,IAAIx4B,KAAK84B,aAAar5B,GAAQ0O,OAAOyqB,EAAQZ,WACtD,IAAK,WACH5+H,EAAU,CACR2/H,KAAM,UACNC,QAAQ,GAEV,MACF,IAAK,WACH5/H,EAAU,CACR2/H,KAAM,UACNC,QAAQ,GAEV,MACF,IAAK,UACH5/H,EAAU,CACR6/H,OAAQ,WAEV,MACF,IAAK,UACH7/H,EAAU,CACR8/H,OAAQ,WAEV,MACF,IAAK,WACH9/H,EAAU,CACR2/H,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,cACH5/H,EAAU,CACR2/H,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,cACH5/H,EAAU,CACR2/H,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,eACH5/H,EAAU,CACR4yG,KAAM,UACNF,MAAO,OACPgB,IAAK,UACLisB,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,kBACH5/H,EAAU,CACR4yG,KAAM,UACNF,MAAO,OACPgB,IAAK,UACLisB,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,kBACH5/H,EAAU,CACR4yG,KAAM,UACNF,MAAO,OACPgB,IAAK,UACLisB,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,eACH5/H,EAAU,CACR4yG,KAAM,UACNF,MAAO,UACPgB,IAAK,WAEP,MACF,IAAK,mBACH1zG,EAAU,CACR4yG,KAAM,UACNF,MAAO,UACPgB,IAAK,UACLisB,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,sBACH5/H,EAAU,CACR4yG,KAAM,UACNF,MAAO,UACPgB,IAAK,UACLisB,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,IAAK,sBACH5/H,EAAU,CACR4yG,KAAM,UACNF,MAAO,UACPgB,IAAK,UACLisB,KAAM,UACNE,OAAQ,UACRC,OAAQ,UACRF,QAAQ,GAEV,MACF,QACE5/H,EAAUy/H,GAAgB,CACxBM,SAAU,MACVC,aAAc,SAGpB,OAAO,IAAIp5B,KAAKy4B,eAAeh5B,EAAQrmG,GAAS+0G,OAAOyqB,EACzD,CACA,SAASjrB,EAAMtB,EAAS3pH,GACtB,MAAM4pH,EAAOD,EAAQmB,SAAS9qH,GACxBspH,EAAOM,EAAK2rB,cACZnsB,GAAQ,QAAS50G,OAAOo1G,EAAKI,WAAa,GAAI,EAAG,KACjDI,GAAM,QAAS51G,OAAOo1G,EAAK0rB,WAAY,EAAG,KAChD,MAAO,GAAGhsB,KAAQF,KAASgB,GAC7B,CACA,SAASusB,EAAS32I,GAChB,MAAOspH,EAAMF,EAAOgB,GAAOpqH,EAAM2J,MAAM,KAAK7D,IAAI8O,QAChD,OAAO,IAAI3S,KAAKqnH,EAAMF,EAAQ,EAAGgB,EACnC,CACA,SAASwsB,EAAWhtB,EAAMlmG,GACxB,MAAMwoG,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAE2qB,WAAW3qB,EAAE4qB,aAAepzH,GACvBwoG,CACT,CACA,SAAS6qB,EAASntB,EAAMlmG,GACtB,MAAMwoG,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAE8qB,SAAS9qB,EAAE+qB,WAAavzH,GACnBwoG,CACT,CACA,SAASvB,EAAQf,EAAMlmG,GACrB,MAAMwoG,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAEsC,QAAQtC,EAAEopB,UAAY5xH,GACjBwoG,CACT,CACA,SAASgrB,EAASttB,EAAMlmG,GACtB,MAAMwoG,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAEsC,QAAQtC,EAAEopB,UAAqB,EAAT5xH,GACjBwoG,CACT,CACA,SAASirB,EAAUvtB,EAAMlmG,GACvB,MAAMwoG,EAAI,IAAIjqH,KAAK2nH,GAGnB,OAFAsC,EAAEsC,QAAQ,GACVtC,EAAEhC,SAASgC,EAAElC,WAAatmG,GACnBwoG,CACT,CACA,SAASrC,EAAQD,GACf,OAAOA,EAAK2rB,aACd,CACA,SAASvrB,EAASJ,GAChB,OAAOA,EAAKI,UACd,CACA,SAASsrB,EAAQ1rB,GACf,OAAOA,EAAK0rB,SACd,CACA,SAAS7nB,EAAa7D,GACpB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe3rB,EAAKI,WAAa,EAAG,EAC3D,CACA,SAASotB,EAAiBxtB,GACxB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe3rB,EAAKI,WAAa,EAAG,EAC3D,CACA,SAASitB,EAASrtB,GAChB,OAAOA,EAAKqtB,UACd,CACA,SAASH,EAAWltB,GAClB,OAAOA,EAAKktB,YACd,CACA,SAAShtB,EAAYF,GACnB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe,EAAG,EACzC,CACA,SAAS8B,EAAUztB,GACjB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe,GAAI,GAC1C,CACA,SAAS+B,EAAc1tB,EAAM7J,GAC3B,OAAOkM,EAAQrC,EAAM7J,EAAM,KAAO+M,EAASlD,EAAM7J,EAAM,GACzD,CACA,SAASxmB,EAAQqwB,GACf,MAAMsC,EAAI,IAAIjqH,KAAK2nH,GACnB,OAAOsC,aAAajqH,OAASwX,MAAMyyG,EAAEv+G,UACvC,CACA,SAASs+G,EAAQrC,EAAM2tB,GACrB,OAAO3tB,EAAKj8G,UAAY4pI,EAAU5pI,SACpC,CACA,SAAS6pI,EAAW5tB,EAAM2tB,GACxB,OAAOtrB,EAAQY,EAAWjD,GAAOiD,EAAW0qB,GAC9C,CACA,SAASzqB,EAASlD,EAAM2tB,GACtB,OAAO3tB,EAAKj8G,UAAY4pI,EAAU5pI,SACpC,CACA,SAAS8pI,EAAQ7tB,EAAM2tB,GACrB,OAAO3tB,EAAKj8G,YAAc4pI,EAAU5pI,SACtC,CACA,SAAS09G,EAAUzB,EAAM2tB,GACvB,OAAO3tB,EAAK0rB,YAAciC,EAAUjC,WAAa1rB,EAAKI,aAAeutB,EAAUvtB,YAAcJ,EAAK2rB,gBAAkBgC,EAAUhC,aAChI,CACA,SAASpqB,EAAYvB,EAAM2tB,GACzB,OAAO3tB,EAAKI,aAAeutB,EAAUvtB,YAAcJ,EAAK2rB,gBAAkBgC,EAAUhC,aACtF,CACA,SAASmC,EAAW9tB,EAAM2tB,GACxB,OAAO3tB,EAAK2rB,gBAAkBgC,EAAUhC,aAC1C,CACA,SAASvoB,EAAQpD,EAAM2tB,EAAWzkE,GAChC,MAAMo5C,EAAI,IAAIjqH,KAAK2nH,GACbhgH,EAAI,IAAI3H,KAAKs1I,GACnB,OAAQzkE,GACN,IAAK,QACH,OAAOo5C,EAAEqpB,cAAgB3rI,EAAE2rI,cAC7B,IAAK,WACH,OAAO1nI,KAAKmP,OAAOkvG,EAAElC,WAAapgH,EAAEogH,WAAmD,IAArCkC,EAAEqpB,cAAgB3rI,EAAE2rI,gBAAuB,GAC/F,IAAK,SACH,OAAOrpB,EAAElC,WAAapgH,EAAEogH,WAAmD,IAArCkC,EAAEqpB,cAAgB3rI,EAAE2rI,eAC5D,IAAK,QACH,OAAO1nI,KAAKmP,OAAOkvG,EAAEv+G,UAAY/D,EAAE+D,WAAa,QAClD,IAAK,OACH,OAAOE,KAAKmP,OAAOkvG,EAAEv+G,UAAY/D,EAAE+D,WAAa,OAClD,IAAK,QACH,OAAOE,KAAKmP,OAAOkvG,EAAEv+G,UAAY/D,EAAE+D,WAAa,MAClD,IAAK,UACH,OAAOE,KAAKmP,OAAOkvG,EAAEv+G,UAAY/D,EAAE+D,WAAa,KAClD,IAAK,UACH,OAAOE,KAAKmP,OAAOkvG,EAAEv+G,UAAY/D,EAAE+D,WAAa,KAClD,QAEI,OAAOu+G,EAAEv+G,UAAY/D,EAAE+D,UAG/B,CACA,SAASqpI,EAASptB,EAAMtH,GACtB,MAAM4J,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAE8qB,SAAS10B,GACJ4J,CACT,CACA,SAAS2qB,EAAWjtB,EAAMtH,GACxB,MAAM4J,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAE2qB,WAAWv0B,GACN4J,CACT,CACA,SAAShC,EAASN,EAAMtH,GACtB,MAAM4J,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAEhC,SAAS5H,GACJ4J,CACT,CACA,SAASsC,EAAQ5E,EAAMQ,GACrB,MAAM8B,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAEsC,QAAQpE,GACH8B,CACT,CACA,SAASnC,EAAQH,EAAMN,GACrB,MAAM4C,EAAI,IAAIjqH,KAAK2nH,GAEnB,OADAsC,EAAEyrB,YAAYruB,GACP4C,CACT,CACA,SAASW,EAAWjD,GAClB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe3rB,EAAKI,WAAYJ,EAAK0rB,UAAW,EAAG,EAAG,EAAG,EAChF,CACA,SAASvoB,EAASnD,GAChB,OAAO,IAAI3nH,KAAK2nH,EAAK2rB,cAAe3rB,EAAKI,WAAYJ,EAAK0rB,UAAW,GAAI,GAAI,GAAI,IACnF,CACO,MAAMsC,EACX,WAAA9zI,CAAY4S,GACV/N,KAAKo0G,OAASrmG,EAAQqmG,OACtBp0G,KAAKstI,QAAUv/H,EAAQu/H,OACzB,CACA,IAAArsB,CAAK5pH,GACH,OAAO4pH,EAAK5pH,EACd,CACA,QAAA8qH,CAASlB,GACP,OAAOA,CACT,CACA,KAAAqB,CAAMrB,GACJ,OAAOqB,EAAMtiH,KAAMihH,EACrB,CACA,QAAA+sB,CAAS/sB,GACP,OAAO+sB,EAAS/sB,EAClB,CACA,UAAAgtB,CAAWhtB,EAAMlmG,GACf,OAAOkzH,EAAWhtB,EAAMlmG,EAC1B,CACA,QAAAqzH,CAASntB,EAAMlmG,GACb,OAAOqzH,EAASntB,EAAMlmG,EACxB,CACA,OAAAinG,CAAQf,EAAMlmG,GACZ,OAAOinG,EAAQf,EAAMlmG,EACvB,CACA,QAAAwzH,CAASttB,EAAMlmG,GACb,OAAOwzH,EAASttB,EAAMlmG,EACxB,CACA,SAAAyzH,CAAUvtB,EAAMlmG,GACd,OAAOyzH,EAAUvtB,EAAMlmG,EACzB,CACA,YAAA4mG,CAAaV,EAAMH,GACjB,OAAOa,EAAaV,EAAMjhH,KAAKo0G,OAAQ0M,EAAiB70G,OAAO60G,QAAkB79G,EACnF,CACA,WAAAmgH,CAAYnC,EAAMH,GAChB,OAAOsC,EAAYnC,EAAMjhH,KAAKo0G,OAAQ0M,EAAiB70G,OAAO60G,QAAkB79G,EAClF,CACA,SAAA4pI,CAAU5rB,GACR,OAAO4rB,EAAU5rB,EAAMjhH,KAAKo0G,OAC9B,CACA,YAAAkN,CAAaL,GACX,OAAOK,EAAaL,EACtB,CACA,UAAA0B,CAAW1B,GACT,OAAO0B,EAAW1B,EACpB,CACA,MAAA6B,CAAO7B,EAAMosB,GACX,OAAOvqB,EAAO7B,EAAMosB,EAAcrtI,KAAKo0G,OAAQp0G,KAAKstI,QACtD,CACA,OAAAwB,CAAQ7tB,EAAM2tB,GACZ,OAAOE,EAAQ7tB,EAAM2tB,EACvB,CACA,OAAAh+C,CAAQqwB,GACN,OAAOrwB,EAAQqwB,EACjB,CACA,aAAA0tB,CAAc1tB,EAAM7J,GAClB,OAAOu3B,EAAc1tB,EAAM7J,EAC7B,CACA,OAAAkM,CAAQrC,EAAM2tB,GACZ,OAAOtrB,EAAQrC,EAAM2tB,EACvB,CACA,UAAAC,CAAW5tB,EAAM2tB,GACf,OAAOC,EAAW5tB,EAAM2tB,EAC1B,CACA,QAAAzqB,CAASlD,EAAM2tB,GACb,OAAQtrB,EAAQrC,EAAM2tB,KAAeE,EAAQ7tB,EAAM2tB,EACrD,CACA,SAAAlsB,CAAUzB,EAAM2tB,GACd,OAAOlsB,EAAUzB,EAAM2tB,EACzB,CACA,WAAApsB,CAAYvB,EAAM2tB,GAChB,OAAOpsB,EAAYvB,EAAM2tB,EAC3B,CACA,UAAAG,CAAW9tB,EAAM2tB,GACf,OAAOG,EAAW9tB,EAAM2tB,EAC1B,CACA,UAAAV,CAAWjtB,EAAMtH,GACf,OAAOu0B,EAAWjtB,EAAMtH,EAC1B,CACA,QAAA00B,CAASptB,EAAMtH,GACb,OAAO00B,EAASptB,EAAMtH,EACxB,CACA,QAAA4H,CAASN,EAAMtH,GACb,OAAO4H,EAASN,EAAMtH,EACxB,CACA,OAAAkM,CAAQ5E,EAAMQ,GACZ,OAAOoE,EAAQ5E,EAAMQ,EACvB,CACA,OAAAL,CAAQH,EAAMN,GACZ,OAAOS,EAAQH,EAAMN,EACvB,CACA,OAAA0D,CAAQpD,EAAM2tB,EAAWzkE,GACvB,OAAOk6C,EAAQpD,EAAM2tB,EAAWzkE,EAClC,CACA,WAAAs6C,CAAY3D,GACV,OAAO2D,EAAYzkH,KAAKo0G,OAAQ0M,EAAiB70G,OAAO60G,QAAkB79G,EAC5E,CACA,OAAAi+G,CAAQD,GACN,OAAOC,EAAQD,EACjB,CACA,QAAAI,CAASJ,GACP,OAAOI,EAASJ,EAClB,CACA,OAAA0rB,CAAQ1rB,GACN,OAAO0rB,EAAQ1rB,EACjB,CACA,YAAA6D,CAAa7D,GACX,OAAO6D,EAAa7D,EACtB,CACA,gBAAAwtB,CAAiBxtB,GACf,OAAOwtB,EAAiBxtB,EAC1B,CACA,QAAAqtB,CAASrtB,GACP,OAAOqtB,EAASrtB,EAClB,CACA,UAAAktB,CAAWltB,GACT,OAAOktB,EAAWltB,EACpB,CACA,UAAAiD,CAAWjD,GACT,OAAOiD,EAAWjD,EACpB,CACA,QAAAmD,CAASnD,GACP,OAAOmD,EAASnD,EAClB,CACA,WAAAE,CAAYF,GACV,OAAOE,EAAYF,EACrB,CACA,SAAAytB,CAAUztB,GACR,OAAOytB,EAAUztB,EACnB,ECntBK,MAAMiuB,EAAoBj0I,OAAOm+D,IAAI,wBAC/B+1E,EAAoBl0I,OAAOm+D,IAAI,wBACrC,SAASg2E,GAAWrhI,EAASqmG,GAClC,MAAMi7B,GAAW,QAAU,CACzBruB,QAASiuB,EACT76B,OAAQ,CACNk7B,GAAI,QAEJC,GAAI,QACJC,GAAI,QACJC,IAAK,GACLC,GAAI,QACJC,GAAI,QACJruI,GAAI,QACJsuI,GAAI,QAEJC,GAAI,QACJC,GAAI,QACJC,GAAI,QAEJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJj3I,GAAI,QACJtC,GAAI,QACJw5I,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,OAAQ,QACRC,OAAQ,QACRC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,OAAQ,QACRC,OAAQ,UAETzjI,GACH,MAAO,CACLA,QAASshI,EACT37E,SAAU+9E,GAAepC,EAAUj7B,GAEvC,CACA,SAASq9B,GAAe1jI,EAASqmG,GAC/B,MAAM1gD,GAAW,QAAoC,oBAApB3lD,EAAQizG,QAEvC,IAAIjzG,EAAQizG,QAAQ,CACpB5M,OAAQrmG,EAAQqmG,OAAOA,EAAOtvG,QAAQzN,QAAU+8G,EAAOtvG,QAAQzN,MAC/Di2I,QAASv/H,EAAQu/H,UACdv/H,EAAQizG,SAIb,OAHA,QAAM5M,EAAOtvG,SAASzN,IACpBq8D,EAAS0gD,OAASrmG,EAAQqmG,OAAO/8G,IAAUA,GAASq8D,EAAS0gD,MAAM,IAE9D1gD,CACT,CACO,SAASg+E,KACd,MAAM3jI,GAAU,QAAOmhI,GACvB,IAAKnhI,EAAS,MAAM,IAAI05C,MAAM,kDAC9B,MAAM2sD,GAAS,UACf,OAAOq9B,GAAe1jI,EAASqmG,EACjC,CAGO,SAASu9B,GAAQ3wB,EAAS3pH,GAC/B,MAAM4pH,EAAOD,EAAQmB,SAAS9qH,GAC9B,IAAIspH,EAAOM,EAAK2rB,cACZgF,EAAO,IAAIt4I,KAAKqnH,EAAM,EAAG,GAC7B,GAAIM,EAAO2wB,EACTjxB,GAAc,EACdixB,EAAO,IAAIt4I,KAAKqnH,EAAM,EAAG,OACpB,CACL,MAAMkxB,EAAK,IAAIv4I,KAAKqnH,EAAO,EAAG,EAAG,GAC7BM,GAAQ4wB,IACVlxB,GAAc,EACdixB,EAAOC,EAEX,CACA,MAAMC,EAAW5sI,KAAKuE,IAAIw3G,EAAKj8G,UAAY4sI,EAAK5sI,WAC1C+sI,EAAW7sI,KAAK8P,KAAK88H,EAAW,OACtC,OAAO5sI,KAAKmP,MAAM09H,EAAW,GAAK,CACpC,C,uMCjGO,SAASC,EAAW53I,GACzB,IAAI+lE,EAAKn9D,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,EAAAo9D,EAAA,IAAmB,cAChG,MAAM,SACJ6xE,GACE9xE,EACJ,GAAI8xE,GAAY73I,KAAO63I,EAErB,OAAOA,EAAS73I,EAGpB,CCPO,MAAM83I,EAAiBj3I,OAAOm+D,IAAI,oBAClC,SAAS+4E,EAAepkI,GAC7B,OAAO,QAAIA,EACb,CACO,SAASqkI,IACd,MAAM/iH,GAAW,QAAO6iH,GACxB,IAAK7iH,EAAU,MAAM,IAAIo4B,MAAM,8CAC/B,OAAOp4B,CACT,CACO,SAASgjH,EAAgBhjH,EAAUthB,GACxC,MAAMukI,EAAmBF,IACnBG,GAAmB,QAAIljH,GACvB4D,GAAc,SAAS,KAC3B,MAAM2H,GAAW,QAAM7sB,GAAS6sB,UAChC,GAAIA,EAAU,OAAO03G,EAAiBj7I,MACtC,MAAMi3E,GAAS,QAAMvgE,GAASugE,QACxBn+B,GAAQ,QAAMpiC,GAASoiC,OACvBhD,GAAO,QAAMp/B,GAASo/B,MAC5B,GAA8B,MAA1BolG,EAAiBl7I,SAAmBi3E,GAAUn+B,GAAShD,GAAO,OAAOmlG,EAAiBj7I,MAC1F,IAAIm7I,GAAa,QAAUD,EAAiBl7I,MAAO,CACjD+Q,KAAMkqI,EAAiBj7I,QAEzB,GAAIi3E,EAAQ,OAAOkkE,EACnB,GAAIriG,GAAShD,EAAM,CACjB,MAAM9pC,EAAM4I,OAAOkkC,GAASkrB,KAC5B,IAAK,IAAIxhE,EAAI,EAAGA,GAAKwJ,EAAKxJ,IAAK,CAC7B,IAAK24I,KAAgB,SAAUA,GAC7B,MAEFA,EAAaA,EAAWpqI,IAC1B,CAMA,OALIoqI,GAA8B,kBAATrlG,GAAqBA,KAAQqlG,IACpDA,GAAa,SAAU,QAAUA,EAAY,CAC3CpqI,KAAMoqI,IACJA,EAAWrlG,KAEVqlG,CACT,CACA,OAAOA,EAAWpqI,MAAO,QAAUoqI,EAAWpqI,KAAMoqI,GAAcA,CAAU,IAG9E,OADA,QAAQN,EAAgBj/G,GACjBA,CACT,CACA,SAASw/G,EAAcp+E,EAAO5rD,GAC5B,MAAsC,qBAAxB4rD,EAAMz6D,QAAQ6O,IAAqE,qBAArC4rD,EAAMz6D,SAAQ,QAAY6O,GACxF,CACO,SAASiqI,IACd,IAAI94I,EAAQoJ,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7ExL,EAAOwL,UAAUlJ,OAAS,EAAIkJ,UAAU,QAAKC,EAC7CosB,EAAWrsB,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAKovI,IACnF,MAAMjyE,GAAK,EAAAC,EAAA,IAAmB,eAE9B,GADA5oE,EAAOA,GAAQ2oE,EAAGp7C,KAAKvtB,MAAQ2oE,EAAGp7C,KAAK4tH,QAClCn7I,EACH,MAAM,IAAIiwD,MAAM,gDAElB,MAAMmrF,GAAoB,SAAS,IAAMvjH,EAASh4B,QAAQuC,EAAMi5I,KAAOr7I,KACjEsqE,EAAS,IAAIgxE,MAAMl5I,EAAO,CAC9B,GAAAgD,CAAIjD,EAAQ8O,GACV,MAAM8zC,EAAYw2F,QAAQn2I,IAAIjD,EAAQ8O,GACtC,MAAa,UAATA,GAA6B,UAATA,EACf,CAACmqI,EAAkBv7I,QAAQoR,GAAO8zC,GAAWtgD,QAAOuN,GAAU,MAALA,IACvC,kBAATf,GAAsBgqI,EAActyE,EAAG9L,MAAO5rD,GAGzD8zC,OAFsCt5C,IAApC2vI,EAAkBv7I,QAAQoR,GAAsBmqI,EAAkBv7I,QAAQoR,QAA2CxF,IAAnCosB,EAASh4B,OAAON,SAAS0R,GAAsB4mB,EAASh4B,OAAON,SAAS0R,GAAQ8zC,CAG7K,IAEIy2F,GAAwB,UAY9B,SAASC,IACP,MAAMC,EAAWlB,EAAWE,EAAgB/xE,IAC5C,QAAQ+xE,GAAgB,SAAS,IACxBc,EAAsB37I,OAAQ,QAAU67I,GAAU77I,OAAS,CAAC,EAAG27I,EAAsB37I,OAAS67I,GAAU77I,QAEnH,CACA,OAjBA,SAAY,KACV,GAAIu7I,EAAkBv7I,MAAO,CAC3B,MAAM87I,EAAgB96I,OAAOyU,QAAQ8lI,EAAkBv7I,OAAO4E,QAAO6H,IACnE,IAAK1J,GAAO0J,EACZ,OAAO1J,EAAI2iD,WAAW3iD,EAAI,GAAGo4B,cAAc,IAE7CwgH,EAAsB37I,MAAQ87I,EAAcr5I,OAASzB,OAAO+6I,YAAYD,QAAiBlwI,CAC3F,MACE+vI,EAAsB37I,WAAQ4L,CAChC,IAQK,CACLrJ,MAAOkoE,EACPmxE,qBAEJ,C,mHC3FO,MAAMI,GAAiB,OAAa,CACzC1mD,WAAY,CAAC1gF,OAAQJ,QACrB+gF,UAAW,CAAC3gF,OAAQJ,SACnB,SACI,SAASynI,EAAS15I,EAAO+jE,GAC9B,IAAI41E,EAAa,OACjB,SAASC,EAASC,GAChBF,MACA,MAAMnyI,EAAQ6K,OAAOwnI,EAAY75I,EAAMgzF,UAAYhzF,EAAM+yF,YACzD,OAAO,IAAIt9B,SAAQhD,IACjBknF,GAAa,QAAMnyI,GAAO,KACxBu8D,IAAK81E,GACLpnF,EAAQonF,EAAU,GAClB,GAEN,CACA,SAAShzE,IACP,OAAO+yE,GAAS,EAClB,CACA,SAAS9yE,IACP,OAAO8yE,GAAS,EAClB,CACA,MAAO,CACLD,aACA9yE,eACAC,gBAEJ,C,6HC1BO,MAAMgzE,GAAqB,OAAa,CAC7C5oI,OAAQ,CAACmB,OAAQJ,QACjBuvD,UAAW,CAACnvD,OAAQJ,QACpBsvD,SAAU,CAAClvD,OAAQJ,QACnBqvD,UAAW,CAACjvD,OAAQJ,QACpBovD,SAAU,CAAChvD,OAAQJ,QACnBjB,MAAO,CAACqB,OAAQJ,SACf,aACI,SAAS8nI,EAAa/5I,GAC3B,MAAM8rE,GAAkB,SAAS,KAC/B,MAAMloB,EAAS,CAAC,EACV1yC,GAAS,QAAclR,EAAMkR,QAC7BswD,GAAY,QAAcxhE,EAAMwhE,WAChCD,GAAW,QAAcvhE,EAAMuhE,UAC/BD,GAAY,QAActhE,EAAMshE,WAChCD,GAAW,QAAcrhE,EAAMqhE,UAC/BrwD,GAAQ,QAAchR,EAAMgR,OAOlC,OANc,MAAVE,IAAgB0yC,EAAO1yC,OAASA,GACnB,MAAbswD,IAAmB5d,EAAO4d,UAAYA,GAC1B,MAAZD,IAAkB3d,EAAO2d,SAAWA,GACvB,MAAbD,IAAmB1d,EAAO0d,UAAYA,GAC1B,MAAZD,IAAkBzd,EAAOyd,SAAWA,GAC3B,MAATrwD,IAAe4yC,EAAO5yC,MAAQA,GAC3B4yC,CAAM,IAEf,MAAO,CACLkoB,kBAEJ,C,2NC5BO,MAAM/xD,EAAc,CAAC,KAAM,KAAM,KAAM,KAAM,OAEvCigI,EAAgB34I,OAAOm+D,IAAI,mBAClCy6E,EAAwB,CAC5BC,iBAAkB,KAClBC,WAAY,CACVC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,IAAK,OAGHC,EAAsB,WAC1B,IAAIvmI,EAAU/K,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK6wI,EAClF,OAAO,QAAUA,EAAuB9lI,EAC1C,EACA,SAASwmI,EAAeC,GACtB,OAAO,OAAeA,EAAM55I,OAAO+pB,WAA4B,kBAAR6vH,GAAoBA,EAAI/jI,aAAe,CAChG,CACA,SAASgkI,EAAgBD,GACvB,OAAO,OAAeA,EAAM55I,OAAOuzB,YAA6B,kBAARqmH,GAAoBA,EAAI9jI,cAAgB,CAClG,CACA,SAASgkI,EAAYF,GACnB,MAAM/0I,EAAY,OAAe+0I,EAAM55I,OAAO4E,UAAUC,UAAY,MACpE,SAASsL,EAAM69C,GACb,OAAO6I,QAAQhyD,EAAUsL,MAAM69C,GACjC,CACA,MAAMl+C,EAAUK,EAAM,YAChBN,EAAMM,EAAM,qBACZ4pI,EAAU5pI,EAAM,YAChB6pI,EAAW7pI,EAAM,aACjB8pI,EAAS9pI,EAAM,WACf+pI,EAAO/pI,EAAM,SACbgqI,EAAUhqI,EAAM,YAChBiqI,EAAQjqI,EAAM,UACdnK,EAAMmK,EAAM,QACZkqI,EAAMlqI,EAAM,QACZmqI,EAAQnqI,EAAM,UACpB,MAAO,CACLL,UACAD,MACAkqI,UACAC,WACAC,SACAC,OACAC,UACAC,QACAp0I,MACAq0I,MACAC,QACAjrI,MAAO,KACPuqI,IAAmB,QAAd/0I,EAET,CACO,SAAS01I,EAAcpnI,EAASymI,GACrC,MAAM,WACJT,EAAU,iBACVD,GACEQ,EAAoBvmI,GAClBjD,GAAS,QAAW2pI,EAAgBD,IACpClqI,GAAW,QAAWoqI,EAAYF,IAClC1mG,GAAQ,QAAS,CAAC,GAClBljC,GAAQ,QAAW2pI,EAAeC,IACxC,SAAShkI,IACP1F,EAAOzT,MAAQo9I,IACf7pI,EAAMvT,MAAQk9I,GAChB,CACA,SAAS13H,IACPrM,IACAlG,EAASjT,MAAQq9I,GACnB,CAwCA,OArCA,SAAY,KACV,MAAMV,EAAKppI,EAAMvT,MAAQ08I,EAAWE,GAC9BA,EAAKrpI,EAAMvT,MAAQ08I,EAAWG,KAAOF,EACrCE,EAAKtpI,EAAMvT,MAAQ08I,EAAWI,MAAQF,GAAMD,GAC5CG,EAAKvpI,EAAMvT,MAAQ08I,EAAWK,MAAQF,GAAMD,GAAMD,GAClDI,EAAKxpI,EAAMvT,MAAQ08I,EAAWM,OAASF,GAAMD,GAAMD,GAAMD,GACzDK,EAAMzpI,EAAMvT,OAAS08I,EAAWM,IAChC78I,EAAOw8I,EAAK,KAAOC,EAAK,KAAOC,EAAK,KAAOC,EAAK,KAAOC,EAAK,KAAO,MACnEgB,EAA8C,kBAArBtB,EAAgCA,EAAmBC,EAAWD,GACvFzxD,EAASz3E,EAAMvT,MAAQ+9I,EAC7BtnG,EAAMkmG,GAAKA,EACXlmG,EAAMmmG,GAAKA,EACXnmG,EAAMomG,GAAKA,EACXpmG,EAAMqmG,GAAKA,EACXrmG,EAAMsmG,GAAKA,EACXtmG,EAAMumG,IAAMA,EACZvmG,EAAMunG,SAAWrB,EACjBlmG,EAAMwnG,UAAYtB,GAAMC,GACxBnmG,EAAMynG,UAAYvB,GAAMC,GAAMC,GAC9BpmG,EAAM0nG,UAAYxB,GAAMC,GAAMC,GAAMC,GACpCrmG,EAAM2nG,YAAcvB,GAAMC,GAAMC,GAAMC,GACtCvmG,EAAM4nG,YAAcvB,GAAMC,GAAMC,GAChCvmG,EAAM6nG,YAAcvB,GAAMC,GAC1BvmG,EAAM8nG,WAAavB,EACnBvmG,EAAMt2C,KAAOA,EACbs2C,EAAMhjC,OAASA,EAAOzT,MACtBy2C,EAAMljC,MAAQA,EAAMvT,MACpBy2C,EAAMu0C,OAASA,EACfv0C,EAAMgmG,iBAAmBA,EACzBhmG,EAAMxjC,SAAWA,EAASjT,MAC1By2C,EAAMimG,WAAaA,CAAU,IAE3B,MACFn5I,OAAO8C,iBAAiB,SAAU8S,EAAY,CAC5C2b,SAAS,IAGN,KACF,QAAO2hB,GACVjxB,SACA23H,MAAOA,EAEX,CACO,MAAMqB,GAAmB,OAAa,CAC3CxzD,OAAQ,CACNt9D,KAAM0sC,QACNpR,SAAS,GAEXyzF,iBAAkB,CAAC7nI,OAAQJ,SAC1B,WACI,SAASiqI,IACd,IAAIl8I,EAAQoJ,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7ExL,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,IAAK,UAC/E,MAAMq9B,GAAU,QAAOuzG,GACvB,IAAKvzG,EAAS,MAAM,IAAIonB,MAAM,4CAC9B,MAAM46B,GAAS,SAAS,KACtB,GAAoB,MAAhBzoF,EAAMyoF,OAAgB,OAAOzoF,EAAMyoF,OACvC,IAAKzoF,EAAMk6I,iBAAkB,OAAOzzG,EAAQgiD,OAAOhrF,MACnD,MAAM+9I,EAAoD,kBAA3Bx7I,EAAMk6I,iBAAgCl6I,EAAMk6I,iBAAmBzzG,EAAQ0zG,WAAW18I,MAAMuC,EAAMk6I,kBAC7H,OAAOzzG,EAAQz1B,MAAMvT,MAAQ+9I,CAAe,IAExC7yD,GAAiB,SAAS,IACzB/qF,EACE,CACL,CAAC,GAAGA,aAAiB6qF,EAAOhrF,OAFZ,CAAC,IAKrB,MAAO,IACFgpC,EACHkiD,iBACAF,SAEJ,C,oECrJA,MAAM0zD,EAAO96I,OAAO,kBAMpB,SAAS+6I,EAAch7I,EAAKZ,GAC1B,IAAI67I,EAAaj7I,EACjB,MAAOi7I,EAAY,CACjB,MAAMl8I,EAAag5I,QAAQ52I,yBAAyB85I,EAAY77I,GAChE,GAAIL,EAAY,OAAOA,EACvBk8I,EAAa59I,OAAO69I,eAAeD,EACrC,CAEF,CACO,SAAShvE,EAAYttE,GAC1B,IAAK,IAAI+V,EAAO1M,UAAUlJ,OAAQg8G,EAAO,IAAIp6G,MAAMgU,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGkmG,EAAKlmG,EAAO,GAAK5M,UAAU4M,GAG7B,OADAjW,EAAOo8I,GAAQjgC,EACR,IAAIg9B,MAAMn5I,EAAQ,CACvB,GAAAiD,CAAIjD,EAAQS,GACV,GAAI24I,QAAQx6I,IAAIoB,EAAQS,GACtB,OAAO24I,QAAQn2I,IAAIjD,EAAQS,GAI7B,GAAmB,kBAARA,IAAoBA,EAAI2iD,WAAW,OAAQ3iD,EAAI2iD,WAAW,MACrE,IAAK,MAAMwX,KAAOuhD,EAChB,GAAIvhD,EAAIl9D,OAAS07I,QAAQx6I,IAAIg8D,EAAIl9D,MAAO+C,GAAM,CAC5C,MAAMkmB,EAAMyyH,QAAQn2I,IAAI23D,EAAIl9D,MAAO+C,GACnC,MAAsB,oBAARkmB,EAAqBA,EAAI7kB,KAAK84D,EAAIl9D,OAASipB,CAC3D,CAEJ,EACA,GAAA/nB,CAAIoB,EAAQS,GACV,GAAI24I,QAAQx6I,IAAIoB,EAAQS,GACtB,OAAO,EAIT,GAAmB,kBAARA,GAAoBA,EAAI2iD,WAAW,MAAQ3iD,EAAI2iD,WAAW,MAAO,OAAO,EACnF,IAAK,MAAMwX,KAAOuhD,EAChB,GAAIvhD,EAAIl9D,OAAS07I,QAAQx6I,IAAIg8D,EAAIl9D,MAAO+C,GACtC,OAAO,EAGX,OAAO,CACT,EACA,GAAAyC,CAAIlD,EAAQS,EAAK/C,GACf,GAAI07I,QAAQx6I,IAAIoB,EAAQS,GACtB,OAAO24I,QAAQl2I,IAAIlD,EAAQS,EAAK/C,GAIlC,GAAmB,kBAAR+C,GAAoBA,EAAI2iD,WAAW,MAAQ3iD,EAAI2iD,WAAW,MAAO,OAAO,EACnF,IAAK,MAAMwX,KAAOuhD,EAChB,GAAIvhD,EAAIl9D,OAAS07I,QAAQx6I,IAAIg8D,EAAIl9D,MAAO+C,GACtC,OAAO24I,QAAQl2I,IAAI03D,EAAIl9D,MAAO+C,EAAK/C,GAGvC,OAAO,CACT,EACA,wBAAA8E,CAAyBxC,EAAQS,GAC/B,MAAML,EAAag5I,QAAQ52I,yBAAyBxC,EAAQS,GAC5D,GAAIL,EAAY,OAAOA,EAGvB,GAAmB,kBAARK,IAAoBA,EAAI2iD,WAAW,OAAQ3iD,EAAI2iD,WAAW,MAArE,CAGA,IAAK,MAAMwX,KAAOuhD,EAAM,CACtB,IAAKvhD,EAAIl9D,MAAO,SAChB,MAAM0C,EAAai8I,EAAczhF,EAAIl9D,MAAO+C,KAAS,MAAOm6D,EAAIl9D,MAAQ2+I,EAAczhF,EAAIl9D,MAAM+d,GAAG+gI,WAAY/7I,QAAO6I,GACtH,GAAIlJ,EAAY,OAAOA,CACzB,CAGA,IAAK,MAAMw6D,KAAOuhD,EAAM,CACtB,MAAMsgC,EAAY7hF,EAAIl9D,OAASk9D,EAAIl9D,MAAM0+I,GACzC,IAAKK,EAAW,SAChB,MAAM58B,EAAQ48B,EAAUl5I,QACxB,MAAOs8G,EAAM1/G,OAAQ,CACnB,MAAMy6D,EAAMilD,EAAMhzG,QACZzM,EAAai8I,EAAczhF,EAAIl9D,MAAO+C,GAC5C,GAAIL,EAAY,OAAOA,EACvB,MAAMq8I,EAAY7hF,EAAIl9D,OAASk9D,EAAIl9D,MAAM0+I,GACrCK,GAAW58B,EAAMp9G,QAAQg6I,EAC/B,CACF,CArBkF,CAuBpF,GAEJ,C,gKC3FO,MAAMC,EAAap7I,OAAOm+D,IAAI,gBACrC,SAASk9E,IACP,MAAO,CACL5yE,eAAWzgE,EACXqB,SAAU,IACVujE,QAAQ,EACRh0C,OAAQ,EACRuyC,OAAQ,iBACRmwE,SAAU,CACRC,OAAQ95I,GAAKA,EACb+5I,WAAY/5I,GAAKA,GAAK,EACtBg6I,YAAah6I,GAAKA,GAAK,EAAIA,GAC3Bi6I,cAAej6I,GAAKA,EAAI,GAAM,EAAIA,GAAK,GAAU,EAAI,EAAIA,GAAKA,EAAlB,EAC5Ck6I,YAAal6I,GAAKA,GAAK,EACvBm6I,aAAcn6I,KAAOA,GAAK,EAAI,EAC9Bo6I,eAAgBp6I,GAAKA,EAAI,GAAM,EAAIA,GAAK,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,EAClFq6I,YAAar6I,GAAKA,GAAK,EACvBs6I,aAAct6I,GAAK,KAAMA,GAAK,EAC9Bu6I,eAAgBv6I,GAAKA,EAAI,GAAM,EAAIA,GAAK,EAAI,EAAI,IAAMA,GAAK,EAC3Dw6I,YAAax6I,GAAKA,GAAK,EACvBy6I,aAAcz6I,GAAK,IAAMA,GAAK,EAC9B06I,eAAgB16I,GAAKA,EAAI,GAAM,GAAKA,GAAK,EAAI,EAAI,KAAOA,GAAK,GAGnE,CACA,SAAS26I,EAAa/1I,GACpB,OAAOogE,EAAUpgE,KAAQvJ,SAASwuE,kBAAoBxuE,SAAS0F,KACjE,CACA,SAASikE,EAAUpgE,GACjB,MAAqB,kBAAPA,EAAkBvJ,SAASgG,cAAcuD,IAAM,QAAWA,EAC1E,CACA,SAASg4D,EAAU3/D,EAAQ0pF,EAAY9xE,GACrC,GAAsB,kBAAX5X,EAAqB,OAAO0pF,GAAc9xE,GAAO5X,EAASA,EACrE,IAAI2H,EAAKogE,EAAU/nE,GACf29I,EAAc,EAClB,MAAOh2I,EACLg2I,GAAej0D,EAAa/hF,EAAG6V,WAAa7V,EAAG8V,UAC/C9V,EAAKA,EAAGq4D,aAEV,OAAO29E,CACT,CACO,SAASC,EAAWxpI,EAASqmG,GAClC,MAAO,CACL7iG,IAAK6iG,EAAO35C,MACZ1sD,SAAS,QAAUuoI,IAAevoI,GAEtC,CACO0wD,eAAeh5D,EAAS+9D,EAAS6rE,EAAUhsD,EAAYP,GAC5D,MAAM1xD,EAAWiyD,EAAa,aAAe,YACvCt1E,GAAU,QAAU+0E,GAAM/0E,SAAWuoI,IAAejH,GACpD99H,EAAMuxE,GAAMvxE,IAAIla,MAChBsC,GAA6B,kBAAZ6pE,EAAuBA,EAAU9B,EAAU8B,KAAa,EACzEE,EAAkC,WAAtB31D,EAAQ21D,WAA0B/pE,aAAkBkJ,YAAclJ,EAAOoP,cAAgBsuI,EAAatpI,EAAQ21D,WAC1H8zE,EAAiC,oBAAnBzpI,EAAQq4D,OAAwBr4D,EAAQq4D,OAASr4D,EAAQwoI,SAASxoI,EAAQq4D,QAC9F,IAAKoxE,EAAM,MAAM,IAAI57I,UAAU,oBAAoBmS,EAAQq4D,sBAC3D,IAAI/P,EACJ,GAAsB,kBAAX18D,EACT08D,EAAiBiD,EAAU3/D,EAAQ0pF,EAAY9xE,QAG/C,GADA8kD,EAAiBiD,EAAU3/D,EAAQ0pF,EAAY9xE,GAAO+nD,EAAUoK,EAAW2f,EAAY9xE,GACnFxD,EAAQ85D,OAAQ,CAClB,MAAMrqB,EAAS5iD,OAAOqF,iBAAiBtG,GACjC89I,EAAej6F,EAAOt9C,iBAAiB,kBACzCu3I,IAAcphF,GAAkBxlD,SAAS4mI,EAAc,IAC7D,CAEFphF,GAAkBtoD,EAAQ8lB,OAC1BwiC,EAAiBqhF,EAAYh0E,EAAWrN,IAAkB9kD,IAAO8xE,GACjE,MAAMs0D,EAAgBj0E,EAAUtyC,IAAa,EAC7C,GAAIilC,IAAmBshF,EAAe,OAAOtoF,QAAQhD,QAAQgK,GAC7D,MAAMhyD,EAAY86D,YAAY99D,MAC9B,OAAO,IAAIguD,SAAQhD,GAAW7rD,uBAAsB,SAAS8d,EAAKs5H,GAChE,MAAMC,EAAcD,EAAcvzI,EAC5BY,EAAW4yI,EAAc9pI,EAAQzJ,SACjC1F,EAAWsG,KAAKmP,MAAMsjI,GAAiBthF,EAAiBshF,GAAiBH,GAAK,QAAMvyI,EAAU,EAAG,KAIvG,OAHAy+D,EAAUtyC,GAAYxyB,EAGlBqG,GAAY,GAAKC,KAAKuE,IAAI7K,EAAW8kE,EAAUtyC,IAAa,GACvDi7B,EAAQgK,GACNpxD,EAAW,IAEpB,QAAY,kCACLonD,EAAQqX,EAAUtyC,UAE3B5wB,sBAAsB8d,EACxB,KACF,CACO,SAASw5H,IACd,IAAIzI,EAAWrsI,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACpF,MAAM+0I,GAAe,QAAO1B,IACtB,MACJ57E,IACE,UACJ,IAAKs9E,EAAc,MAAM,IAAItwF,MAAM,mDACnC,MAAMq7B,EAAO,IACRi1D,EAEHxmI,KAAK,SAAS,IAAMwmI,EAAaxmI,IAAIla,OAASojE,EAAMpjE,SAEtDonE,eAAe5+D,EAAGlG,EAAQoU,GACxB,OAAOtI,EAAS9L,GAAQ,QAAU01I,EAAUthI,IAAU,EAAO+0E,EAC/D,CAIA,OAHAjjF,EAAGwjF,WAAa5kB,MAAO9kE,EAAQoU,IACtBtI,EAAS9L,GAAQ,QAAU01I,EAAUthI,IAAU,EAAM+0E,GAEvDjjF,CACT,CAMA,SAAS63I,EAAYh0E,EAAWrsE,EAAOka,EAAK8xE,GAC1C,MAAM,YACJvB,EAAW,aACXzN,GACE3Q,GACG0f,EAAgB40D,GAAmBt0E,IAAc3rE,SAASwuE,iBAAmB,CAAC3rE,OAAO+pB,WAAY/pB,OAAOuzB,aAAe,CAACu1C,EAAUr6D,YAAaq6D,EAAUzsD,cAChK,IAAI7R,EACAD,EAaJ,OAZIk+E,EACE9xE,GACFnM,IAAQ08E,EAAcsB,GACtBj+E,EAAM,IAENC,EAAM,EACND,EAAM28E,EAAcsB,IAGtBh+E,EAAM,EACND,EAAMkvE,GAAgB2jE,GAEjB9yI,KAAKC,IAAID,KAAKE,IAAI/N,EAAO8N,GAAMC,EACxC,C,sGCtIO,SAAS6yI,IACd,IAAK,KAAY,OAAO,SAAW,GACnC,MAAM,IACJzD,IACE,UACJ,GAAIA,EAAK,CACP,MAAM7uE,GAAY,SAAW,GAI7B,OAHA,SAAU,KACRA,EAAUtuE,OAAQ,CAAI,IAEjBsuE,CACT,CACE,OAAO,SAAW,EAEtB,C,6SCbO,MAAMuyE,EAAY,CAACrsI,OAAQ/T,SAAUO,OAAQqD,OACvCy8I,EAAal9I,OAAOm+D,IAAI,iBACxBg/E,GAAgB,OAAa,CACxC5/D,KAAM,CACJzzD,KAAMmzH,GAGR/wI,IAAK,CACH4d,KAAMlZ,OACN2lD,UAAU,IAEX,QACU6mF,GAAiB,UAAmB,CAC/C7gJ,KAAM,iBACNoC,MAAOw+I,IACP,KAAAvmF,CAAMj4D,EAAOkK,GACX,IAAI,MACFguD,GACEhuD,EACJ,MAAO,KACL,MAAMw0I,EAAO1+I,EAAM4+E,KACnB,OAAO,QAAa5+E,EAAMuN,IAAK,KAAM,CACnCk5C,QAAS,IAAM,CAACzmD,EAAM4+E,MAAO,QAAa8/D,EAAM,KAAM,MAAQxmF,EAAMzR,cACpE,CAEN,IAEWk4F,GAAW,QAAgB,CACtC/gJ,KAAM,WACN07D,cAAc,EACdt5D,MAAOw+I,IACP,KAAAvmF,CAAMj4D,EAAOqT,GACX,IAAI,MACFqyC,GACEryC,EACJ,MAAO,KACE,QAAarT,EAAMuN,KAAK,QAAYm4C,EAAO,CAChD,MAAS,OACP,CACFe,QAAS,IAAM,EAAC,QAAa,MAAO,CAClC,MAAS,cACT,MAAS,6BACT,QAAW,YACX,KAAQ,MACR,cAAe,QACd,CAAC3kD,MAAMC,QAAQ/B,EAAM4+E,MAAQ5+E,EAAM4+E,KAAKr7E,KAAIof,GAAQ7gB,MAAMC,QAAQ4gB,IAAQ,QAAa,OAAQ,CAChG,EAAKA,EAAK,GACV,eAAgBA,EAAK,IACpB,OAAQ,QAAa,OAAQ,CAC9B,EAAKA,GACJ,SAAS,QAAa,OAAQ,CAC/B,EAAK3iB,EAAM4+E,MACV,UAGT,IAEWggE,GAAgB,QAAgB,CAC3ChhJ,KAAM,gBACNoC,MAAOw+I,IACP,KAAAvmF,CAAMj4D,GACJ,MAAO,KACE,QAAaA,EAAMuN,IAAK,KAAM,CACnCk5C,QAAS,IAAM,CAACzmD,EAAM4+E,OAG5B,IAEWigE,GAAa,QAAgB,CACxCjhJ,KAAM,aACNoC,MAAOw+I,IACP,KAAAvmF,CAAMj4D,GACJ,MAAO,KACE,QAAaA,EAAMuN,IAAK,CAC7B,MAASvN,EAAM4+E,MACd,KAEP,IAEF,SAAS89D,IACP,MAAO,CACLoC,IAAK,CACHz4F,UAAWs4F,GAEblmF,MAAO,CACLpS,UAAWw4F,GAGjB,CAGO,SAASE,EAAY5qI,GAC1B,MAAM6qI,EAAOtC,IACPuC,EAAa9qI,GAAS8qI,YAAc,MAI1C,MAHmB,QAAfA,GAAyBD,EAAKE,MAChCF,EAAKE,IAAM,MAEN,QAAU,CACfD,aACAD,OACAptF,QAAS,IACJ,IAEHutF,QAAS,CAAC,qDAAsD,CAAC,yFAA0F,KAC3J,kBAAmB,gJACnB,eAAgB,CAAC,uYAAwY,CAAC,qdAAsd,OAGj3BhrI,EACL,CACO,MAAMirI,EAAUp/I,IACrB,MAAMq/I,GAAQ,QAAOd,GACrB,IAAKc,EAAO,MAAM,IAAIxxF,MAAM,kCAC5B,MAAMkxB,GAAW,SAAS,KACxB,MAAMugE,GAAY,QAAMt/I,GACxB,IAAKs/I,EAAW,MAAO,CACrBj5F,UAAWo4F,GAEb,IAAI7/D,EAAO0gE,EAQX,GAPoB,kBAAT1gE,IACTA,EAAOA,EAAKz3E,OACRy3E,EAAKz7B,WAAW,OAClBy7B,EAAOygE,EAAMztF,UAAUgtB,EAAKt7E,MAAM,MAGjCs7E,IAAM,QAAY,gCAAgC0gE,MACnDx9I,MAAMC,QAAQ68E,GAChB,MAAO,CACLv4B,UAAWs4F,EACX//D,QAEG,GAAoB,kBAATA,EAChB,MAAO,CACLv4B,UAAWo4F,EACX7/D,QAGJ,MAAM2gE,EAAc9gJ,OAAO0D,KAAKk9I,EAAML,MAAM5+H,MAAKo/H,GAA2B,kBAAT5gE,GAAqBA,EAAKz7B,WAAW,GAAGq8F,QACrGC,EAAWF,EAAc3gE,EAAKt7E,MAAMi8I,EAAYr/I,OAAS,GAAK0+E,EAC9D8gE,EAAUL,EAAML,KAAKO,GAAeF,EAAMJ,YAChD,MAAO,CACL54F,UAAWq5F,EAAQr5F,UACnBu4B,KAAM6gE,EACP,IAEH,MAAO,CACL1gE,WACD,C,mHCrJI,MAAM4gE,GAAgB,OAAa,CACxC5yE,MAAOlV,SACN,QACI,SAAS+nF,EAAQ5/I,EAAO8kE,GAC7B,MAAMgT,GAAW,SAAW,GACtBtM,GAAa,SAAS,IAAMsM,EAASr6E,OAASuC,EAAM+sE,OAASjI,EAAOrnE,QAE1E,SAASguE,IACFzrE,EAAM+sE,QAAO+K,EAASr6E,OAAQ,EACrC,CACA,OAJA,QAAMqnE,GAAQ,IAAMgT,EAASr6E,OAAQ,IAI9B,CACLq6E,WACAtM,aACAC,eAEJ,C,gNClBA,GACEs3B,MAAO,QACPvW,KAAM,OACNroB,MAAO,QACP07E,QAAS,UACTC,YAAa,CACXC,GAAI,KACJ3qC,OAAQ,UAEV4qC,aAAc,CACZC,cAAe,4BACft8B,YAAa,oBAEfu8B,UAAW,CACT9hC,iBAAkB,iBAClB5B,UAAW,CACT2jC,eAAgB,qBAChBC,cAAe,oBACfC,SAAU,cACVC,aAAc,8BACdC,mBAAoB,+BACpBC,kBAAmB,+BAErB9pC,OAAQ,WAEV+pC,WAAY,CACVriC,iBAAkB,kBAClBsiC,gBAAiB,MACjBxoC,SAAU,YACVC,SAAU,gBACVwoC,UAAW,aACXC,SAAU,YACVviC,SAAU,kBAEZwiC,eAAgB,CACd56G,QAAS,MAEX66G,WAAY,CACVC,cAAe,eACfvjC,MAAO,CACLzkC,MAAO,eACP6Y,OAAQ,eAEV7Y,MAAO,cACP6Y,OAAQ,aACRvL,MAAO,CACL3O,YAAa,eAGjBymB,WAAY,oBACZ6iD,SAAU,CACRxyI,KAAM,kBACN5M,KAAM,cACN46G,UAAW,CACTykC,UAAW,8BAGfC,SAAU,CACRC,WAAY,WACZ74B,MAAO,SAETjiC,MAAO,CACLrzB,MAAO,YACPouF,cAAe,uBACfC,aAAc,sBACdC,IAAK,kCAEPC,UAAW,CACT3tD,QAAS,YACT4tD,YAAa,4BAEfC,WAAY,CACVC,GAAI,KACJC,GAAI,KACJ5oE,MAAO,eAETj3C,WAAY,CACV06E,UAAW,CACTjpE,KAAM,wBACN3xC,KAAM,YACNggJ,SAAU,gBACVpqC,KAAM,iBACNqB,YAAa,yBACbhe,MAAO,aACPhrC,KAAM,cAGVgyF,QAAS,CACPjgJ,KAAM,OACN4M,KAAM,YAERstH,OAAQ,CACNtf,UAAW,CACTvnF,KAAM,sBAGV8sD,QAAS,aACT+/D,eAAgB,CACdC,SAAU,YACVttB,MAAO,YC9FX,MAAMutB,EAAc,YACd15I,EAAU,CAACupH,EAAKlnH,IACbknH,EAAIvpH,QAAQ,cAAc,CAAC6I,EAAOiF,IAChCnE,OAAOtH,GAAQyL,MAGpB6rI,EAA0B,CAAC/2I,EAASg3I,EAAUlsD,IAC3C,SAAUx1F,GACf,IAAK,IAAIsV,EAAO1M,UAAUlJ,OAAQyK,EAAS,IAAI7I,MAAMgU,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IACpGrL,EAAOqL,EAAO,GAAK5M,UAAU4M,GAE/B,IAAKxV,EAAI2iD,WAAW6+F,GAClB,OAAO15I,EAAQ9H,EAAKmK,GAEtB,MAAMw3I,EAAW3hJ,EAAI8H,QAAQ05I,EAAa,IACpCI,EAAgBl3I,EAAQzN,OAASu4F,EAASv4F,MAAMyN,EAAQzN,OACxDo4H,EAAiBqsB,EAASzkJ,OAASu4F,EAASv4F,MAAMykJ,EAASzkJ,OACjE,IAAIo0H,GAAM,QAAqBuwB,EAAeD,EAAU,MAaxD,OAZKtwB,KACH,EAAAzkH,EAAA,IAAY,oBAAoB5M,oBAAsB0K,EAAQzN,kCAC9Do0H,GAAM,QAAqBgE,EAAgBssB,EAAU,OAElDtwB,KACH,EAAAzkH,EAAA,IAAa,oBAAoB5M,4BACjCqxH,EAAMrxH,GAEW,kBAARqxH,KACT,EAAAzkH,EAAA,IAAa,oBAAoB5M,6BACjCqxH,EAAMrxH,GAED8H,EAAQupH,EAAKlnH,EACtB,EAEF,SAAS03I,EAAqBn3I,EAASg3I,GACrC,MAAO,CAACzkJ,EAAO0W,KACb,MAAMmuI,EAAe,IAAIvnC,KAAK84B,aAAa,CAAC3oI,EAAQzN,MAAOykJ,EAASzkJ,OAAQ0W,GAC5E,OAAOmuI,EAAap5B,OAAOzrH,EAAM,CAErC,CACA,SAAS8kJ,EAAYviJ,EAAO6O,EAAM2zI,GAChC,MAAMz+H,GAAW,OAAgB/jB,EAAO6O,EAAM7O,EAAM6O,IAAS2zI,EAAS/kJ,OAStE,OANAsmB,EAAStmB,MAAQuC,EAAM6O,IAAS2zI,EAAS/kJ,OACzC,QAAM+kJ,GAAU5yI,IACK,MAAf5P,EAAM6O,KACRkV,EAAStmB,MAAQ+kJ,EAAS/kJ,MAC5B,IAEKsmB,CACT,CACA,SAAS0+H,EAAsBvuG,GAC7B,OAAOl0C,IACL,MAAMkL,EAAUq3I,EAAYviJ,EAAO,SAAUk0C,EAAMhpC,SAC7Cg3I,EAAWK,EAAYviJ,EAAO,WAAYk0C,EAAMguG,UAChDlsD,EAAWusD,EAAYviJ,EAAO,WAAYk0C,EAAM8hD,UACtD,MAAO,CACLp4F,KAAM,UACNsN,UACAg3I,WACAlsD,WACAlzF,EAAGm/I,EAAwB/2I,EAASg3I,EAAUlsD,GAC9CtzF,EAAG2/I,EAAqBn3I,EAASg3I,GACjCjjF,QAASwjF,EAAsB,CAC7Bv3I,UACAg3I,WACAlsD,aAEH,CAEL,CACO,SAAS0sD,EAAqBvuI,GACnC,MAAMjJ,GAAU,QAAWiJ,GAASqmG,QAAU,MACxC0nC,GAAW,QAAW/tI,GAAS+tI,UAAY,MAC3ClsD,GAAW,QAAI,CACnBggD,GAAE,KACC7hI,GAAS6hF,WAEd,MAAO,CACLp4F,KAAM,UACNsN,UACAg3I,WACAlsD,WACAlzF,EAAGm/I,EAAwB/2I,EAASg3I,EAAUlsD,GAC9CtzF,EAAG2/I,EAAqBn3I,EAASg3I,GACjCjjF,QAASwjF,EAAsB,CAC7Bv3I,UACAg3I,WACAlsD,aAGN,CC7FO,MAAM2sD,EAAethJ,OAAOm+D,IAAI,kBACvC,SAASojF,EAAiBxhJ,GACxB,OAAmB,MAAZA,EAAIxD,IACb,CACO,SAASilJ,EAAa1uI,GAC3B,MAAM2uI,EAAO3uI,GAASizG,SAAWw7B,EAAiBzuI,GAASizG,SAAWjzG,GAASizG,QAAUs7B,EAAqBvuI,GACxGwD,EAAMorI,EAAUD,EAAM3uI,GAC5B,MAAO,IACF2uI,KACAnrI,EAEP,CACO,SAASqrI,IACd,MAAMxoC,GAAS,QAAOmoC,GACtB,IAAKnoC,EAAQ,MAAM,IAAI3sD,MAAM,qDAC7B,OAAO2sD,CACT,CACO,SAASyoC,EAAcjjJ,GAC5B,MAAMw6G,GAAS,QAAOmoC,GACtB,IAAKnoC,EAAQ,MAAM,IAAI3sD,MAAM,qDAC7B,MAAMi1F,EAAOtoC,EAAOv7C,QAAQj/D,GACtB2X,EAAMurI,EAAWJ,EAAMtoC,EAAO7iG,IAAK3X,GACnCsW,EAAO,IACRwsI,KACAnrI,GAGL,OADA,QAAQgrI,EAAcrsI,GACfA,CACT,CAIyBjV,OAAOm+D,IAAI,eACpC,SAASk9E,IACP,MAAO,CACLhH,IAAI,EACJyN,IAAI,EACJxN,IAAI,EACJC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJruI,IAAI,EACJsuI,IAAI,EACJoN,IAAI,EACJnN,IAAI,EACJC,IAAI,EACJC,IAAI,EACJkN,IAAI,EACJjN,IAAI,EACJC,IAAI,EACJC,IAAI,EACJj3I,IAAI,EACJtC,IAAI,EACJw5I,IAAI,EACJ+M,IAAI,EACJ9M,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EAEZ,CACO,SAASmL,EAAUD,EAAM3uI,GAC9B,MAAMwD,GAAM,QAAIxD,GAASwD,KAAO+kI,KAC1B77E,GAAQ,SAAS,IAAMlpD,EAAIla,MAAMqlJ,EAAK53I,QAAQzN,SAAU,IAC9D,MAAO,CACLojE,QACAlpD,MACA4zD,YAAY,SAAS,IAAM,iBAAgB1K,EAAMpjE,MAAQ,MAAQ,SAErE,CACO,SAASylJ,EAAW1oC,EAAQ7iG,EAAK3X,GACtC,MAAM6gE,GAAQ,SAAS,IAAM7gE,EAAM2X,KAAOA,EAAIla,MAAM+8G,EAAOtvG,QAAQzN,SAAU,IAC7E,MAAO,CACLojE,QACAlpD,MACA4zD,YAAY,SAAS,IAAM,iBAAgB1K,EAAMpjE,MAAQ,MAAQ,SAErE,CACO,SAAS8lJ,IACd,MAAM/oC,GAAS,QAAOmoC,GACtB,IAAKnoC,EAAQ,MAAM,IAAI3sD,MAAM,kDAC7B,MAAO,CACLgT,MAAO25C,EAAO35C,MACd0K,WAAYivC,EAAOjvC,WAEvB,C,gHCrGO,SAASi4E,EAAgBxjJ,EAAO6O,EAAM40I,GAC3C,IAAIpxD,EAAcjpF,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAKwG,GAAKA,EACvF0iF,EAAelpF,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAKwG,GAAKA,EAC5F,MAAM22D,GAAK,QAAmB,mBACxBxiD,GAAW,aAAoB1a,IAAhBrJ,EAAM6O,GAAsB7O,EAAM6O,GAAQ40I,GACzDC,GAAY,QAAY70I,GACxB80I,EAAaD,IAAc70I,EAC3B+0I,EAAeD,GAAa,SAAS,KACpC3jJ,EAAM6O,MACA03D,EAAG9L,MAAMz6D,OAAO3C,eAAewR,KAAS03D,EAAG9L,MAAMz6D,OAAO3C,eAAeqmJ,KAAgBn9E,EAAG9L,MAAMz6D,OAAO3C,eAAe,YAAYwR,OAAW03D,EAAG9L,MAAMz6D,OAAO3C,eAAe,YAAYqmJ,UAChM,SAAS,KACP1jJ,EAAM6O,MACD03D,EAAG9L,MAAMz6D,OAAO3C,eAAewR,KAAS03D,EAAG9L,MAAMz6D,OAAO3C,eAAe,YAAYwR,UAE/F,QAAe,KAAO+0I,EAAanmJ,QAAO,MACxC,SAAM,IAAMuC,EAAM6O,KAAO6X,IACvB3C,EAAStmB,MAAQipB,CAAG,GACpB,IAEJ,MAAM2kD,GAAQ,QAAS,CACrB,GAAAroE,GACE,MAAM48F,EAAgB5/F,EAAM6O,GAC5B,OAAOwjF,EAAYuxD,EAAanmJ,MAAQmiG,EAAgB77E,EAAStmB,MACnE,EACA,GAAAwF,CAAIy6E,GACF,MAAMz7B,EAAWqwC,EAAa5U,GACxBjgF,GAAQ,QAAMmmJ,EAAanmJ,MAAQuC,EAAM6O,GAAQkV,EAAStmB,OAC5DA,IAAUwkD,GAAYowC,EAAY50F,KAAWigF,IAGjD35D,EAAStmB,MAAQwkD,EACjBskB,GAAIljE,KAAK,UAAUwL,IAAQozC,GAC7B,IAKF,OAHAxjD,OAAO8B,eAAe8qE,EAAO,gBAAiB,CAC5CroE,IAAK,IAAM4gJ,EAAanmJ,MAAQuC,EAAM6O,GAAQkV,EAAStmB,QAElD4tE,CACT,C,mMCxCO,SAASw4E,IACd,MAAMt9E,GAAK,QAAmB,YAC9B,OAAO,SAAS,IAAMA,GAAIgC,OAAOu7E,QACnC,CACO,SAASC,IACd,OAAO,QAAmB,cAAcx7E,OAAOxJ,OACjD,CACO,SAAStI,EAAQz2D,EAAO0lD,GAC7B,MAAMgT,GAAa,QAAwB,cACrC8pB,GAAS,SAAS,OAASxiF,EAAMoF,OAAQpF,EAAMmJ,MAC/CyyE,GAAc,SAAS,IACpB4G,GAAQ/kF,QAAS,QAASioD,EAAO,WAAY,QAAS1lD,EAAO,WAEtE,GAA0B,kBAAf04D,KAA6B,YAAaA,GAAa,CAChE,MAAMtzD,GAAO,QAAMpF,EAAO,QAC1B,MAAO,CACLwiF,SACA5G,cACAx2E,OACAu+E,WAAW,QAAS,CAClBv+E,SAGN,CAEA,MAAMu+E,GAAY,SAAS,KAAM,IAC5B3jF,EACHmJ,IAAI,SAAM,IAAMnJ,EAAMmJ,IAAM,SAExB66I,EAAatrF,EAAWjC,QAAQktB,EAAUlmF,OAE1C06D,GAAO,SAAS,IAAMn4D,EAAMmJ,GAAK66I,OAAa36I,IAC9CmkD,EAAQq2F,IACR5wG,GAAW,SAAS,MACnBklB,EAAK16D,QACLuC,EAAM83B,MACN01B,EAAM/vD,MACJ06D,EAAK16D,MAAMy5D,eAAez5D,QAAS,QAAU06D,EAAK16D,MAAM+vD,MAAM/vD,MAAMgrD,MAAO+E,EAAM/vD,MAAMgrD,OADrE0P,EAAK16D,MAAMy5D,eAAez5D,QAAS,EADnC06D,EAAK16D,MAAMw1C,UAAUx1C,QAAS,KAInD2H,GAAO,SAAS,IAAMpF,EAAMmJ,GAAKgvD,EAAK16D,OAAO+vD,MAAM/vD,MAAM2H,KAAOpF,EAAMoF,OAC5E,MAAO,CACLo9E,SACA5G,cACA3oC,WACAua,MAAO2K,EAAK16D,OAAO+vD,MACnB2J,SAAUgB,EAAK16D,OAAO05D,SACtB/xD,OACAu+E,WAAW,QAAS,CAClBv+E,OACA,gBAAgB,SAAS,IAAM6tC,EAASx1C,MAAQ,YAAS4L,MAG/D,CACO,MAAM46I,GAAkB,OAAa,CAC1C7+I,KAAM6M,OACN3J,QAASuvD,QACT1uD,GAAI,CAAC8I,OAAQxT,QACbq5B,MAAO+/B,SACN,UACH,IAAIqsF,GAAe,EACZ,SAASC,EAAcztF,EAAQqN,GACpC,IACIqgF,EACAC,EAFAC,GAAS,EAwBb,SAASC,EAAWxhJ,GACdA,EAAEmxC,OAAO0Y,WACb03F,GAAS,EACT79I,YAAW,IAAM69I,GAAS,IAC5B,CAzBI,QACF,SAAS,KACPtjJ,OAAO8C,iBAAiB,WAAYygJ,GACpCH,EAAe1tF,GAAQ8H,YAAW,CAACr1D,EAAIqY,EAAM5f,KACtCsiJ,EAGHI,EAASvgF,EAAGniE,GAAQA,IAFpB6E,YAAW,IAAM69I,EAASvgF,EAAGniE,GAAQA,MAIvCsiJ,GAAe,CAAI,IAErBG,EAAc3tF,GAAQgI,WAAU,KAC9BwlF,GAAe,CAAK,GACpB,KAEJ,SAAe,KACbljJ,OAAO+C,oBAAoB,WAAYwgJ,GACvCH,MACAC,KAAe,IAQrB,C,kFC3FO,SAASG,IACd,MAAMj+E,GAAK,QAAmB,cACxByF,EAAUzF,EAAG9L,MAAMuR,QACzB,MAAO,CACLA,QAASA,EAAU,CACjB,CAACA,GAAU,SACT3iE,EAER,C,oOCPO,MAAMo7I,EAAcpjJ,OAAOm+D,IAAI,iBACzBklF,GAAiB,OAAa,CACzC7zE,MAAO5+D,QACN,SACH,SAASyqI,IACP,MAAO,CACLiI,aAAc,QACdC,WAAY,CACVlxC,OAAQ,GACRmxC,QAAS,EACTC,OAAQ,GAEVC,OAAQ,CACNC,MAAO,CACLC,MAAM,EACNvxC,OAAQ,CACNxC,WAAY,UACZg0C,QAAS,UACT,iBAAkB,UAClB,gBAAiB,UACjB,kBAAmB,UACnB,qBAAsB,UACtBC,QAAS,UACT,mBAAoB,UACpBC,UAAW,UACX,qBAAsB,UACtBn4F,MAAO,UACPgR,KAAM,UACNonF,QAAS,UACTC,QAAS,WAEXC,UAAW,CACT,eAAgB,UAChB,iBAAkB,IAClB,wBAAyB,IACzB,0BAA2B,GAC3B,mBAAoB,IACpB,eAAgB,IAChB,gBAAiB,IACjB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,IACrB,kBAAmB,IACnB,kBAAmB,IACnB,YAAa,UACb,eAAgB,UAChB,aAAc,UACd,gBAAiB,YAGrBN,KAAM,CACJA,MAAM,EACNvxC,OAAQ,CACNxC,WAAY,UACZg0C,QAAS,UACT,iBAAkB,UAClB,gBAAiB,UACjB,kBAAmB,UACnB,qBAAsB,UACtBC,QAAS,UACT,mBAAoB,UACpBC,UAAW,UACX,qBAAsB,UACtBn4F,MAAO,UACPgR,KAAM,UACNonF,QAAS,UACTC,QAAS,WAEXC,UAAW,CACT,eAAgB,UAChB,iBAAkB,IAClB,wBAAyB,EACzB,0BAA2B,GAC3B,mBAAoB,GACpB,eAAgB,GAChB,gBAAiB,IACjB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,IACrB,kBAAmB,IACnB,kBAAmB,IACnB,YAAa,UACb,eAAgB,UAChB,aAAc,UACd,gBAAiB,aAK3B,CACA,SAASC,IACP,IAAIrxI,EAAU/K,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAKszI,IAClF,MAAMjnH,EAAWinH,IACjB,IAAKvoI,EAAS,MAAO,IAChBshB,EACH2tD,YAAY,GAEd,MAAM2hE,EAAS,CAAC,EAChB,IAAK,MAAOvkJ,EAAKqwE,KAAUpyE,OAAOyU,QAAQiB,EAAQ4wI,QAAU,CAAC,GAAI,CAC/D,MAAMJ,EAAe9zE,EAAMo0E,MAAgB,SAARzkJ,EAAiBi1B,EAASsvH,QAAQE,KAAOxvH,EAASsvH,QAAQC,MAC7FD,EAAOvkJ,IAAO,QAAUmkJ,EAAc9zE,EACxC,CACA,OAAO,QAAUp7C,EAAU,IACtBthB,EACH4wI,UAEJ,CAGO,SAASU,EAAYtxI,GAC1B,MAAMuxI,EAAgBF,EAAkBrxI,GAClCvW,GAAO,QAAI8nJ,EAAcf,cACzBI,GAAS,QAAIW,EAAcX,QAC3BY,GAAiB,SAAS,KAC9B,MAAMliC,EAAM,CAAC,EACb,IAAK,MAAO7lH,EAAMwvF,KAAa3uF,OAAOyU,QAAQ6xI,EAAOtnJ,OAAQ,CAC3D,MAAMozE,EAAQ4yC,EAAI7lH,GAAQ,IACrBwvF,EACHsmB,OAAQ,IACHtmB,EAASsmB,SAGhB,GAAIgyC,EAAcd,WAChB,IAAK,MAAMhnJ,KAAQ8nJ,EAAcd,WAAWlxC,OAAQ,CAClD,MAAMzpC,EAAQ4G,EAAM6iC,OAAO91G,GAC3B,GAAKqsE,EACL,IAAK,MAAM27E,IAAa,CAAC,UAAW,UAAW,CAC7C,MAAMj/F,EAAmB,YAAdi/F,EAA0B,KAAU,KAC/C,IAAK,MAAMzkI,KAAU,QAAYukI,EAAcd,WAAWgB,GAAY,GACpE/0E,EAAM6iC,OAAO,GAAG91G,KAAQgoJ,KAAazkI,MAAY,QAASwlC,GAAG,QAAWsjB,GAAQ9oD,GAEpF,CACF,CAEF,IAAK,MAAM8oD,KAASxrE,OAAO0D,KAAK0uE,EAAM6iC,QAAS,CAC7C,GAAI,YAAYnhG,KAAK03D,IAAU4G,EAAM6iC,OAAO,MAAMzpC,KAAU,SAC5D,MAAM47E,EAAU,MAAM57E,IAChB67E,GAAW,QAAWj1E,EAAM6iC,OAAOzpC,IACzC4G,EAAM6iC,OAAOmyC,IAAW,QAAcC,EACxC,CACF,CACA,OAAOriC,CAAG,IAENv4G,GAAU,SAAS,IAAMy6I,EAAeloJ,MAAMG,EAAKH,SACnDmmD,GAAS,SAAS,KACtB,MAAMysC,EAAQ,GACVnlF,EAAQzN,OAAOwnJ,MACjBc,EAAe11D,EAAO,QAAS,CAAC,uBAElC01D,EAAe11D,EAAO,QAAS21D,EAAgB96I,EAAQzN,QACvD,IAAK,MAAOwoJ,EAAWp1E,KAAUpyE,OAAOyU,QAAQyyI,EAAeloJ,OAC7DsoJ,EAAe11D,EAAO,aAAa41D,IAAa,CAAC,kBAAiBp1E,EAAMo0E,KAAO,OAAS,aAAee,EAAgBn1E,KAEzH,MAAMq1E,EAAU,GACVC,EAAU,GACVzyC,EAAS,IAAIngD,IAAI90D,OAAOi2D,OAAOixF,EAAeloJ,OAAOu+H,SAAQnrD,GAASpyE,OAAO0D,KAAK0uE,EAAM6iC,WAC9F,IAAK,MAAMlzG,KAAOkzG,EACZ,YAAYnhG,KAAK/R,GACnBulJ,EAAeI,EAAS,IAAI3lJ,IAAO,CAAC,4BAA4BA,oBAEhEulJ,EAAeG,EAAS,OAAO1lJ,IAAO,CAAC,+CAA+CA,wBAA2B,uCAAuCA,iBAAoB,+BAA+BA,mBAC3MulJ,EAAeI,EAAS,SAAS3lJ,IAAO,CAAC,4BAA4BA,mBACrEulJ,EAAeI,EAAS,WAAW3lJ,IAAO,CAAC,mCAAmCA,QAIlF,OADA6vF,EAAM7tF,QAAQ0jJ,KAAYC,GACnB91D,EAAM9sF,KAAI,CAACsuH,EAAK5xH,IAAY,IAANA,EAAU4xH,EAAM,OAAOA,MAAOtpH,KAAK,GAAG,IAErE,SAAS69I,IACP,MAAO,CACLzhJ,MAAO,CAAC,CACNF,SAAUm/C,EAAOnmD,MACjB4B,GAAI,2BACJgnJ,MAAOX,EAAcY,WAAY,IAGvC,CACA,SAAS1nF,EAAQzB,GACf,GAAIuoF,EAActiE,WAAY,OAC9B,MAAMmjE,EAAOppF,EAAIqpF,SAASnO,SAASoO,QACnC,GAAIF,EACF,GAAIA,EAAK/jJ,KAAM,CACb,MAAMi9E,EAAQ8mE,EAAK/jJ,KAAK4jJ,GACpB,OACF,QAAMxiG,GAAQ,KACZ67B,EAAMinE,MAAMN,EAAQ,GAG1B,MACM,MACFG,EAAKI,aAAY,QAASP,KAC1B,SAAY,IAAMG,EAAKK,eAEvBL,EAAKI,YAAYP,SAGhB,CACL,IAAIS,EAAU,KAAa1oJ,SAASkG,eAAe,4BAA8B,KAQjF,SAASyiJ,IACP,GAAwB,qBAAb3oJ,WAA6B0oJ,EAAS,CAC/C,MAAMn/I,EAAKvJ,SAASqG,cAAc,SAClCkD,EAAGyjB,KAAO,WACVzjB,EAAGrI,GAAK,2BACJqmJ,EAAcY,UAAU5+I,EAAG9C,aAAa,QAAS8gJ,EAAcY,UACnEO,EAAUn/I,EACVvJ,SAASooJ,KAAKrkG,YAAY2kG,EAC5B,CACIA,IAASA,EAAQ1sH,UAAYypB,EAAOnmD,MAC1C,CAjBI,MACF,QAAMmmD,EAAQkjG,EAAc,CAC1BpjF,WAAW,IAGbojF,GAaJ,CACF,CACA,MAAMx7E,GAAe,SAAS,IAAMo6E,EAActiE,gBAAa/5E,EAAY,YAAYzL,EAAKH,UAC5F,MAAO,CACLmhE,UACAwkB,WAAYsiE,EAActiE,WAC1BxlF,OACAmnJ,SACA75I,UACAy6I,iBACAr6E,eACA1nB,SACAzmD,OAAQ,CACNS,OACAsN,WAGN,CACO,SAAS67I,EAAa/mJ,IAC3B,QAAmB,gBACnB,MAAM6wE,GAAQ,QAAO4zE,EAAa,MAClC,IAAK5zE,EAAO,MAAM,IAAIhjB,MAAM,0CAC5B,MAAMjwD,GAAO,SAAS,IACboC,EAAM6wE,OAASA,EAAMjzE,KAAKH,QAE7ByN,GAAU,SAAS,IAAM2lE,EAAMk0E,OAAOtnJ,MAAMG,EAAKH,SACjD6tE,GAAe,SAAS,IAAMuF,EAAMuS,gBAAa/5E,EAAY,YAAYzL,EAAKH,UAC9EupJ,EAAW,IACZn2E,EACHjzE,OACAsN,UACAogE,gBAGF,OADA,QAAQm5E,EAAauC,GACdA,CACT,CACO,SAASC,KACd,QAAmB,YACnB,MAAMp2E,GAAQ,QAAO4zE,EAAa,MAClC,IAAK5zE,EAAO,MAAM,IAAIhjB,MAAM,0CAC5B,OAAOgjB,CACT,CACA,SAASk1E,EAAe11D,EAAOjkF,EAAUs2F,GACvCrS,EAAM7tF,KAAK,GAAG4J,WAAmBs2F,EAAQn/F,KAAI2jJ,GAAQ,KAAKA,SAAY,MACxE,CACA,SAASlB,EAAgBn1E,GACvB,MAAMs2E,EAAet2E,EAAMo0E,KAAO,EAAI,EAChCmC,EAAcv2E,EAAMo0E,KAAO,EAAI,EAC/BM,EAAY,GAClB,IAAK,MAAO/kJ,EAAK/C,KAAUgB,OAAOyU,QAAQ29D,EAAM6iC,QAAS,CACvD,MAAM7I,GAAM,QAAWptG,GACvB8nJ,EAAU/iJ,KAAK,aAAahC,MAAQqqG,EAAI9tD,KAAK8tD,EAAID,KAAKC,EAAIh2E,KACrDr0B,EAAI2iD,WAAW,QAClBoiG,EAAU/iJ,KAAK,aAAahC,0BAA2B,QAAQ/C,GAAS,IAAO0pJ,EAAeC,IAElG,CACA,IAAK,MAAO5mJ,EAAK/C,KAAUgB,OAAOyU,QAAQ29D,EAAM00E,WAAY,CAC1D,MAAMt7E,EAAyB,kBAAVxsE,GAAsBA,EAAM0lD,WAAW,MAAO,QAAW1lD,QAAS4L,EACjFwhG,EAAM5gC,EAAQ,GAAGA,EAAMltB,MAAMktB,EAAM2gC,MAAM3gC,EAAMp1C,SAAMxrB,EAC3Dk8I,EAAU/iJ,KAAK,OAAOhC,MAAQqqG,GAAOptG,IACvC,CACA,OAAO8nJ,CACT,C,kFCpRO,SAAS8B,EAAeC,EAAQ3gG,GACrC,IAAIie,EACJ,SAASvuB,IACPuuB,GAAQ,SACRA,EAAMzuB,KAAI,IAAMwQ,EAAGzmD,OAASymD,GAAG,KAC7Bie,GAAOlkC,OACP2V,GAAO,IACJsQ,KACP,EACA,QAAM2gG,GAAQxiF,IACRA,IAAWF,EACbvuB,IACUyuB,IACVF,GAAOlkC,OACPkkC,OAAQv7D,EACV,GACC,CACDq6D,WAAW,KAEb,SAAe,KACbkB,GAAOlkC,MAAM,GAEjB,C,mHCxBO,MAAMwwC,GAAsB,OAAa,CAC9CrsD,WAAY,CACVsG,KAAM,CAAC0sC,QAAS5lD,OAAQxT,QACxBgoD,QAAS,kBACT+Z,UAAW95C,IAAe,IAARA,IAEnB,cACU6gI,EAAkB,CAACvnJ,EAAOkK,KACrC,IAAI,MACFguD,GACEhuD,EACJ,MAAM,WACJ2a,EAAU,SACVmc,EAAQ,MACRmwC,KACGjH,GACDlqE,GACE,UACJqmD,GAAY8qB,EAAQ,KAAkB,SACnCq2E,GACqB,kBAAf3iI,EAA0BA,EAAa,CAAC,EACnD,OAAO,IAAA2zC,GAAEnS,GAAW,QAAiC,kBAAfxhC,EAA0B,CAC9DjnB,KAAMojC,EAAW,GAAKnc,GACpB2iI,EAAmC,kBAAf3iI,EAA0B,CAAC,EAAIpmB,OAAO+6I,YAAY/6I,OAAOyU,QAAQ,CACvF8tB,WACAmwC,UACC9uE,QAAOgR,IACR,IAAKmI,EAAG5L,GAAKyD,EACb,YAAahK,IAANuG,CAAe,KACnBs6D,GAAOhS,EAAM,C,oCC3Bb,SAASuvF,EAAaz+I,GAE3B,GAAgC,oBAArBA,EAAK0hB,YAA4B,CAE1C,MAAO1hB,EAAK2vB,WAAY3vB,EAAOA,EAAK2vB,WAGpC,OAAI3vB,IAAS7K,SAAiB,KACvBA,QACT,CACA,MAAMo1C,EAAOvqC,EAAK0hB,cAGlB,OAAI6oB,IAASp1C,UAAYo1C,EAAK7oB,YAAY,CACxCg9H,UAAU,MACLvpJ,SAAiB,KACjBo1C,CACT,CCpBA,SAASo0G,IACP,OAAO,CACT,CACA,SAASC,EAAW7kJ,EAAG2E,EAAImgJ,GAKzB,IAAK9kJ,IAAmC,IAA9B+kJ,EAAc/kJ,EAAG8kJ,GAAoB,OAAO,EAKtD,MAAMt0G,EAAOk0G,EAAa//I,GAC1B,GAA0B,qBAAfmkE,YAA8Bt4B,aAAgBs4B,YAAct4B,EAAKruC,OAASnC,EAAEhD,OAAQ,OAAO,EAItG,MAAMsoC,GAAqC,kBAAlBw/G,EAAQpqJ,OAAsBoqJ,EAAQpqJ,MAAMovE,SAAW,KAAO,OASvF,OAPAxkC,EAAS7lC,KAAKkF,IAON2gC,EAAS4wB,MAAKvxD,GAAMA,GAAIsF,SAASjK,EAAEhD,SAC7C,CACA,SAAS+nJ,EAAc/kJ,EAAG8kJ,GACxB,MAAM50G,EAAoC,kBAAlB40G,EAAQpqJ,OAAsBoqJ,EAAQpqJ,MAAM0uE,kBAAoBw7E,EACxF,OAAO10G,EAASlwC,EAClB,CACA,SAASglJ,EAAUhlJ,EAAG2E,EAAImgJ,GACxB,MAAMvyI,EAAmC,oBAAlBuyI,EAAQpqJ,MAAuBoqJ,EAAQpqJ,MAAQoqJ,EAAQpqJ,MAAM6X,QAGpFvS,EAAEspE,aAAetpE,EAAEhD,OACnB2H,EAAGsgJ,cAAcC,yBAA2BL,EAAW7kJ,EAAG2E,EAAImgJ,IAAYphJ,YAAW,KACnFqhJ,EAAc/kJ,EAAG8kJ,IAAYvyI,GAAWA,EAAQvS,EAAE,GACjD,EACL,CACA,SAASmlJ,EAAaxgJ,EAAIb,GACxB,MAAM0sC,EAAOk0G,EAAa//I,GAC1Bb,EAAS1I,UACiB,qBAAf0tE,YAA8Bt4B,aAAgBs4B,YACvDhlE,EAAS0sC,EAEb,C,gCACO,MAAMw3B,EAAe,CAM1B,OAAAryC,CAAQhxB,EAAImgJ,GACV,MAAMl2H,EAAU5uB,GAAKglJ,EAAUhlJ,EAAG2E,EAAImgJ,GAChCj1D,EAAc7vF,IAClB2E,EAAGsgJ,cAAcC,wBAA0BL,EAAW7kJ,EAAG2E,EAAImgJ,EAAQ,EAEvEK,EAAaxgJ,GAAIy1D,IACfA,EAAIr5D,iBAAiB,QAAS6tB,GAAS,GACvCwrC,EAAIr5D,iBAAiB,YAAa8uF,GAAa,EAAK,IAEjDlrF,EAAGsgJ,gBACNtgJ,EAAGsgJ,cAAgB,CACjBC,yBAAyB,IAG7BvgJ,EAAGsgJ,cAAcH,EAAQ/tF,SAASquF,EAAE/+E,KAAO,CACzCz3C,UACAihE,cAEJ,EACA,aAAAw1D,CAAc1gJ,EAAImgJ,GACXngJ,EAAGsgJ,gBACRE,EAAaxgJ,GAAIy1D,IACf,IAAKA,IAAQz1D,EAAGsgJ,gBAAgBH,EAAQ/tF,SAASquF,EAAE/+E,KAAM,OACzD,MAAM,QACJz3C,EAAO,YACPihE,GACElrF,EAAGsgJ,cAAcH,EAAQ/tF,SAASquF,EAAE/+E,KACxCjM,EAAIp5D,oBAAoB,QAAS4tB,GAAS,GAC1CwrC,EAAIp5D,oBAAoB,YAAa6uF,GAAa,EAAK,WAElDlrF,EAAGsgJ,cAAcH,EAAQ/tF,SAASquF,EAAE/+E,KAC7C,E,6TCtFF,SAAS1wC,EAAQhxB,EAAImgJ,GACnB,MAAMQ,EAAYR,EAAQQ,WAAa,CAAC,EAClC5qJ,EAAQoqJ,EAAQpqJ,OAChB,KACJkY,EAAI,UACJ+tD,KACG4kF,GACDD,EACE5E,GAAgBhlJ,OAAO0D,KAAKmmJ,GAAcpoJ,QAC1C,QACJoV,EAAO,QACPnB,GACmB,kBAAV1W,EAAqBA,EAAQ,CACtC6X,QAAS7X,EACT0W,QAAS,CACPO,WAAY4zI,GAActlG,MAAQygG,EAClC5uI,cAAeyzI,GAAch4F,MAAQmzF,EACrC9uI,UAAW2zI,GAAcv5I,OAAS00I,EAClC8E,QAASD,GAAcE,KAAO/E,IAG5B9wI,EAAW,IAAI0B,kBAAiB,WACpC,IAAIE,EAAYnL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GAChFuJ,EAAWvJ,UAAUlJ,OAAS,EAAIkJ,UAAU,QAAKC,EACrDiM,IAAUf,EAAW5B,GACjBgD,GAAM8yI,EAAU/gJ,EAAImgJ,EAC1B,IACInkF,GAAWpuD,IAAU,GAAI3C,GAC7BjL,EAAGghJ,QAAUjqJ,OAAOiJ,EAAGghJ,SACvBhhJ,EAAGghJ,QAAQb,EAAQ/tF,SAASquF,EAAE/+E,KAAO,CACnCz2D,YAEFA,EAASe,QAAQhM,EAAIyM,EACvB,CACA,SAASs0I,EAAU/gJ,EAAImgJ,GAChBngJ,EAAGghJ,UAAUb,EAAQ/tF,SAASquF,EAAE/+E,OACrC1hE,EAAGghJ,QAAQb,EAAQ/tF,SAASquF,EAAE/+E,KAAKz2D,SAASwC,oBACrCzN,EAAGghJ,QAAQb,EAAQ/tF,SAASquF,EAAE/+E,KACvC,CACO,MAAMu/E,EAAS,CACpBjwH,UACA+vH,aCzCF,SAAS,EAAQ/gJ,EAAImgJ,GACnB,MAAMvyI,EAAUuyI,EAAQpqJ,MAClB0W,EAAU,CACdoe,SAAUs1H,EAAQQ,WAAWvjF,QAE/B9jE,OAAO8C,iBAAiB,SAAUwR,EAASnB,GAC3CzM,EAAGkhJ,UAAYnqJ,OAAOiJ,EAAGkhJ,WACzBlhJ,EAAGkhJ,UAAUf,EAAQ/tF,SAASquF,EAAE/+E,KAAO,CACrC9zD,UACAnB,WAEG0zI,EAAQQ,WAAWQ,OACtBvzI,GAEJ,CACA,SAAS,EAAU5N,EAAImgJ,GACrB,IAAKngJ,EAAGkhJ,YAAYf,EAAQ/tF,SAASquF,EAAE/+E,KAAM,OAC7C,MAAM,QACJ9zD,EAAO,QACPnB,GACEzM,EAAGkhJ,UAAUf,EAAQ/tF,SAASquF,EAAE/+E,KACpCpoE,OAAO+C,oBAAoB,SAAUuR,EAASnB,UACvCzM,EAAGkhJ,UAAUf,EAAQ/tF,SAASquF,EAAE/+E,IACzC,CACO,MAAM12D,EAAS,CACpBgmB,QAAO,EACP+vH,UAAS,GAEX,I,UC5BA,SAAS,EAAQ/gJ,EAAImgJ,GACnB,MAAM,KACJnnJ,GAAO,GACLmnJ,EAAQQ,WAAa,CAAC,EACpB5qJ,EAAQoqJ,EAAQpqJ,MAChB0W,EAA2B,kBAAV1W,GAAsBA,EAAM0W,SAAW,CAC5Doe,SAAS,GAELjd,EAA2B,oBAAV7X,GAAwB,gBAAiBA,EAAQA,EAAQA,EAAM6X,QAChFvV,EAASW,EAAOgH,EAAKmgJ,EAAQiB,IAAM3qJ,SAASgG,cAAc0jJ,EAAQiB,KAAO9nJ,OAC1EjB,IACLA,EAAO+D,iBAAiB,SAAUwR,EAASnB,GAC3CzM,EAAGqhJ,UAAYtqJ,OAAOiJ,EAAGqhJ,WACzBrhJ,EAAGqhJ,UAAUlB,EAAQ/tF,SAASquF,EAAE/+E,KAAO,CACrC9zD,UACAnB,UAEApU,OAAQW,OAAO2I,EAAYtJ,GAE/B,CACA,SAAS,EAAU2H,EAAImgJ,GACrB,IAAKngJ,EAAGqhJ,YAAYlB,EAAQ/tF,SAASquF,EAAE/+E,KAAM,OAC7C,MAAM,QACJ9zD,EAAO,QACPnB,EAAO,OACPpU,EAAS2H,GACPA,EAAGqhJ,UAAUlB,EAAQ/tF,SAASquF,EAAE/+E,KACpCrpE,EAAOgE,oBAAoB,SAAUuR,EAASnB,UACvCzM,EAAGqhJ,UAAUlB,EAAQ/tF,SAASquF,EAAE/+E,IACzC,CACA,SAAS4/E,EAAQthJ,EAAImgJ,GACfA,EAAQpqJ,QAAUoqJ,EAAQr6E,WAC9B,EAAU9lE,EAAImgJ,GACd,EAAQngJ,EAAImgJ,GACd,CACO,MAAMoB,EAAS,CACpBvwH,QAAO,EACP+vH,UAAS,EACTO,WAEF,I,kDCvCO,SAASE,EAAsB7iG,EAAWrmD,GAC/C,MAAMmpJ,EAAyC,kBAAd9iG,GAAyB,QAAiBA,GAAaA,EAClF+iG,EAAOC,EAAeF,EAAmBnpJ,GAC/C,MAAO,CACL04B,QAAS0wH,EACTJ,QAASI,EACT,SAAAX,CAAU/gJ,IACR,QAAO,KAAMA,EACf,EAEJ,CACA,SAAS2hJ,EAAehjG,EAAWrmD,GACjC,OAAO,SAAU0H,EAAImgJ,EAASptF,GAC5B,MAAMyN,EAA0B,oBAAVloE,EAAuBA,EAAM6nJ,GAAW7nJ,EACxDmN,EAAO06I,EAAQpqJ,OAAO0P,MAAQ06I,EAAQpqJ,OAASyqE,GAAQ/6D,KACvD1P,GAAQ,QAASoqJ,EAAQpqJ,OAASoqJ,EAAQpqJ,MAAQ,CAAC,EAGnDgH,EAAW,IAAM0I,GAAQzF,EAAGy9B,YAI5BkzG,GAAY59E,EAAMx8D,MAAQ4pJ,EAAQ/tF,SAASquF,EAAImB,EAAoB7uF,EAAOotF,EAAQ/tF,SAASquF,IAAI9P,SAAW59E,EAAMx8D,KAAKo6I,WAAawP,EAAQ/tF,SAASquF,EAAE9P,SACrJrvI,GAAO,IAAAwvD,GAAEnS,GAAW,QAAW6hB,EAAQzqE,GAAQgH,GACrDuE,EAAKugJ,WAAa9qJ,OAAO0Y,OAAO1Y,OAAO+qJ,OAAO,MAAO3B,EAAQ/tF,SAASquF,EAAEoB,WAAY,CAClFlR,cAEF,QAAOrvI,EAAMtB,EACf,CACF,CACA,SAAS4hJ,EAAoB7uF,EAAOlnB,GAElC,MAAMw1B,EAAQ,IAAIxV,IACZk2F,EAAOhlJ,IACX,IAAK,MAAMsK,KAAStK,EAAU,CAC5B,IAAKsK,EAAO,SACZ,GAAIA,IAAU0rD,GAAS1rD,EAAMrH,IAAM+yD,EAAM/yD,IAAMqH,EAAMrH,KAAO+yD,EAAM/yD,GAChE,OAAO,EAGT,IAAIi8D,EAQJ,GATAoF,EAAMt7D,IAAIsB,GAENA,EAAM26I,SACR/lF,EAAS8lF,EAAK,CAAC16I,EAAM46I,YACZ7nJ,MAAMC,QAAQgN,EAAMtK,UAC7Bk/D,EAAS8lF,EAAK16I,EAAMtK,UACXsK,EAAMs3C,WAAWoU,QAC1BkJ,EAAS8lF,EAAK,CAAC16I,EAAMs3C,WAAWujG,WAE9BjmF,EACF,OAAOA,EAEToF,EAAMvd,OAAOz8C,EACf,CACA,OAAO,CAAK,EAEd,IAAK06I,EAAK,CAACl2G,EAAKq2G,UAEd,OADA,EAAAx8I,EAAA,IAAa,sEACNmmC,EAIT,MAAMowB,EAAS7hE,MAAM0f,KAAKunD,GAAOtL,UACjC,IAAK,MAAM1uD,KAAS40D,EAClB,GAAI50D,EAAMs3C,UACR,OAAOt3C,EAAMs3C,UAGjB,OAAO9S,CACT,CCpEO,MAAMs2G,EAAUX,EAAsBl8E,EAAA,GAAU66E,IAC9C,CACL9hF,UAAW,SACX/gE,SAAU6iJ,EAAQiB,KAAKxgJ,QAAQ,IAAK,KACpC6E,KAA+B,mBAAlB06I,EAAQpqJ,WAAsB4L,EAAYw+I,EAAQpqJ,S,kFCLnE,SAASi7B,EAAQhxB,EAAImgJ,GACnB,IAAK,KAAuB,OAC5B,MAAMQ,EAAYR,EAAQQ,WAAa,CAAC,EAClC5qJ,EAAQoqJ,EAAQpqJ,OAChB,QACJ6X,EAAO,QACPnB,GACmB,kBAAV1W,EAAqBA,EAAQ,CACtC6X,QAAS7X,EACT0W,QAAS,CAAC,GAENxB,EAAW,IAAI6sE,sBAAqB,WACxC,IAAItsE,EAAU9J,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GAC9EuJ,EAAWvJ,UAAUlJ,OAAS,EAAIkJ,UAAU,QAAKC,EACrD,MAAMygJ,EAAWpiJ,EAAGoiJ,WAAWjC,EAAQ/tF,SAASquF,EAAE/+E,KAClD,IAAK0gF,EAAU,OAEf,MAAMnzE,EAAiBzjE,EAAQ+lD,MAAKwmB,GAASA,EAAM9I,kBAI/CrhE,GAAa+yI,EAAUQ,QAASiB,EAASlqJ,MAAWyoJ,EAAU1yI,OAAQghE,IAAkBmzE,EAASlqJ,MACnG0V,EAAQqhE,EAAgBzjE,EAASP,GAE/BgkE,GAAkB0xE,EAAU1yI,KAAM8yI,EAAU/gJ,EAAImgJ,GAAciC,EAASlqJ,MAAO,CACpF,GAAGuU,GACHzM,EAAGoiJ,SAAWrrJ,OAAOiJ,EAAGoiJ,UACxBpiJ,EAAGoiJ,SAASjC,EAAQ/tF,SAASquF,EAAE/+E,KAAO,CACpCxpE,MAAM,EACN+S,YAEFA,EAASe,QAAQhM,EACnB,CACA,SAAS+gJ,EAAU/gJ,EAAImgJ,GACrB,MAAMn0I,EAAUhM,EAAGoiJ,WAAWjC,EAAQ/tF,SAASquF,EAAE/+E,KAC5C11D,IACLA,EAAQf,SAASiB,UAAUlM,UACpBA,EAAGoiJ,SAASjC,EAAQ/tF,SAASquF,EAAE/+E,KACxC,CACO,MAAM+vB,EAAY,CACvBzgE,UACA+vH,aAEF,K,yGCxCA,MAAMsB,EAAa1oJ,OAAO,cACpB2oJ,EAAe,GACrB,SAAS7hJ,EAAUT,EAAIjK,GACrBiK,EAAG/C,MAAMwD,UAAY1K,EACrBiK,EAAG/C,MAAMyD,gBAAkB3K,CAC7B,CACA,SAASsyB,EAAahtB,GACpB,MAA8B,eAAvBA,EAAExB,YAAY3D,IACvB,CACA,SAASqsJ,EAAgBlnJ,GACvB,MAA8B,kBAAvBA,EAAExB,YAAY3D,IACvB,CACA,MAAMssJ,EAAY,SAAUnnJ,EAAG2E,GAC7B,IAAIjK,EAAQ2L,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7E+gJ,EAAS,EACTC,EAAS,EACb,IAAKH,EAAgBlnJ,GAAI,CACvB,MAAMk3B,EAASvyB,EAAGkG,wBACZ7N,EAASgwB,EAAahtB,GAAKA,EAAE0oB,QAAQ1oB,EAAE0oB,QAAQvrB,OAAS,GAAK6C,EACnEonJ,EAASpqJ,EAAO4mC,QAAU1M,EAAO7rB,KACjCg8I,EAASrqJ,EAAO6mC,QAAU3M,EAAO9rB,GACnC,CACA,IAAIi7F,EAAS,EACT9jE,EAAQ,GACR59B,EAAG2iJ,SAASn7C,QACd5pE,EAAQ,IACR8jE,EAAS1hG,EAAGmP,YAAc,EAC1BuyF,EAAS3rG,EAAMghD,OAAS2qD,EAASA,EAAS99F,KAAK4iB,MAAMi8H,EAAS/gD,IAAW,GAAKghD,EAAShhD,IAAW,GAAK,GAEvGA,EAAS99F,KAAK4iB,KAAKxmB,EAAGmP,aAAe,EAAInP,EAAGoP,cAAgB,GAAK,EAEnE,MAAMwzI,GAAc5iJ,EAAGmP,YAAuB,EAATuyF,GAAc,EAAnC,KACVmhD,GAAc7iJ,EAAGoP,aAAwB,EAATsyF,GAAc,EAApC,KACV7lF,EAAI9lB,EAAMghD,OAAS6rG,EAAaH,EAAS/gD,EAAZ,KAC7B5lF,EAAI/lB,EAAMghD,OAAS8rG,EAAaH,EAAShhD,EAAZ,KACnC,MAAO,CACLA,SACA9jE,QACA/hB,IACAC,IACA8mI,UACAC,UAEJ,EACMC,EAAU,CAEd,IAAA5wB,CAAK72H,EAAG2E,GACN,IAAIjK,EAAQ2L,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjF,IAAK1B,GAAI2iJ,SAAStyI,QAChB,OAEF,MAAM+xD,EAAY3rE,SAASqG,cAAc,QACnCsuE,EAAY30E,SAASqG,cAAc,QACzCslE,EAAU5nB,YAAY4wB,GACtBhJ,EAAUjsD,UAAY,sBAClBpgB,EAAMg7D,QACRqR,EAAUjsD,WAAa,IAAIpgB,EAAMg7D,SAEnC,MAAM,OACJ2wC,EAAM,MACN9jE,EAAK,EACL/hB,EAAC,EACDC,EAAC,QACD8mI,EAAO,QACPC,GACEL,EAAUnnJ,EAAG2E,EAAIjK,GACf8R,EAAmB,EAAT65F,EAAH,KACbt2B,EAAUj1D,UAAY,sBACtBi1D,EAAUnuE,MAAMqM,MAAQzB,EACxBujE,EAAUnuE,MAAMuM,OAAS3B,EACzB7H,EAAGw6C,YAAY4nB,GACf,MAAM2gF,EAAWzpJ,OAAOqF,iBAAiBqB,GACrC+iJ,GAAkC,WAAtBA,EAASrqH,WACvB14B,EAAG/C,MAAMy7B,SAAW,WACpB14B,EAAGgjJ,QAAQC,iBAAmB,UAEhC73E,EAAUtlE,UAAUC,IAAI,8BACxBqlE,EAAUtlE,UAAUC,IAAI,gCACxBtF,EAAU2qE,EAAW,aAAavvD,MAAMC,cAAc8hB,KAASA,KAASA,MACxEwtC,EAAU43E,QAAQ3+D,UAAY95E,OAAOszD,YAAY99D,OACjDhB,YAAW,KACTqsE,EAAUtlE,UAAUqP,OAAO,8BAC3Bi2D,EAAUtlE,UAAUC,IAAI,2BACxBtF,EAAU2qE,EAAW,aAAaw3E,MAAYC,oBAA0B,GACvE,EACL,EACA,IAAAhkH,CAAK7+B,GACH,IAAKA,GAAI2iJ,SAAStyI,QAAS,OAC3B,MAAMyyI,EAAU9iJ,EAAGkjJ,uBAAuB,uBAC1C,GAAuB,IAAnBJ,EAAQtqJ,OAAc,OAC1B,MAAM4yE,EAAY03E,EAAQA,EAAQtqJ,OAAS,GAC3C,GAAI4yE,EAAU43E,QAAQG,SAAU,OAAY/3E,EAAU43E,QAAQG,SAAW,OACzE,MAAMzhI,EAAOm8C,YAAY99D,MAAQ4K,OAAOygE,EAAU43E,QAAQ3+D,WACpDvkF,EAAQ8D,KAAKC,IAAI,IAAM6d,EAAM,GACnC3iB,YAAW,KACTqsE,EAAUtlE,UAAUqP,OAAO,2BAC3Bi2D,EAAUtlE,UAAUC,IAAI,4BACxBhH,YAAW,KACT,MAAM+jJ,EAAU9iJ,EAAGkjJ,uBAAuB,uBACnB,IAAnBJ,EAAQtqJ,QAAgBwH,EAAGgjJ,QAAQC,mBACrCjjJ,EAAG/C,MAAMy7B,SAAW14B,EAAGgjJ,QAAQC,wBACxBjjJ,EAAGgjJ,QAAQC,kBAEhB73E,EAAUn6C,YAAYA,aAAejxB,GAAIA,EAAGojJ,YAAYh4E,EAAUn6C,WAAW,GAChF,IAAI,GACNnxB,EACL,GAEF,SAASujJ,EAAgBttJ,GACvB,MAAwB,qBAAVA,KAA2BA,CAC3C,CACA,SAASutJ,EAAWjoJ,GAClB,MAAMtF,EAAQ,CAAC,EACT0O,EAAUpJ,EAAE61D,cAClB,GAAKzsD,GAASk+I,UAAWl+I,EAAQk+I,QAAQY,UAAWloJ,EAAEgnJ,GAAtD,CAIA,GADAhnJ,EAAEgnJ,IAAc,EACZh6H,EAAahtB,GACfoJ,EAAQk+I,QAAQY,SAAU,EAC1B9+I,EAAQk+I,QAAQa,SAAU,OAM1B,GAAI/+I,EAAQk+I,QAAQa,QAAS,OAM/B,GAJAztJ,EAAMghD,OAAStyC,EAAQk+I,QAAQc,UAAYlB,EAAgBlnJ,GACvDoJ,EAAQk+I,QAAQ5xF,QAClBh7D,EAAMg7D,MAAQtsD,EAAQk+I,QAAQ5xF,OAE5B1oC,EAAahtB,GAAI,CAEnB,GAAIoJ,EAAQk+I,QAAQe,gBAAiB,OACrCj/I,EAAQk+I,QAAQe,gBAAkB,KAChCZ,EAAQ5wB,KAAK72H,EAAGoJ,EAAS1O,EAAM,EAEjC0O,EAAQk+I,QAAQgB,UAAYrqJ,OAAOyF,YAAW,KACxC0F,GAASk+I,SAASe,kBACpBj/I,EAAQk+I,QAAQe,kBAChBj/I,EAAQk+I,QAAQe,gBAAkB,KACpC,GACCpB,EACL,MACEQ,EAAQ5wB,KAAK72H,EAAGoJ,EAAS1O,EA/B8C,CAiC3E,CACA,SAAS6tJ,EAAWvoJ,GAClBA,EAAEgnJ,IAAc,CAClB,CACA,SAASwB,EAAWxoJ,GAClB,MAAMoJ,EAAUpJ,EAAE61D,cAClB,GAAKzsD,GAASk+I,QAAd,CAKA,GAJArpJ,OAAO0F,aAAayF,EAAQk+I,QAAQgB,WAIrB,aAAXtoJ,EAAEooB,MAAuBhf,EAAQk+I,QAAQe,gBAQ3C,OAPAj/I,EAAQk+I,QAAQe,kBAChBj/I,EAAQk+I,QAAQe,gBAAkB,UAGlCj/I,EAAQk+I,QAAQgB,UAAYrqJ,OAAOyF,YAAW,KAC5C8kJ,EAAWxoJ,EAAE,KAIjB/B,OAAOyF,YAAW,KACZ0F,EAAQk+I,UACVl+I,EAAQk+I,QAAQY,SAAU,EAC5B,IAEFT,EAAQjkH,KAAKp6B,EApBgB,CAqB/B,CACA,SAASq/I,EAAiBzoJ,GACxB,MAAMoJ,EAAUpJ,EAAE61D,cACbzsD,GAASk+I,UACVl+I,EAAQk+I,QAAQe,kBAClBj/I,EAAQk+I,QAAQe,gBAAkB,MAEpCpqJ,OAAO0F,aAAayF,EAAQk+I,QAAQgB,WACtC,CACA,IAAII,GAAiB,EACrB,SAASC,EAAmB3oJ,GACrB0oJ,GAAmB1oJ,EAAEi5B,UAAY,KAAS2vH,OAAS5oJ,EAAEi5B,UAAY,KAAS4vH,QAC7EH,GAAiB,EACjBT,EAAWjoJ,GAEf,CACA,SAAS8oJ,EAAmB9oJ,GAC1B0oJ,GAAiB,EACjBF,EAAWxoJ,EACb,CACA,SAAS+oJ,EAAgB/oJ,GACnB0oJ,IACFA,GAAiB,EACjBF,EAAWxoJ,GAEf,CACA,SAASgpJ,EAAarkJ,EAAImgJ,EAASp0H,GACjC,MAAM,MACJh2B,EAAK,UACL4qJ,GACER,EACE9vI,EAAUgzI,EAAgBttJ,GAWhC,GAVKsa,GACHyyI,EAAQjkH,KAAK7+B,GAEfA,EAAG2iJ,QAAU3iJ,EAAG2iJ,SAAW,CAAC,EAC5B3iJ,EAAG2iJ,QAAQtyI,QAAUA,EACrBrQ,EAAG2iJ,QAAQc,SAAW9C,EAAU5pG,OAChC/2C,EAAG2iJ,QAAQn7C,OAASm5C,EAAUn5C,QAC1B,QAASzxG,IAAUA,EAAMg7D,QAC3B/wD,EAAG2iJ,QAAQ5xF,MAAQh7D,EAAMg7D,OAEvB1gD,IAAY0b,EAAY,CAC1B,GAAI40H,EAAU3nH,KAKZ,OAJAh5B,EAAG5D,iBAAiB,aAAcwnJ,EAAY,CAC5C/4H,SAAS,SAEX7qB,EAAG5D,iBAAiB,YAAawnJ,GAGnC5jJ,EAAG5D,iBAAiB,aAAcknJ,EAAY,CAC5Cz4H,SAAS,IAEX7qB,EAAG5D,iBAAiB,WAAYynJ,EAAY,CAC1Ch5H,SAAS,IAEX7qB,EAAG5D,iBAAiB,YAAa0nJ,EAAkB,CACjDj5H,SAAS,IAEX7qB,EAAG5D,iBAAiB,cAAeynJ,GACnC7jJ,EAAG5D,iBAAiB,YAAaknJ,GACjCtjJ,EAAG5D,iBAAiB,UAAWynJ,GAC/B7jJ,EAAG5D,iBAAiB,aAAcynJ,GAClC7jJ,EAAG5D,iBAAiB,UAAW4nJ,GAC/BhkJ,EAAG5D,iBAAiB,QAAS+nJ,GAC7BnkJ,EAAG5D,iBAAiB,OAAQgoJ,GAG5BpkJ,EAAG5D,iBAAiB,YAAaynJ,EAAY,CAC3Ch5H,SAAS,GAEb,MAAYxa,GAAW0b,GACrBu4H,EAAgBtkJ,EAEpB,CACA,SAASskJ,EAAgBtkJ,GACvBA,EAAG3D,oBAAoB,YAAainJ,GACpCtjJ,EAAG3D,oBAAoB,aAAcinJ,GACrCtjJ,EAAG3D,oBAAoB,WAAYwnJ,GACnC7jJ,EAAG3D,oBAAoB,YAAaynJ,GACpC9jJ,EAAG3D,oBAAoB,cAAewnJ,GACtC7jJ,EAAG3D,oBAAoB,UAAWwnJ,GAClC7jJ,EAAG3D,oBAAoB,aAAcwnJ,GACrC7jJ,EAAG3D,oBAAoB,UAAW2nJ,GAClChkJ,EAAG3D,oBAAoB,QAAS8nJ,GAChCnkJ,EAAG3D,oBAAoB,YAAawnJ,GACpC7jJ,EAAG3D,oBAAoB,OAAQ+nJ,EACjC,CACA,SAASpzH,EAAQhxB,EAAImgJ,GACnBkE,EAAarkJ,EAAImgJ,GAAS,EAC5B,CACA,SAASY,EAAU/gJ,UACVA,EAAG2iJ,QACV2B,EAAgBtkJ,EAClB,CACA,SAASshJ,EAAQthJ,EAAImgJ,GACnB,GAAIA,EAAQpqJ,QAAUoqJ,EAAQr6E,SAC5B,OAEF,MAAM/5C,EAAas3H,EAAgBlD,EAAQr6E,UAC3Cu+E,EAAarkJ,EAAImgJ,EAASp0H,EAC5B,CACO,MAAM0yD,EAAS,CACpBztD,UACA+vH,YACAO,WAEF,O,kFC5RA,MAAMiD,EAAgB9nC,IACpB,MAAM,YACJ+nC,EAAW,UACXC,EAAS,YACTC,EAAW,UACXC,GACEloC,EACEmoC,EAAW,GACXC,EAAc,GACpBpoC,EAAQj3E,QAAUi/G,EAAYD,EAC9B/nC,EAAQh3E,QAAUk/G,EAAYD,EAC1B9gJ,KAAKuE,IAAIs0G,EAAQh3E,SAAWm/G,EAAWhhJ,KAAKuE,IAAIs0G,EAAQj3E,WAC1Di3E,EAAQ/1G,MAAQ+9I,EAAYD,EAAcK,GAAepoC,EAAQ/1G,KAAK+1G,GACtEA,EAAQpjD,OAASorF,EAAYD,EAAcK,GAAepoC,EAAQpjD,MAAMojD,IAEtE74G,KAAKuE,IAAIs0G,EAAQj3E,SAAWo/G,EAAWhhJ,KAAKuE,IAAIs0G,EAAQh3E,WAC1Dg3E,EAAQzV,IAAM29C,EAAYD,EAAcG,GAAepoC,EAAQzV,GAAGyV,GAClEA,EAAQ1V,MAAQ49C,EAAYD,EAAcG,GAAepoC,EAAQ1V,KAAK0V,GACxE,EAEF,SAASqoC,EAAW92I,EAAOyuG,GACzB,MAAM9zG,EAAQqF,EAAMiY,eAAe,GACnCw2F,EAAQ+nC,YAAc77I,EAAMs2B,QAC5Bw9E,EAAQioC,YAAc/7I,EAAMu2B,QAC5Bu9E,EAAQ9tE,QAAQ,CACdnrB,cAAexV,KACZyuG,GAEP,CACA,SAASsoC,EAAS/2I,EAAOyuG,GACvB,MAAM9zG,EAAQqF,EAAMiY,eAAe,GACnCw2F,EAAQgoC,UAAY97I,EAAMs2B,QAC1Bw9E,EAAQkoC,UAAYh8I,EAAMu2B,QAC1Bu9E,EAAQh2D,MAAM,CACZjjC,cAAexV,KACZyuG,IAEL8nC,EAAc9nC,EAChB,CACA,SAASuoC,EAAUh3I,EAAOyuG,GACxB,MAAM9zG,EAAQqF,EAAMiY,eAAe,GACnCw2F,EAAQwoC,WAAat8I,EAAMs2B,QAC3Bw9E,EAAQyoC,WAAav8I,EAAMu2B,QAC3Bu9E,EAAQ0oC,OAAO,CACb3hI,cAAexV,KACZyuG,GAEP,CACA,SAAS2oC,IACP,IAAIrvJ,EAAQ2L,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjF,MAAM+6G,EAAU,CACd+nC,YAAa,EACbE,YAAa,EACbD,UAAW,EACXE,UAAW,EACXM,WAAY,EACZC,WAAY,EACZ1/G,QAAS,EACTC,QAAS,EACT/+B,KAAM3Q,EAAM2Q,KACZ2yD,MAAOtjE,EAAMsjE,MACb2tC,GAAIjxG,EAAMixG,GACVD,KAAMhxG,EAAMgxG,KACZp4D,MAAO54C,EAAM44C,MACbw2G,KAAMpvJ,EAAMovJ,KACZ1+F,IAAK1wD,EAAM0wD,KAEb,MAAO,CACLq+F,WAAYzpJ,GAAKypJ,EAAWzpJ,EAAGohH,GAC/BsoC,SAAU1pJ,GAAK0pJ,EAAS1pJ,EAAGohH,GAC3BuoC,UAAW3pJ,GAAK2pJ,EAAU3pJ,EAAGohH,GAEjC,CACA,SAASzrF,EAAQhxB,EAAImgJ,GACnB,MAAMpqJ,EAAQoqJ,EAAQpqJ,MAChBsC,EAAStC,GAAOqP,OAASpF,EAAGyH,cAAgBzH,EAC5CyM,EAAU1W,GAAO0W,SAAW,CAChCoe,SAAS,GAEL62C,EAAMy+E,EAAQ/tF,UAAUquF,EAAE/+E,IAEhC,IAAKrpE,IAAWqpE,EAAK,OACrB,MAAMjU,EAAW23F,EAAejF,EAAQpqJ,OACxCsC,EAAOgtJ,eAAiBhtJ,EAAOgtJ,gBAAkBtuJ,OAAO+qJ,OAAO,MAC/DzpJ,EAAOgtJ,eAAe3jF,GAAOjU,GAC7B,QAAKA,GAAUxxD,SAAQszB,IACrBl3B,EAAO+D,iBAAiBmzB,EAAWk+B,EAASl+B,GAAY9iB,EAAQ,GAEpE,CACA,SAASs0I,EAAU/gJ,EAAImgJ,GACrB,MAAM9nJ,EAAS8nJ,EAAQpqJ,OAAOqP,OAASpF,EAAGyH,cAAgBzH,EACpD0hE,EAAMy+E,EAAQ/tF,UAAUquF,EAAE/+E,IAChC,IAAKrpE,GAAQgtJ,iBAAmB3jF,EAAK,OACrC,MAAMjU,EAAWp1D,EAAOgtJ,eAAe3jF,IACvC,QAAKjU,GAAUxxD,SAAQszB,IACrBl3B,EAAOgE,oBAAoBkzB,EAAWk+B,EAASl+B,GAAW,WAErDl3B,EAAOgtJ,eAAe3jF,EAC/B,CACO,MAAMy8B,EAAQ,CACnBntE,UACA+vH,aAEF,K,+LC9FO,SAASuE,IACd,IAAI7N,EAAU/1I,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM,UACJ6jJ,KACG/iF,GACDi1E,EACEhrI,GAAU,QAAU84I,EAAW/iF,IAC/B,QACJtY,EAAU,CAAC,EAAC,WACZC,EAAa,CAAC,EAAC,WACfiZ,EAAa,CAAC,GACZ32D,EACEshB,GAAW,QAAethB,EAAQshB,UAClCgR,GAAU,QAActyB,EAAQsyB,QAAStyB,EAAQymI,KACjD/pE,GAAQ,QAAY18D,EAAQ08D,OAC5BwuE,GAAQ,QAAYlrI,EAAQkrI,OAC5B7kC,GAAS,QAAarmG,EAAQqmG,QAC9B6M,GAAO,QAAWlzG,EAAQkzG,KAAM7M,GAChCtxB,GAAO,QAAW/0E,EAAQ+0E,KAAMsxB,GAChC57C,EAAUzB,IACd,IAAK,MAAM38D,KAAOsqE,EAChB3N,EAAI4qF,UAAUvnJ,EAAKsqE,EAAWtqE,IAEhC,IAAK,MAAMA,KAAOqxD,EAChBsL,EAAI9W,UAAU7lD,EAAKqxD,EAAWrxD,IAEhC,IAAK,MAAMA,KAAOoxD,EAChBuL,EAAI9W,UAAU7lD,GAAK,QAAgB,IAC9BoxD,EAAQpxD,GACX5C,KAAM4C,EACN0sJ,UAAWt7F,EAAQpxD,GAAK5C,QAY5B,GATAizE,EAAMjS,QAAQzB,GACdA,EAAI8B,QAAQ,KAAgBxpC,GAC5B0nC,EAAI8B,QAAQ,KAAex4B,GAC3B02B,EAAI8B,QAAQ,KAAa4R,GACzB1T,EAAI8B,QAAQ,KAAYogF,GACxBliF,EAAI8B,QAAQ,IAAcu7C,GAC1Br9C,EAAI8B,QAAQ,KAAmBooD,EAAKlzG,SACpCgpD,EAAI8B,QAAQ,IAAmBooD,EAAKvtD,UACpCqD,EAAI8B,QAAQ,KAAYiqB,GACpB,MAAc/0E,EAAQymI,IACxB,GAAIz9E,EAAIgwF,MACNhwF,EAAIgwF,MAAM/D,KAAK,wBAAwB,KACrC3iH,EAAQxjB,QAAQ,QAEb,CACL,MAAM,MACJwV,GACE0kC,EACJA,EAAI1kC,MAAQ,WACV,MAAM8tC,EAAK9tC,KAASrvB,WAGpB,OAFA,SAAS,IAAMq9B,EAAQxjB,WACvBk6C,EAAI1kC,MAAQA,EACL8tC,CACT,CACF,CAEF,KAAOhwB,QAEL4mB,EAAIiwF,MAAM,CACR3C,SAAU,CACR,QAAA4C,GACE,OAAO,QAAS,CACd53H,SAAU63H,EAAO3rJ,KAAKyE,KAAM,MAC5BqgC,QAAS6mH,EAAO3rJ,KAAKyE,KAAM,MAC3ByqE,MAAOy8E,EAAO3rJ,KAAKyE,KAAM,MACzBi5I,MAAOiO,EAAO3rJ,KAAKyE,KAAM,MACzBo0G,OAAQ8yC,EAAO3rJ,KAAKyE,KAAM,KAC1BihH,KAAMimC,EAAO3rJ,KAAKyE,KAAM,MAE5B,IAGN,EAEF,MAAO,CACLw4D,UACAnpC,WACAgR,UACAoqC,QACAwuE,QACA7kC,SACA6M,OACAn+B,OAEJ,CACO,MAAMhsF,EAAU,QAIvB,SAASowJ,EAAO9sJ,GACd,MAAM+lE,EAAKngE,KAAK+hJ,EACV9P,EAAW9xE,EAAGz5D,QAAQurI,UAAY9xE,EAAG9L,MAAM8uF,YAAYlR,SAC7D,GAAIA,GAAY73I,KAAO63I,EACrB,OAAOA,EAAS73I,EAEpB,CATAwsJ,EAAc9vJ,QAAUA,C,mHC9FxB,MAAM00D,EAAU,CACd8mB,SAAU,iBACVtgD,SAAU,YACVg9E,OAAQ,mBACRjxC,MAAO,YACP3Y,OAAQ,mBAERwH,MAAO,mBACPqyF,QAAS,mBACTpnF,KAAM,kBACNqnF,QAAS,mBACTr4F,MAAO,mBACPz+C,KAAM,mBACN5M,KAAM,oBACN2rJ,WAAY,sBACZC,YAAa,6BACbC,sBAAuB,gBACvBxM,UAAW,aAEXyM,QAAS,eACTC,SAAU,iBACV53C,OAAQ,mBACRtuC,KAAM,WACNkoB,SAAU,gBACVi+D,SAAU,gBACVC,QAAS,sBACTC,SAAU,qBACVC,KAAM,aACNC,YAAa,mBACbC,WAAY,WACZC,WAAY,qBACZnsE,QAAS,aACT8Y,MAAO,iBACPhrC,KAAM,gBACNs+F,OAAQ,6BACRj+B,KAAM,gBACNk+B,KAAM,WACNC,MAAO,YACPnN,SAAU,eACVoN,iBAAkB,gBAClBC,eAAgB,iBAChB39C,WAAY,kBAERsuC,EAAM,CAEV74F,UAAWrmD,IAAS,IAAAw4D,GAAE,KAAY,IAC7Bx4D,EACHy4D,MAAO,Q,2MCnDX,MAAM4L,EAAQ,CAAC,MAAO,UAChB4Q,EAAS,CAAC,QAAS,MAAO,OAAQ,SAEjC,SAASu5E,EAAY5uF,EAAQiB,GAClC,IAAKx2D,EAAMw1D,GAASD,EAAOx4D,MAAM,KAIjC,OAHKy4D,IACHA,GAAQ,QAASwE,EAAOh6D,GAAQ,SAAU,QAAS4qE,EAAQ5qE,GAAQ,MAAQ,UAEtE,CACLA,KAAMokJ,EAAWpkJ,EAAMw2D,GACvBhB,MAAO4uF,EAAW5uF,EAAOgB,GAE7B,CACO,SAAS4tF,EAAW58B,EAAKhxD,GAC9B,MAAY,UAARgxD,EAAwBhxD,EAAQ,QAAU,OAClC,QAARgxD,EAAsBhxD,EAAQ,OAAS,QACpCgxD,CACT,CACO,SAAS68B,EAAS9uF,GACvB,MAAO,CACLv1D,KAAM,CACJo0C,OAAQ,SACRtwC,IAAK,SACL+zD,OAAQ,MACR9zD,KAAM,QACN2yD,MAAO,QACPnB,EAAOv1D,MACTw1D,MAAOD,EAAOC,MAElB,CACO,SAAS8uF,EAAU/uF,GACxB,MAAO,CACLv1D,KAAMu1D,EAAOv1D,KACbw1D,MAAO,CACLphB,OAAQ,SACRtwC,IAAK,SACL+zD,OAAQ,MACR9zD,KAAM,QACN2yD,MAAO,QACPnB,EAAOC,OAEb,CACO,SAAS+uF,EAAWhvF,GACzB,MAAO,CACLv1D,KAAMu1D,EAAOC,MACbA,MAAOD,EAAOv1D,KAElB,CACO,SAASwkJ,EAAQjvF,GACtB,OAAO,QAASyE,EAAOzE,EAAOv1D,MAAQ,IAAM,GAC9C,C,yGCjDO,SAASykJ,EAAkBpnJ,GAChC,MAAMs6D,EAAOt6D,EAAGkG,wBACVjJ,EAAQ0B,iBAAiBqB,GACzB00C,EAAKz3C,EAAMwD,UACjB,GAAIi0C,EAAI,CACN,IAAI2yG,EAAIp8E,EAAIC,EAAI6lD,EAAIC,EACpB,GAAIt8E,EAAG+G,WAAW,aAChB4rG,EAAK3yG,EAAG94C,MAAM,GAAI,GAAG8D,MAAM,MAC3BurE,GAAMo8E,EAAG,GACTn8E,GAAMm8E,EAAG,GACTt2B,GAAMs2B,EAAG,IACTr2B,GAAMq2B,EAAG,QACJ,KAAI3yG,EAAG+G,WAAW,WAOvB,OAAO,IAAI,KAAI6e,GANf+sF,EAAK3yG,EAAG94C,MAAM,GAAI,GAAG8D,MAAM,MAC3BurE,GAAMo8E,EAAG,GACTn8E,GAAMm8E,EAAG,GACTt2B,GAAMs2B,EAAG,GACTr2B,GAAMq2B,EAAG,EAGX,CACA,MAAM5lJ,EAAKxE,EAAMy4C,gBACX75B,EAAIy+C,EAAKz+C,EAAIk1G,GAAM,EAAI9lD,GAAM9pE,WAAWM,GACxCqa,EAAIw+C,EAAKx+C,EAAIk1G,GAAM,EAAI9lD,GAAM/pE,WAAWM,EAAG7F,MAAM6F,EAAG/F,QAAQ,KAAO,IACnE4rJ,EAAIr8E,EAAK3Q,EAAKhxD,MAAQ2hE,EAAKjrE,EAAG+H,YAAc,EAC5C+oD,EAAIoa,EAAK5Q,EAAK9wD,OAAS0hE,EAAKlrE,EAAG2V,aAAe,EACpD,OAAO,IAAI,KAAI,CACbkG,IACAC,IACAxS,MAAOg+I,EACP99I,OAAQsnD,GAEZ,CACE,OAAO,IAAI,KAAIwJ,EAEnB,CACO,SAAS72D,EAAQzD,EAAIunJ,EAAW96I,GACrC,GAA0B,qBAAfzM,EAAGyD,QAAyB,MAAO,CAC5C6nE,SAAUvd,QAAQhD,WAEpB,IAAIqgB,EACJ,IACEA,EAAYprE,EAAGyD,QAAQ8jJ,EAAW96I,EACpC,CAAE,MAAO7G,GACP,MAAO,CACL0lE,SAAUvd,QAAQhD,UAEtB,CAQA,MAPkC,qBAAvBqgB,EAAUE,WACnBF,EAAUE,SAAW,IAAIvd,SAAQhD,IAC/BqgB,EAAUo8E,SAAW,KACnBz8F,EAAQqgB,EAAU,CACnB,KAGEA,CACT,C,qHC3DO,MAAMq8E,EACX,WAAA5tJ,CAAY2I,GACV,IAAI,EACFqZ,EAAC,EACDC,EAAC,MACDxS,EAAK,OACLE,GACEhH,EACJ9D,KAAKmd,EAAIA,EACTnd,KAAKod,EAAIA,EACTpd,KAAK4K,MAAQA,EACb5K,KAAK8K,OAASA,CAChB,CACA,OAAI/C,GACF,OAAO/H,KAAKod,CACd,CACA,UAAI0+C,GACF,OAAO97D,KAAKod,EAAIpd,KAAK8K,MACvB,CACA,QAAI9C,GACF,OAAOhI,KAAKmd,CACd,CACA,SAAIw9C,GACF,OAAO36D,KAAKmd,EAAInd,KAAK4K,KACvB,EAEK,SAASo+I,EAAY/mJ,EAAGwsB,GAC7B,MAAO,CACLtR,EAAG,CACDu/C,OAAQx3D,KAAKC,IAAI,EAAGspB,EAAEzmB,KAAO/F,EAAE+F,MAC/B20D,MAAOz3D,KAAKC,IAAI,EAAGlD,EAAE04D,MAAQlsC,EAAEksC,QAEjCv9C,EAAG,CACDs/C,OAAQx3D,KAAKC,IAAI,EAAGspB,EAAE1mB,IAAM9F,EAAE8F,KAC9B40D,MAAOz3D,KAAKC,IAAI,EAAGlD,EAAE65D,OAASrtC,EAAEqtC,SAGtC,CACO,SAASmtF,EAAatvJ,GAC3B,OAAI+B,MAAMC,QAAQhC,GACT,IAAIovJ,EAAI,CACb5rI,EAAGxjB,EAAO,GACVyjB,EAAGzjB,EAAO,GACViR,MAAO,EACPE,OAAQ,IAGHnR,EAAO6N,uBAElB,C;;;;;;AClCA,MAAM0hJ,EAAU,IACVC,EAAM,SACNC,EAAM,SACNC,EAAM,QAONC,EAAS,IACTC,EAAU,IACVC,EAAS,IACTC,EAAQ,IAIRC,EAAU,IACVC,EAAU,KACVC,EAAY,KACZC,EAAW,KACXC,EAAW,KACXC,EAAc,KACdC,EAAc,kBACdC,EAAc,IACdC,EAAS,KAER,SAASC,EAAapjJ,EAAM+jG,GAEjC,MAAMs/C,GAAQrjJ,EAAK4vC,EAAI,MAAQuyG,EACzBmB,GAAQtjJ,EAAKy9F,EAAI,MAAQ0kD,EACzBoB,GAAQvjJ,EAAK0nB,EAAI,MAAQy6H,EACzBqB,GAAOz/C,EAAWn0D,EAAI,MAAQuyG,EAC9BsB,GAAO1/C,EAAWtG,EAAI,MAAQ0kD,EAC9BuB,GAAO3/C,EAAWr8E,EAAI,MAAQy6H,EAGpC,IAaIwB,EAbAC,EAAOP,EAAOjB,EAAMkB,EAAOjB,EAAMkB,EAAOjB,EACxCuB,EAAML,EAAMpB,EAAMqB,EAAMpB,EAAMqB,EAAMpB,EAQxC,GAJIsB,GAAQjB,IAASiB,IAASjB,EAAUiB,IAAShB,GAC7CiB,GAAOlB,IAASkB,IAAQlB,EAAUkB,IAAQjB,GAG1CzkJ,KAAKuE,IAAImhJ,EAAMD,GAAQf,EAAW,OAAO,EAK7C,GAAIgB,EAAMD,EAAM,CAId,MAAME,GAAQD,GAAOtB,EAASqB,GAAQpB,GAAWM,EAOjDa,EAAiBG,EAAOX,EAAS,EAAMW,EAAOd,EAAcc,EAAOA,EAAOb,EAAcC,EAAcY,EAAOZ,CAC/G,KAAO,CAIL,MAAMY,GAAQD,GAAOnB,EAAQkB,GAAQnB,GAAUM,EAC/CY,EAAiBG,GAAQX,EAAS,EAAMW,GAAQd,EAAcc,EAAOA,EAAOb,EAAcC,EAAcY,EAAOZ,CACjH,CACA,OAAwB,IAAjBS,CACT,C,wBCpFA,MAAMlxH,EAAQ,mBAERsxH,EAAyBpuJ,GAAKA,EAAI88B,GAAS,EAAIt0B,KAAK6lJ,KAAKruJ,GAAKA,GAAK,EAAI88B,GAAS,GAAK,EAAI,GACzFwxH,EAAyBtuJ,GAAKA,EAAI88B,EAAQ98B,GAAK,EAAI,EAAI88B,GAAS,GAAK98B,EAAI,EAAI,IAC5E,SAASuuJ,EAAQC,GACtB,MAAMnpJ,EAAY+oJ,EACZK,EAAeppJ,EAAUmpJ,EAAI,IACnC,MAAO,CAAC,IAAMC,EAAe,GAAI,KAAOppJ,EAAUmpJ,EAAI,GAAK,QAAWC,GAAe,KAAOA,EAAeppJ,EAAUmpJ,EAAI,GAAK,UAChI,CACO,SAASE,EAAMC,GACpB,MAAMtpJ,EAAYipJ,EACZM,GAAMD,EAAI,GAAK,IAAM,IAC3B,MAAO,CAAgC,OAA/BtpJ,EAAUupJ,EAAKD,EAAI,GAAK,KAAgBtpJ,EAAUupJ,GAAoC,QAA/BvpJ,EAAUupJ,EAAKD,EAAI,GAAK,KACzF,CCZA,MAAME,EAAoB,CAAC,CAAC,QAAS,QAAS,OAAS,EAAE,MAAQ,OAAQ,OAAS,CAAC,OAAS,KAAQ,QAG9FC,EAAuBC,GAAKA,GAAK,SAAgB,MAAJA,EAAY,MAAQA,IAAM,EAAI,KAAO,KAGlFC,EAAoB,CAAC,CAAC,MAAQ,MAAQ,OAAS,CAAC,MAAQ,MAAQ,OAAS,CAAC,MAAQ,MAAQ,QAG1FC,EAAuBF,GAAKA,GAAK,OAAUA,EAAI,QAAUA,EAAI,MAAS,QAAU,IAC/E,SAAS,EAAQP,GACtB,MAAMzmD,EAAM/oG,MAAM,GACZqG,EAAYypJ,EACZ9pJ,EAAS6pJ,EAGf,IAAK,IAAI1xJ,EAAI,EAAGA,EAAI,IAAKA,EAEvB4qG,EAAI5qG,GAAKqL,KAAK8lC,MAAgG,KAA1F,QAAMjpC,EAAUL,EAAO7H,GAAG,GAAKqxJ,EAAI,GAAKxpJ,EAAO7H,GAAG,GAAKqxJ,EAAI,GAAKxpJ,EAAO7H,GAAG,GAAKqxJ,EAAI,MAEzG,MAAO,CACLv0G,EAAG8tD,EAAI,GACPD,EAAGC,EAAI,GACPh2E,EAAGg2E,EAAI,GAEX,CACO,SAAS,EAAM3gG,GACpB,IAAI,EACF6yC,EAAC,EACD6tD,EAAC,EACD/1E,GACE3qB,EACJ,MAAMonJ,EAAM,CAAC,EAAG,EAAG,GACbnpJ,EAAY4pJ,EACZjqJ,EAASgqJ,EAGf/0G,EAAI50C,EAAU40C,EAAI,KAClB6tD,EAAIziG,EAAUyiG,EAAI,KAClB/1E,EAAI1sB,EAAU0sB,EAAI,KAGlB,IAAK,IAAI50B,EAAI,EAAGA,EAAI,IAAKA,EACvBqxJ,EAAIrxJ,GAAK6H,EAAO7H,GAAG,GAAK88C,EAAIj1C,EAAO7H,GAAG,GAAK2qG,EAAI9iG,EAAO7H,GAAG,GAAK40B,EAEhE,OAAOy8H,CACT,CC3CO,SAASU,EAAW/nF,GACzB,QAASA,GAAS,6BAA6B13D,KAAK03D,EACtD,CACO,SAASgoF,EAAgBhoF,GAC9B,OAAO+nF,EAAW/nF,KAAW,2BAA2B13D,KAAK03D,EAC/D,CACA,MAAMioF,EAAa,yCACbC,EAAU,CACdtnD,IAAK,CAAC9tD,EAAG6tD,EAAG/1E,EAAGxsB,KAAM,CACnB00C,IACA6tD,IACA/1E,IACAxsB,MAEFmiG,KAAM,CAACztD,EAAG6tD,EAAG/1E,EAAGxsB,KAAM,CACpB00C,IACA6tD,IACA/1E,IACAxsB,MAEF0iG,IAAK,CAACvyC,EAAG/zB,EAAGyc,EAAG74C,IAAM+pJ,EAAS,CAC5B55F,IACA/zB,IACAyc,IACA74C,MAEFyiG,KAAM,CAACtyC,EAAG/zB,EAAGyc,EAAG74C,IAAM+pJ,EAAS,CAC7B55F,IACA/zB,IACAyc,IACA74C,MAEFgqJ,IAAK,CAAC75F,EAAG/zB,EAAG70B,EAAGvH,IAAMiqJ,EAAS,CAC5B95F,IACA/zB,IACA70B,IACAvH,MAEFwrG,KAAM,CAACr7C,EAAG/zB,EAAG70B,EAAGvH,IAAMiqJ,EAAS,CAC7B95F,IACA/zB,IACA70B,IACAvH,OAGG,SAASkqJ,EAAWtoF,GACzB,GAAqB,kBAAVA,EAKT,OAJI/yD,MAAM+yD,IAAUA,EAAQ,GAAKA,EAAQ,YAEvC,EAAA78D,EAAA,IAAY,IAAI68D,+BAEX,CACLltB,GAAY,SAARktB,IAAqB,GACzB2gC,GAAY,MAAR3gC,IAAmB,EACvBp1C,EAAW,IAARo1C,GAEA,GAAqB,kBAAVA,GAAsBioF,EAAW3/I,KAAK03D,GAAQ,CAC9D,MAAM,OACJ9uD,GACE8uD,EAAM94D,MAAM+gJ,IACV,GACJvrG,EAAE,OACF+N,GACEv5C,EACEq3I,EAAa99F,EAAOttD,MAAM,QAAQ7D,KAAIqM,GACtCA,EAAEw/C,SAAS,MAAQ,CAAC,MAAO,OAAQ,MAAO,QAAQniD,SAAS05C,GACtD99C,WAAW+G,GAAK,IAEhB/G,WAAW+G,KAGtB,OAAOuiJ,EAAQxrG,MAAO6rG,EACxB,CAAO,GAAqB,kBAAVvoF,EAAoB,CACpC,IAAIogC,EAAMpgC,EAAM9mB,WAAW,KAAO8mB,EAAM3mE,MAAM,GAAK2mE,EAC/C,CAAC,EAAG,GAAGh9D,SAASo9F,EAAInqG,QACtBmqG,EAAMA,EAAIjjG,MAAM,IAAI7D,KAAI+sD,GAAQA,EAAOA,IAAM/nD,KAAK,IACxC,CAAC,EAAG,GAAG0E,SAASo9F,EAAInqG,UAC9B,EAAAkN,EAAA,IAAY,IAAI68D,kCAElB,MAAMwoF,EAAMx7I,SAASozF,EAAK,IAI1B,OAHInzF,MAAMu7I,IAAQA,EAAM,GAAKA,EAAM,cACjC,EAAArlJ,EAAA,IAAY,IAAI68D,kCAEXyoF,EAASroD,EAClB,CAAO,GAAqB,kBAAVpgC,EAAoB,CACpC,IAAI,QAAIA,EAAO,CAAC,IAAK,IAAK,MACxB,OAAOA,EACF,IAAI,QAAIA,EAAO,CAAC,IAAK,IAAK,MAC/B,OAAOqoF,EAASK,EAAS1oF,IACpB,IAAI,QAAIA,EAAO,CAAC,IAAK,IAAK,MAC/B,OAAOqoF,EAASroF,EAEpB,CACA,MAAM,IAAIjoE,UAAU,kBAA2B,MAATioE,EAAgBA,EAAQh4D,OAAOg4D,IAAUA,EAAM1oE,YAAY3D,6EACnG,CAoBO,SAAS00J,EAASz+C,GACvB,MAAM,EACJr7C,EAAC,EACD/zB,EAAC,EACD70B,EAAC,EACDvH,GACEwrG,EACEr1G,EAAIkE,IACR,MAAMiwD,GAAKjwD,EAAI81D,EAAI,IAAM,EACzB,OAAO5oD,EAAIA,EAAI60B,EAAIn5B,KAAKC,IAAID,KAAKE,IAAImnD,EAAG,EAAIA,EAAG,GAAI,EAAE,EAEjDk4C,EAAM,CAACrsG,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAI+E,KAAIqM,GAAKtE,KAAK8lC,MAAU,IAAJxhC,KACnD,MAAO,CACLmtC,EAAG8tD,EAAI,GACPD,EAAGC,EAAI,GACPh2E,EAAGg2E,EAAI,GACPxiG,IAEJ,CACO,SAAS+pJ,EAAStnD,GACvB,OAAOwnD,EAASK,EAAS7nD,GAC3B,CAGO,SAAS8nD,EAASpoD,GACvB,IAAKA,EAAM,MAAO,CAChBhyC,EAAG,EACH/zB,EAAG,EACH70B,EAAG,EACHvH,EAAG,GAEL,MAAM00C,EAAIytD,EAAKztD,EAAI,IACb6tD,EAAIJ,EAAKI,EAAI,IACb/1E,EAAI21E,EAAK31E,EAAI,IACbtpB,EAAMD,KAAKC,IAAIwxC,EAAG6tD,EAAG/1E,GACrBrpB,EAAMF,KAAKE,IAAIuxC,EAAG6tD,EAAG/1E,GAC3B,IAAI2jC,EAAI,EACJjtD,IAAQC,IACND,IAAQwxC,EACVyb,EAAI,IAAM,GAAKoyC,EAAI/1E,IAAMtpB,EAAMC,IACtBD,IAAQq/F,EACjBpyC,EAAI,IAAM,GAAK3jC,EAAIkoB,IAAMxxC,EAAMC,IACtBD,IAAQspB,IACjB2jC,EAAI,IAAM,GAAKzb,EAAI6tD,IAAMr/F,EAAMC,MAG/BgtD,EAAI,IAAGA,GAAQ,KACnB,MAAM/zB,EAAY,IAARl5B,EAAY,GAAKA,EAAMC,GAAOD,EAClC8mJ,EAAM,CAAC75F,EAAG/zB,EAAGl5B,GACnB,MAAO,CACLitD,EAAG65F,EAAI,GACP5tH,EAAG4tH,EAAI,GACPziJ,EAAGyiJ,EAAI,GACPhqJ,EAAGmiG,EAAKniG,EAEZ,CACO,SAASwqJ,EAASh/C,GACvB,MAAM,EACJr7C,EAAC,EACD/zB,EAAC,EACD70B,EAAC,EACDvH,GACEwrG,EACE3yD,EAAItxC,EAAIA,EAAI60B,EAAI,EAChBquH,EAAe,IAAN5xG,GAAiB,IAANA,EAAU,GAAKtxC,EAAIsxC,GAAK51C,KAAKE,IAAI01C,EAAG,EAAIA,GAClE,MAAO,CACLsX,IACA/zB,EAAGquH,EACH5xG,IACA74C,IAEJ,CACO,SAASsqJ,EAAS5nD,GACvB,MAAM,EACJvyC,EAAC,EACD/zB,EAAC,EACDyc,EAAC,EACD74C,GACE0iG,EACEn7F,EAAIsxC,EAAIzc,EAAIn5B,KAAKE,IAAI01C,EAAG,EAAIA,GAC5B4xG,EAAe,IAANljJ,EAAU,EAAI,EAAI,EAAIsxC,EAAItxC,EACzC,MAAO,CACL4oD,IACA/zB,EAAGquH,EACHljJ,IACAvH,IAEJ,CACO,SAAS0qJ,EAAS7oJ,GACvB,IAAI,EACF6yC,EAAC,EACD6tD,EAAC,EACD/1E,EAAC,EACDxsB,GACE6B,EACJ,YAAab,IAANhB,EAAkB,OAAO00C,MAAM6tD,MAAM/1E,KAAO,QAAQkoB,MAAM6tD,MAAM/1E,MAAMxsB,IAC/E,CACO,SAAS2qJ,EAASn/C,GACvB,OAAOk/C,EAAST,EAASz+C,GAC3B,CACA,SAASo/C,EAAMrjJ,GACb,MAAM4oD,EAAIltD,KAAK8lC,MAAMxhC,GAAG7R,SAAS,IACjC,OAAQ,KAAK42B,OAAO,EAAG,EAAI6jC,EAAEt4D,QAAUs4D,GAAG5/B,aAC5C,CACO,SAASs6H,EAAS7/I,GACvB,IAAI,EACF0pC,EAAC,EACD6tD,EAAC,EACD/1E,EAAC,EACDxsB,GACEgL,EACJ,MAAO,IAAI,CAAC4/I,EAAMl2G,GAAIk2G,EAAMroD,GAAIqoD,EAAMp+H,QAAUxrB,IAANhB,EAAkB4qJ,EAAM3nJ,KAAK8lC,MAAU,IAAJ/oC,IAAY,IAAIE,KAAK,KACpG,CACO,SAASmqJ,EAASroD,GACvBA,EAAM8oD,EAAS9oD,GACf,IAAKttD,EAAG6tD,EAAG/1E,EAAGxsB,IAAK,QAAMgiG,EAAK,GAAG9mG,KAAI8D,GAAK4P,SAAS5P,EAAG,MAEtD,OADAgB,OAAUgB,IAANhB,EAAkBA,EAAIA,EAAI,IACvB,CACL00C,IACA6tD,IACA/1E,IACAxsB,IAEJ,CACO,SAAS+qJ,EAAS/oD,GACvB,MAAMQ,EAAM6nD,EAASroD,GACrB,OAAOuoD,EAAS/nD,EAClB,CACO,SAASwoD,EAASx/C,GACvB,OAAOq/C,EAASZ,EAASz+C,GAC3B,CACO,SAASs/C,EAAS9oD,GAWvB,OAVIA,EAAIlnD,WAAW,OACjBknD,EAAMA,EAAI/mG,MAAM,IAElB+mG,EAAMA,EAAI/hG,QAAQ,gBAAiB,KAChB,IAAf+hG,EAAInqG,QAA+B,IAAfmqG,EAAInqG,SAC1BmqG,EAAMA,EAAIjjG,MAAM,IAAI7D,KAAIggB,GAAKA,EAAIA,IAAGhb,KAAK,KAExB,IAAf8hG,EAAInqG,SACNmqG,GAAM,SAAO,QAAOA,EAAK,GAAI,EAAG,MAE3BA,CACT,CAQO,SAASw6C,EAAQpnJ,EAAO0jB,GAC7B,MAAMswI,EAAM,EAAe,EAAWh0J,IAEtC,OADAg0J,EAAI,GAAKA,EAAI,GAAc,GAATtwI,EACX,EAAa,EAAaswI,GACnC,CACO,SAAS3M,EAAOrnJ,EAAO0jB,GAC5B,MAAMswI,EAAM,EAAe,EAAWh0J,IAEtC,OADAg0J,EAAI,GAAKA,EAAI,GAAc,GAATtwI,EACX,EAAa,EAAaswI,GACnC,CAMO,SAAS6B,GAAQrpF,GACtB,MAAM4gC,EAAM0nD,EAAWtoF,GACvB,OAAO,EAAW4gC,GAAK,EACzB,CAMO,SAAS0oD,GAAY14D,EAAOo5C,GACjC,MAAMuf,EAAKF,GAAQz4D,GACb44D,EAAKH,GAAQrf,GACb+Q,EAAQ15I,KAAKC,IAAIioJ,EAAIC,GACrBxO,EAAO35I,KAAKE,IAAIgoJ,EAAIC,GAC1B,OAAQzO,EAAQ,MAASC,EAAO,IAClC,CACO,SAASyO,GAAczpF,GAC5B,MAAM0pF,EAAgBroJ,KAAKuE,IAAI0gJ,EAAagC,EAAW,GAAIA,EAAWtoF,KAChE2pF,EAAgBtoJ,KAAKuE,IAAI0gJ,EAAagC,EAAW,UAAWA,EAAWtoF,KAY7E,OAAO2pF,EAAgBtoJ,KAAKE,IAAImoJ,EAAe,IAAM,OAAS,MAChE,C,mICzTO,SAASE,EAAY7iH,IAC1B,QAAK,YAAYA,IACnB,CACO,SAAS8iH,EAAa9iH,IAC3B,QAAK,kBAAkBA,IACzB,CACO,SAAS+iH,EAAU3mE,EAAU4mE,GAClCA,EAAclyJ,MAAMC,QAAQiyJ,GAAeA,EAAY1wJ,MAAM,GAAI,GAAGC,KAAIkhC,GAAK,IAAIA,OAAMl8B,KAAK,MAAQ,QAAQyrJ,EAAY7qF,IAAI,MAAQ,IAAI6qF,MACxI,QAAK,sBAAsB5mE,yBAAgC4mE,aAC7D,C,2KCHO,SAAS1kE,EAAgBn7E,GAE9B,GADAA,EAAQ8/I,OAAS9/I,EAAQ8/I,QAAU9/I,EAAQ8jD,OACtC9jD,EAAQvW,KAEX,OADA,QAAY,oFACLuW,EAET,GAAIA,EAAQ8/I,OAAQ,CAClB9/I,EAAQnU,OAAQ,OAAamU,EAAQnU,OAAS,CAAC,EAAGmU,EAAQvW,KAA1C,GAChB,MAAMs2J,EAAWz1J,OAAO0D,KAAKgS,EAAQnU,OAAOqC,QAAO7B,GAAe,UAARA,GAA2B,UAARA,IAC7E2T,EAAQg5D,YAAc,SAAqBntE,GACzC,OAAO,QAAKA,EAAOk0J,EACrB,EACA//I,EAAQnU,MAAMi5I,IAAMhnI,OACpBkC,EAAQ8jD,MAAQ,SAAej4D,EAAO/B,GACpC,MAAMw3B,GAAW,UAGjB,IAAKA,EAASh4B,MAAO,OAAO0W,EAAQ8/I,OAAOj0J,EAAO/B,GAClD,MACE+B,MAAOkoE,EAAM,mBACbmxE,IACE,QAAoBr5I,EAAOA,EAAMi5I,KAAO9kI,EAAQvW,KAAM63B,GACpD0+H,EAAgBhgJ,EAAQ8/I,OAAO/rF,EAAQjqE,GAE7C,OADAo7I,IACO8a,CACT,CACF,CACA,OAAOhgJ,CACT,CASO,SAASigJ,IACd,IAAIC,IAAiBjrJ,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,KAAmBA,UAAU,GACpF,OAAO+K,IAAYkgJ,EAAiB/kE,EAAkB,MAAkBn7E,EAC1E,CACO,SAASmgJ,EAA0Bt0J,EAAO0lC,GAE/C,OADAA,EAAO1lC,MAAQA,EACR0lC,CACT,C,qHCtDO,MAAM6uH,EAAiB,+BACjBC,EAAoB,+BACpBC,EAAoB,4B,6ICC1B,SAASjuF,EAAmB5oE,EAAMozC,GACvC,MAAMu1B,GAAK,UACX,IAAKA,EACH,MAAM,IAAI1Y,MAAM,aAAajwD,KAAQozC,GAAW,iDAElD,OAAOu1B,CACT,CACO,SAASmuF,IACd,IAAI92J,EAAOwL,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,cAC/E,MAAMm9D,EAAKC,EAAmB5oE,GAAMutB,KACpC,OAAO,QAAYo7C,GAAI2mF,WAAa3mF,GAAI3oE,KAC1C,CACA,IAAI+2J,EAAO,EACPC,EAAO,IAAIlvF,QACR,SAASmvF,IACd,MAAMtuF,EAAKC,EAAmB,UAC9B,GAAIouF,EAAKj2J,IAAI4nE,GAAK,OAAOquF,EAAK5xJ,IAAIujE,GAAS,CACzC,MAAM6C,EAAMurF,IAEZ,OADAC,EAAK3xJ,IAAIsjE,EAAI6C,GACNA,CACT,CACF,CACAyrF,EAAOt+G,MAAQ,KACbo+G,EAAO,EACPC,EAAO,IAAIlvF,OAAS,C,oCC3Bf,SAAS7D,EAAgBn6D,GAC9B,IAAIotJ,EAAgB1rJ,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,IAAmBA,UAAU,GACnF,MAAO1B,EAAI,CACT,GAAIotJ,EAAgBC,EAAwBrtJ,GAAMstJ,EAAattJ,GAAK,OAAOA,EAC3EA,EAAKA,EAAGyH,aACV,CACA,OAAOhR,SAASwuE,gBAClB,CACO,SAASsoF,EAAiBvtJ,EAAIwtJ,GACnC,MAAM7sH,EAAW,GACjB,GAAI6sH,GAAUxtJ,IAAOwtJ,EAAOloJ,SAAStF,GAAK,OAAO2gC,EACjD,MAAO3gC,EAAI,CAET,GADIstJ,EAAattJ,IAAK2gC,EAAS7lC,KAAKkF,GAChCA,IAAOwtJ,EAAQ,MACnBxtJ,EAAKA,EAAGyH,aACV,CACA,OAAOk5B,CACT,CACO,SAAS2sH,EAAattJ,GAC3B,IAAKA,GAAMA,EAAGwB,WAAak/D,KAAKC,aAAc,OAAO,EACrD,MAAM1jE,EAAQ3D,OAAOqF,iBAAiBqB,GACtC,MAA2B,WAApB/C,EAAMwwJ,WAA8C,SAApBxwJ,EAAMwwJ,WAAwBztJ,EAAG+yE,aAAe/yE,EAAGoP,YAC5F,CACA,SAASi+I,EAAwBrtJ,GAC/B,IAAKA,GAAMA,EAAGwB,WAAak/D,KAAKC,aAAc,OAAO,EACrD,MAAM1jE,EAAQ3D,OAAOqF,iBAAiBqB,GACtC,MAAO,CAAC,SAAU,QAAQuF,SAAStI,EAAMwwJ,UAC3C,C,6NC3BO,MAAMC,EAA+B,qBAAXp0J,OACpBq0J,EAAwBD,GAAc,yBAA0Bp0J,OAChEs0J,EAAiBF,IAAe,iBAAkBp0J,QAAUA,OAAO4E,UAAU2vJ,eAAiB,GAC9FC,EAAuBJ,GAAc,eAAgBp0J,M,gvCCHlE,SAASy0J,EAA2B1yJ,EAAGD,EAAGuF,GAAKqtJ,EAA2B3yJ,EAAGD,GAAIA,EAAEG,IAAIF,EAAGsF,EAAI,CAC9F,SAASqtJ,EAA2B3yJ,EAAGD,GAAK,GAAIA,EAAEnE,IAAIoE,GAAI,MAAM,IAAIf,UAAU,iEAAmE,CACjJ,SAAS2zJ,EAAsBlxH,EAAGp8B,EAAG00C,GAAK,OAAOtY,EAAExhC,IAAI2yJ,EAAkBnxH,EAAGp8B,GAAI00C,GAAIA,CAAG,CACvF,SAAS84G,EAAsBpxH,EAAGp8B,GAAK,OAAOo8B,EAAEzhC,IAAI4yJ,EAAkBnxH,EAAGp8B,GAAK,CAC9E,SAASutJ,EAAkB7yJ,EAAGD,EAAGJ,GAAK,GAAI,mBAAqBK,EAAIA,IAAMD,EAAIC,EAAEpE,IAAImE,GAAI,OAAOsG,UAAUlJ,OAAS,EAAI4C,EAAIJ,EAAG,MAAM,IAAIV,UAAU,gDAAkD,CAI3L,SAAS8zJ,EAAe10J,EAAKuhB,EAAMu/H,GACxC,MAAMryF,EAAOltC,EAAKziB,OAAS,EAC3B,GAAI2vD,EAAO,EAAG,YAAexmD,IAARjI,EAAoB8gJ,EAAW9gJ,EACpD,IAAK,IAAInB,EAAI,EAAGA,EAAI4vD,EAAM5vD,IAAK,CAC7B,GAAW,MAAPmB,EACF,OAAO8gJ,EAET9gJ,EAAMA,EAAIuhB,EAAK1iB,GACjB,CACA,OAAW,MAAPmB,QACuBiI,IAApBjI,EAAIuhB,EAAKktC,IADQqyF,EAC0B9gJ,EAAIuhB,EAAKktC,GAC7D,CACO,SAASkmG,EAAU1tJ,EAAGwsB,GAC3B,GAAIxsB,IAAMwsB,EAAG,OAAO,EACpB,GAAIxsB,aAAa3I,MAAQm1B,aAAan1B,MAAQ2I,EAAE+C,YAAcypB,EAAEzpB,UAE9D,OAAO,EAET,GAAI/C,IAAM5J,OAAO4J,IAAMwsB,IAAMp2B,OAAOo2B,GAElC,OAAO,EAET,MAAM70B,EAAQvB,OAAO0D,KAAKkG,GAC1B,OAAIrI,EAAME,SAAWzB,OAAO0D,KAAK0yB,GAAG30B,QAI7BF,EAAM2pD,OAAM3hB,GAAK+tH,EAAU1tJ,EAAE2/B,GAAInT,EAAEmT,KAC5C,CACO,SAASguH,EAAqB50J,EAAKuhB,EAAMu/H,GAE9C,OAAW,MAAP9gJ,GAAgBuhB,GAAwB,kBAATA,OACjBtZ,IAAdjI,EAAIuhB,GAA4BvhB,EAAIuhB,IACxCA,EAAOA,EAAKra,QAAQ,aAAc,OAClCqa,EAAOA,EAAKra,QAAQ,MAAO,IACpBwtJ,EAAe10J,EAAKuhB,EAAKvb,MAAM,KAAM86I,IAJiBA,CAK/D,CACO,SAAS+T,EAAoBhhI,EAAMuC,EAAU0qH,GAClD,IAAiB,IAAb1qH,EAAmB,YAAgBnuB,IAAT4rB,EAAqBitH,EAAWjtH,EAC9D,GAAgB,MAAZuC,GAAwC,mBAAbA,EAAwB,OAAO0qH,EAC9D,GAAIjtH,IAASx2B,OAAOw2B,GAAO,CACzB,GAAwB,oBAAbuC,EAAyB,OAAO0qH,EAC3C,MAAMzkJ,EAAQ+5B,EAASvC,EAAMitH,GAC7B,MAAwB,qBAAVzkJ,EAAwBykJ,EAAWzkJ,CACnD,CACA,GAAwB,kBAAb+5B,EAAuB,OAAOw+H,EAAqB/gI,EAAMuC,EAAU0qH,GAC9E,GAAIpgJ,MAAMC,QAAQy1B,GAAW,OAAOs+H,EAAe7gI,EAAMuC,EAAU0qH,GACnE,GAAwB,oBAAb1qH,EAAyB,OAAO0qH,EAC3C,MAAMzkJ,EAAQ+5B,EAASvC,EAAMitH,GAC7B,MAAwB,qBAAVzkJ,EAAwBykJ,EAAWzkJ,CACnD,CACO,SAASy4J,EAAYh2J,GAC1B,IAAIm2C,EAAQjtC,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,EAChF,OAAOtH,MAAM0f,KAAK,CAChBthB,WACC,CAAC0P,EAAG+iD,IAAMtc,EAAQsc,GACvB,CAOO,SAASwjG,EAActkC,GAC5B,IAAIthD,EAAOnnE,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,KAC/E,OAAW,MAAPyoH,GAAuB,KAARA,OACjB,EACS36G,OAAO26G,GACT5/G,OAAO4/G,GACJziF,UAAUyiF,GAGb,GAAGx/G,OAAOw/G,KAAOthD,SAFxB,CAIJ,CACO,SAASvzE,EAASoE,GACvB,OAAe,OAARA,GAA+B,kBAARA,IAAqBU,MAAMC,QAAQX,EACnE,CACO,SAASg1J,EAAch1J,GAC5B,IAAIi1J,EACJ,OAAe,OAARj1J,GAA+B,kBAARA,KAAsBi1J,EAAQ53J,OAAO69I,eAAel7I,MAAU3C,OAAOkB,WAAuB,OAAV02J,EAClH,CACO,SAASC,EAAWl1J,GACzB,GAAIA,GAAO,QAASA,EAAK,CACvB,MAAMsG,EAAKtG,EAAIonE,IACf,OAAI9gE,GAAIwB,WAAak/D,KAAKmuF,UAEjB7uJ,EAAGiH,mBAELjH,CACT,CACA,OAAOtG,CACT,CAGO,MAAMo1J,EAAW/3J,OAAOg4J,OAAO,CACpC9K,MAAO,GACPplB,IAAK,EACL/6E,OAAQ,GACRkrG,IAAK,GACL9K,MAAO,GACPl9C,GAAI,GACJD,KAAM,GACNrgG,KAAM,GACN2yD,MAAO,GACP5S,IAAK,GACLqgD,KAAM,GACNmoD,IAAK,GACLC,UAAW,EACXC,OAAQ,GACRvoD,OAAQ,GACRC,SAAU,GACV3hG,MAAO,KAEI+hG,EAAYlwG,OAAOg4J,OAAO,CACrC9K,MAAO,QACPplB,IAAK,MACL/6E,OAAQ,SACRkrG,IAAK,SACL9K,MAAO,QACPl9C,GAAI,UACJD,KAAM,YACNrgG,KAAM,YACN2yD,MAAO,aACP5S,IAAK,MACLqgD,KAAM,OACNmoD,IAAK,SACLC,UAAW,YACXC,OAAQ,SACRvoD,OAAQ,SACRC,SAAU,WACV3hG,MAAO,UAEF,SAASzK,EAAKV,GACnB,OAAOhD,OAAO0D,KAAKV,EACrB,CACO,SAAS9C,EAAIyC,EAAKZ,GACvB,OAAOA,EAAImpD,OAAMgJ,GAAKvxD,EAAI/D,eAAes1D,IAC3C,CAEO,SAASmkG,EAAK11J,EAAKqyC,GACxB,MAAMhpB,EAAQ,CAAC,EACTtoB,EAAO,IAAIoxD,IAAI90D,OAAO0D,KAAKf,IACjC,IAAK,MAAMuhB,KAAQ8wB,EACbtxC,EAAKxD,IAAIgkB,KACX8H,EAAM9H,GAAQvhB,EAAIuhB,IAGtB,OAAO8H,CACT,CAMO,SAASssI,EAAa31J,EAAKqyC,EAAOujH,GACvC,MAAMvsI,EAAQhsB,OAAO+qJ,OAAO,MACtBt/E,EAAOzrE,OAAO+qJ,OAAO,MAC3B,IAAK,MAAMhpJ,KAAOY,EACZqyC,EAAMwlB,MAAKt2C,GAAQA,aAAgBusC,OAASvsC,EAAKpQ,KAAK/R,GAAOmiB,IAASniB,MAASw2J,GAAS/9F,MAAKt2C,GAAQA,IAASniB,IAChHiqB,EAAMjqB,GAAOY,EAAIZ,GAEjB0pE,EAAK1pE,GAAOY,EAAIZ,GAGpB,MAAO,CAACiqB,EAAOy/C,EACjB,CACO,SAAS+sF,EAAK71J,EAAK41J,GACxB,MAAME,EAAQ,IACT91J,GAGL,OADA41J,EAAQrzJ,SAAQkL,UAAeqoJ,EAAMroJ,KAC9BqoJ,CACT,CACO,SAASC,EAAK/1J,EAAKyrE,GACxB,MAAMqqF,EAAQ,CAAC,EAEf,OADArqF,EAAQlpE,SAAQkL,GAAQqoJ,EAAMroJ,GAAQzN,EAAIyN,KACnCqoJ,CACT,CACA,MAAME,EAAO,YACAC,EAAO72J,GAAO42J,EAAK7kJ,KAAK/R,GAC/B82J,EAAiB,CAAC,uBAAwB,oBAAqB,iBAAkB,uBAAwB,mBAAoB,aAAc,gBAAiB,wBAAyB,WAAY,UAAW,mBAAoB,qBAAsB,sBAAuB,gBAAiB,SAAU,QAAS,aAAc,YAAa,aAAc,qBAAsB,oBAAqB,kBAAmB,eAAgB,iBAAkB,sBAAuB,UAAW,YAAa,aAAc,UAAW,uBAAwB,cAAe,cAAe,aAAc,cAAe,YAAa,eAAgB,UAAW,kBAAmB,gBAAiB,iBAAkB,iBAAkB,gBAAiB,eAAgB,gBAAiB,cAAe,UAAW,WAAY,WAAY,gBAAiB,aAAc,cAAe,eAAgB,qBAAsB,kBAAmB,kBAAmB,oBAAqB,WACx7BC,EAAwB,CAAC,UAAW,YAAa,aAAc,YAAa,QAAS,SAAU,MAAO,KACrG,SAASC,EAAqBz0J,GACnC,OAAOA,EAAE00J,aAAeF,EAAsBtqJ,SAASlK,EAAEvC,IAC3D,CAOO,SAASk3J,EAAiBhyG,GAC/B,MAAOrwC,EAAQrV,GAAS+2J,EAAarxG,EAAO,CAAC0xG,IACvCO,EAAcV,EAAK5hJ,EAAQiiJ,IAC1B5wE,EAAWC,GAAcowE,EAAa/2J,EAAO,CAAC,QAAS,QAAS,KAAM,WAG7E,OAFAvB,OAAO0Y,OAAOuvE,EAAWrxE,GACzB5W,OAAO0Y,OAAOwvE,EAAYgxE,GACnB,CAACjxE,EAAWC,EACrB,CAYO,SAASixE,EAAYhoJ,GAC1B,OAAY,MAALA,EAAY,GAAK9N,MAAMC,QAAQ6N,GAAKA,EAAI,CAACA,EAClD,CAIO,SAASioJ,EAASlxG,EAAIn/C,GAC3B,IAAIswJ,EAAY,EAChB,MAAMC,EAAO,WACX,IAAK,IAAIjiJ,EAAO1M,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAMgU,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ5M,UAAU4M,GAEzBtP,aAAaoxJ,GACbA,EAAYrxJ,YAAW,IAAMkgD,KAAM5wC,KAAO,QAAMvO,GAClD,EAKA,OAJAuwJ,EAAK/kG,MAAQ,KACXtsD,aAAaoxJ,EAAU,EAEzBC,EAAKr0F,UAAY/c,EACVoxG,CACT,CAWO,SAASC,EAAMv6J,GACpB,IAAI+N,EAAMpC,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,EAC1EmC,EAAMnC,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,EAC9E,OAAOkC,KAAKC,IAAIC,EAAKF,KAAKE,IAAID,EAAK9N,GACrC,CACO,SAASw6J,EAAYx6J,GAC1B,MAAMy6J,EAAaz6J,EAAMM,WAAWoJ,OACpC,OAAO+wJ,EAAWjrJ,SAAS,KAAOirJ,EAAWh4J,OAASg4J,EAAW90J,QAAQ,KAAO,EAAI,CACtF,CACO,SAAS+0J,EAAOtmC,EAAK3xH,GAC1B,IAAIowD,EAAOlnD,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,IAC/E,OAAOyoH,EAAMvhE,EAAKhf,OAAOhmC,KAAKC,IAAI,EAAGrL,EAAS2xH,EAAI3xH,QACpD,CACO,SAASk4J,EAASvmC,EAAK3xH,GAC5B,IAAIowD,EAAOlnD,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,IAC/E,OAAOknD,EAAKhf,OAAOhmC,KAAKC,IAAI,EAAGrL,EAAS2xH,EAAI3xH,SAAW2xH,CACzD,CACO,SAASwmC,EAAMxmC,GACpB,IAAItiH,EAAOnG,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,EAC/E,MAAMkvJ,EAAU,GAChB,IAAIliJ,EAAQ,EACZ,MAAOA,EAAQy7G,EAAI3xH,OACjBo4J,EAAQ91J,KAAKqvH,EAAIl9F,OAAOve,EAAO7G,IAC/B6G,GAAS7G,EAEX,OAAO+oJ,CACT,CAOO,SAASC,EAAsBxoC,GACpC,IAAIzlG,EAAOlhB,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,IAC/E,GAAI2mH,EAAQzlG,EACV,MAAO,GAAGylG,MAEZ,MAAMh7F,EAAkB,OAATzK,EAAgB,CAAC,KAAM,KAAM,MAAQ,CAAC,IAAK,IAAK,KAC/D,IAAIimD,GAAQ,EACZ,MAAOjlE,KAAKuE,IAAIkgH,IAAUzlG,GAAQimD,EAAOx7C,EAAO70B,OAAS,EACvD6vH,GAASzlG,IACPimD,EAEJ,MAAO,GAAGw/C,EAAMzjB,QAAQ,MAAMv3E,EAAOw7C,KACvC,CACO,SAASioF,IACd,IAAIlR,EAASl+I,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9ErJ,EAASqJ,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EqvJ,EAAUrvJ,UAAUlJ,OAAS,EAAIkJ,UAAU,QAAKC,EACpD,MAAM6kC,EAAM,CAAC,EACb,IAAK,MAAM1tC,KAAO8mJ,EAChBp5G,EAAI1tC,GAAO8mJ,EAAO9mJ,GAEpB,IAAK,MAAMA,KAAOT,EAAQ,CACxB,MAAM24J,EAAiBpR,EAAO9mJ,GACxBm4J,EAAiB54J,EAAOS,GAI1B41J,EAAcsC,IAAmBtC,EAAcuC,GACjDzqH,EAAI1tC,GAAOg4J,EAAUE,EAAgBC,EAAgBF,GAGnDA,GAAW32J,MAAMC,QAAQ22J,IAAmB52J,MAAMC,QAAQ42J,GAC5DzqH,EAAI1tC,GAAOi4J,EAAQC,EAAgBC,GAGrCzqH,EAAI1tC,GAAOm4J,CACb,CACA,OAAOzqH,CACT,CACO,SAAS0qH,EAAiBC,GAC/B,OAAOA,EAAMt1J,KAAIyF,GACXA,EAAKmiB,OAAS,KACTytI,EAAiB5vJ,EAAKvE,UAEtBuE,IAER07B,MACL,CACO,SAASo0H,IACd,IAAIjnC,EAAMzoH,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GAC9E,GAAI0vJ,EAAYn/H,MAAMh7B,IAAIkzH,GAAM,OAAOinC,EAAYn/H,MAAM32B,IAAI6uH,GAC7D,MAAMknC,EAAQlnC,EAAIvpH,QAAQ,WAAY,KAAKA,QAAQ,aAAc,OAAO0J,cAExE,OADA8mJ,EAAYn/H,MAAM12B,IAAI4uH,EAAKknC,GACpBA,CACT,CAEO,SAASC,EAAwBx4J,EAAKi6D,GAC3C,IAAKA,GAA0B,kBAAVA,EAAoB,MAAO,GAChD,GAAI34D,MAAMC,QAAQ04D,GAChB,OAAOA,EAAMl3D,KAAIwL,GAASiqJ,EAAwBx4J,EAAKuO,KAAQ21B,KAAK,GAC/D,GAAI+1B,EAAMivF,SACf,OAAOsP,EAAwBx4J,EAAKi6D,EAAMkvF,WACrC,GAAI7nJ,MAAMC,QAAQ04D,EAAMh2D,UAC7B,OAAOg2D,EAAMh2D,SAASlB,KAAIwL,GAASiqJ,EAAwBx4J,EAAKuO,KAAQ21B,KAAK,GACxE,GAAI+1B,EAAMpU,UAAW,CAC1B,GAAI5nD,OAAOC,sBAAsB+7D,EAAMpU,UAAUgyF,UAAUprI,SAASzM,GAClE,MAAO,CAACi6D,EAAMpU,WACT,GAAIoU,EAAMpU,UAAUujG,QACzB,OAAOoP,EAAwBx4J,EAAKi6D,EAAMpU,UAAUujG,SAASllH,KAAK,EAEtE,CACA,MAAO,EACT,CAjBAo0H,EAAYn/H,MAAQ,IAAI/2B,IAkBxB,IAAIq2J,EAAoB,IAAIvzF,QACxBwzF,EAAwB,IAAIxzF,QACzB,MAAMyzF,EACX,WAAA53J,CAAYgO,GACVkmJ,EAA2BrvJ,KAAM6yJ,EAAM,IACvCxD,EAA2BrvJ,KAAM8yJ,EAAU,GAC3C9yJ,KAAKmJ,KAAOA,CACd,CACA,IAAA/M,CAAKkkB,GACHmvI,EAAsBoD,EAAM7yJ,MAAMyvJ,EAAsBqD,EAAU9yJ,OAASsgB,EAC3EivI,EAAsBuD,EAAU9yJ,MAAOyvJ,EAAsBqD,EAAU9yJ,MAAQ,GAAKA,KAAKmJ,KAC3F,CACA,MAAAmlD,GACE,OAAOmhG,EAAsBoD,EAAM7yJ,MAAM9C,MAAMuyJ,EAAsBqD,EAAU9yJ,OAAOwsD,OAAOijG,EAAsBoD,EAAM7yJ,MAAM9C,MAAM,EAAGuyJ,EAAsBqD,EAAU9yJ,OAC1K,EAEK,SAASgzJ,EAAoBr2J,GAClC,MAAI,YAAaA,EACR,CACL4jC,QAAS5jC,EAAE0oB,QAAQ,GAAGkb,QACtBC,QAAS7jC,EAAE0oB,QAAQ,GAAGmb,SAGnB,CACLD,QAAS5jC,EAAE4jC,QACXC,QAAS7jC,EAAE6jC,QAEf,CASO,SAASyyH,EAAiBC,GAC/B,MAAMp9C,GAAO,QAAS,CAAC,GACjB5xF,GAAO,QAASgvI,GAQtB,OAPA,SAAY,KACV,IAAK,MAAM94J,KAAO8pB,EAAK7sB,MACrBy+G,EAAK17G,GAAO8pB,EAAK7sB,MAAM+C,EACzB,GACC,CACDy5D,MAAO,UAEF,QAAOiiD,EAChB,CAGO,SAASjvG,EAASmwE,EAAK12D,GAC5B,OAAO02D,EAAInwE,SAASyZ,EACtB,CACO,SAASuQ,EAAUyrB,GACxB,OAAOA,EAAS,GAAG1wC,cAAgB0wC,EAASp/C,MAAM,EACpD,CACO,MAAMi2J,EAAY,IAAM,CAACr7J,SAAU4D,OACnC,SAAS03J,EAASx5J,EAAOpC,GAE9B,OADAA,EAAO,MAAO,QAAWA,MACfoC,EAAMpC,IAASoC,EAAM,GAAGpC,UAAeoC,EAAM,GAAGpC,aAAkBoC,EAAM,GAAGpC,iBAAsBoC,EAAM,GAAGpC,gBACtH,CACO,SAAS67J,GAAUnkJ,GACxB,IAAK,IAAIkB,EAAQpN,UAAUlJ,OAAQ6V,EAAO,IAAIjU,MAAM0U,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGV,EAAKU,EAAQ,GAAKrN,UAAUqN,GAE9B,GAAI3U,MAAMC,QAAQuT,GAChB,IAAK,MAAMkjD,KAAKljD,EACdkjD,KAAKziD,OAEqB,oBAAZT,GAChBA,KAAWS,EAEf,CACO,SAAS2jJ,GAAkBhyJ,GAChC,IAAIiyJ,IAAmBvwJ,UAAUlJ,OAAS,QAAsBmJ,IAAjBD,UAAU,KAAmBA,UAAU,GACtF,MAAMijH,EAAU,CAAC,SAAU,SAAU,6BAA8B,SAAU,WAAY,cAAc9oH,KAAIkhC,GAAK,GAAGA,IAAIk1H,EAAmB,wBAA0B,uBAAsBpxJ,KAAK,MAC/L,MAAO,IAAIb,EAAGtD,iBAAiBioH,GACjC,CACO,SAASutC,GAAevxH,EAAUrjC,EAAU4Y,GACjD,IAAIi8I,EACAxwF,EAAMhhC,EAASjlC,QAAQjF,SAAS6F,eACpC,MAAM81J,EAAmB,SAAb90J,EAAsB,GAAK,EACvC,GACEqkE,GAAOywF,EACPD,EAAMxxH,EAASghC,WACNwwF,GAA2B,MAApBA,EAAI95F,gBAA0BniD,IAAYi8I,IAAQ,KAAUxwF,EAAMhhC,EAASnoC,QAAUmpE,GAAO,GAC9G,OAAOwwF,CACT,CACO,SAASE,GAAWryJ,EAAI1C,GAC7B,MAAMglF,EAAY0vE,GAAkBhyJ,GACpC,GAAK1C,EAIE,GAAiB,UAAbA,EACTglF,EAAU,IAAIzd,aACT,GAAiB,SAAbvnE,EACTglF,EAAU7gB,IAAI,IAAIoD,aACb,GAAwB,kBAAbvnE,EAChBglF,EAAUhlF,IAAWunE,YAChB,CACL,MAAMstF,EAAMD,GAAe5vE,EAAWhlF,GAClC60J,EAAKA,EAAIttF,QAAawtF,GAAWryJ,EAAiB,SAAb1C,EAAsB,QAAU,OAC3E,MAZM0C,IAAOvJ,SAAS6F,eAAkB0D,EAAGsF,SAAS7O,SAAS6F,gBACzDgmF,EAAU,IAAIzd,OAYpB,CACO,SAASytF,GAAQtzI,GACtB,OAAe,OAARA,QAAwBrd,IAARqd,GAAoC,kBAARA,GAAmC,KAAfA,EAAIvf,MAC7E,CACO,SAASy/C,KAAQ,CAGjB,SAASqzG,GAAgBvyJ,EAAI0E,GAClC,MAAM8tJ,EAAmB,MAA6B,qBAARC,KAA+C,qBAAjBA,IAAIC,UAA4BD,IAAIC,SAAS,YAAYhuJ,MACrI,IAAK8tJ,EAAkB,OAAO,KAC9B,IACE,QAASxyJ,GAAMA,EAAG6E,QAAQH,EAC5B,CAAE,MAAOkB,GACP,OAAO,IACT,CACF,CACO,SAAS+sJ,GAAiB7iG,GAC/B,OAAOA,EAAOyB,MAAKlqD,KACZ,QAAQA,IACTA,EAAMoc,OAAS,OACZpc,EAAMoc,OAAS,MAAYkvI,GAAiBtrJ,EAAMtK,aACtD+yD,EAAS,IAChB,CACO,SAAS8iG,GAAM98H,EAASumC,GAC7B,IAAK,MAA0B,IAAZvmC,EAEjB,OADAumC,IACO,OAET,MAAM+zF,EAAY92J,OAAOyF,WAAWs9D,EAAIvmC,GACxC,MAAO,IAAMx8B,OAAO0F,aAAaoxJ,EACnC,CAWO,SAASyC,GAAqB7kJ,EAAO8kJ,GAC1C,MAAMC,EAAS/kJ,EAAMixB,QACf+zH,EAAShlJ,EAAMkxB,QACf+zH,EAAUH,EAAU5sJ,wBACpBgtJ,EAAUD,EAAQvsJ,KAClBysJ,EAASF,EAAQxsJ,IACjB2sJ,EAAWH,EAAQ55F,MACnBg6F,EAAYJ,EAAQz4F,OAC1B,OAAOu4F,GAAUG,GAAWH,GAAUK,GAAYJ,GAAUG,GAAUH,GAAUK,CAClF,CACO,SAASC,KACd,MAAMtzJ,GAAK,UACLi/C,EAAK5mD,IACT2H,EAAGjK,MAAQsC,CAAM,EAWnB,OATAtB,OAAO8B,eAAeomD,EAAI,QAAS,CACjCvmD,YAAY,EACZ4C,IAAK,IAAM0E,EAAGjK,MACdwF,IAAKyjB,GAAOhf,EAAGjK,MAAQipB,IAEzBjoB,OAAO8B,eAAeomD,EAAI,KAAM,CAC9BvmD,YAAY,EACZ4C,IAAK,IAAMszJ,EAAW5uJ,EAAGjK,SAEpBkpD,CACT,CACO,SAASs0G,GAAel4J,GAC7B,MAAMm4J,EAAmC,IAAjBn4J,EAAEvC,IAAIN,OACxBi7J,GAAcp4J,EAAE65B,UAAY75B,EAAE85B,UAAY95B,EAAE45B,OAClD,OAAOu+H,GAAmBC,CAC5B,C,oCCtfO,SAAS76F,EAAatgE,EAAOsnJ,GAClC,OAAO7xH,GACEh3B,OAAO0D,KAAKnC,GAAO2zD,QAAO,CAACvyD,EAAKyN,KACrC,MAAMusJ,EAA4C,kBAAhBp7J,EAAM6O,IAAqC,MAAf7O,EAAM6O,KAAkB/M,MAAMC,QAAQ/B,EAAM6O,IACpGwsJ,EAAaD,EAAqBp7J,EAAM6O,GAAQ,CACpDsc,KAAMnrB,EAAM6O,IAad,OAVEzN,EAAIyN,GADF4mB,GAAY5mB,KAAQ4mB,EACV,IACP4lI,EACH50G,QAAShxB,EAAS5mB,IAGRwsJ,EAEV/T,IAAWlmJ,EAAIyN,GAAMy4I,SACvBlmJ,EAAIyN,GAAMy4I,OAASA,GAEdlmJ,CAAG,GACT,CAAC,EAER,C,iHChDO,SAASwrE,EAAUlnC,GACxB,MAAM6gC,GAAK,QAAmB,aAC9BA,EAAG7gC,OAASA,CACd,C","sources":["webpack://landing_2021/./node_modules/core-js/es6/index.js","webpack://landing_2021/./node_modules/core-js/fn/array/flat-map.js","webpack://landing_2021/./node_modules/core-js/fn/array/includes.js","webpack://landing_2021/./node_modules/core-js/fn/object/entries.js","webpack://landing_2021/./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack://landing_2021/./node_modules/core-js/fn/object/values.js","webpack://landing_2021/./node_modules/core-js/fn/string/pad-end.js","webpack://landing_2021/./node_modules/core-js/fn/string/pad-start.js","webpack://landing_2021/./node_modules/core-js/fn/string/trim-end.js","webpack://landing_2021/./node_modules/core-js/fn/string/trim-start.js","webpack://landing_2021/./node_modules/core-js/fn/symbol/async-iterator.js","webpack://landing_2021/./node_modules/core-js/library/fn/global.js","webpack://landing_2021/./node_modules/core-js/library/modules/_a-function.js","webpack://landing_2021/./node_modules/core-js/library/modules/_an-object.js","webpack://landing_2021/./node_modules/core-js/library/modules/_core.js","webpack://landing_2021/./node_modules/core-js/library/modules/_dom-create.js","webpack://landing_2021/./node_modules/core-js/library/modules/_export.js","webpack://landing_2021/./node_modules/core-js/library/modules/_fails.js","webpack://landing_2021/./node_modules/core-js/library/modules/_has.js","webpack://landing_2021/./node_modules/core-js/library/modules/_hide.js","webpack://landing_2021/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://landing_2021/./node_modules/core-js/library/modules/_is-object.js","webpack://landing_2021/./node_modules/core-js/library/modules/_object-dp.js","webpack://landing_2021/./node_modules/core-js/library/modules/_property-desc.js","webpack://landing_2021/./node_modules/core-js/modules/_a-function.js","webpack://landing_2021/./node_modules/core-js/modules/_a-number-value.js","webpack://landing_2021/./node_modules/core-js/modules/_an-instance.js","webpack://landing_2021/./node_modules/core-js/modules/_an-object.js","webpack://landing_2021/./node_modules/core-js/modules/_array-reduce.js","webpack://landing_2021/./node_modules/core-js/modules/_array-species-constructor.js","webpack://landing_2021/./node_modules/core-js/modules/_cof.js","webpack://landing_2021/./node_modules/core-js/modules/_core.js","webpack://landing_2021/./node_modules/core-js/modules/_dom-create.js","webpack://landing_2021/./node_modules/core-js/modules/_export.js","webpack://landing_2021/./node_modules/core-js/modules/_fails-is-regexp.js","webpack://landing_2021/./node_modules/core-js/modules/_fails.js","webpack://landing_2021/./node_modules/core-js/modules/_for-of.js","webpack://landing_2021/./node_modules/core-js/modules/_function-to-string.js","webpack://landing_2021/./node_modules/core-js/modules/_has.js","webpack://landing_2021/./node_modules/core-js/modules/_hide.js","webpack://landing_2021/./node_modules/core-js/modules/_html.js","webpack://landing_2021/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://landing_2021/./node_modules/core-js/modules/_inherit-if-required.js","webpack://landing_2021/./node_modules/core-js/modules/_is-object.js","webpack://landing_2021/./node_modules/core-js/modules/_iter-detect.js","webpack://landing_2021/./node_modules/core-js/modules/_iter-step.js","webpack://landing_2021/./node_modules/core-js/modules/_iterators.js","webpack://landing_2021/./node_modules/core-js/modules/_library.js","webpack://landing_2021/./node_modules/core-js/modules/_meta.js","webpack://landing_2021/./node_modules/core-js/modules/_microtask.js","webpack://landing_2021/./node_modules/core-js/modules/_object-dp.js","webpack://landing_2021/./node_modules/core-js/modules/_object-dps.js","webpack://landing_2021/./node_modules/core-js/modules/_object-gopd.js","webpack://landing_2021/./node_modules/core-js/modules/_object-gops.js","webpack://landing_2021/./node_modules/core-js/modules/_object-keys-internal.js","webpack://landing_2021/./node_modules/core-js/modules/_object-pie.js","webpack://landing_2021/./node_modules/core-js/modules/_object-to-array.js","webpack://landing_2021/./node_modules/core-js/modules/_parse-float.js","webpack://landing_2021/./node_modules/core-js/modules/_parse-int.js","webpack://landing_2021/./node_modules/core-js/modules/_perform.js","webpack://landing_2021/./node_modules/core-js/modules/_promise-resolve.js","webpack://landing_2021/./node_modules/core-js/modules/_property-desc.js","webpack://landing_2021/./node_modules/core-js/modules/_redefine-all.js","webpack://landing_2021/./node_modules/core-js/modules/_redefine.js","webpack://landing_2021/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://landing_2021/./node_modules/core-js/modules/_shared-key.js","webpack://landing_2021/./node_modules/core-js/modules/_shared.js","webpack://landing_2021/./node_modules/core-js/modules/_string-at.js","webpack://landing_2021/./node_modules/core-js/modules/_string-html.js","webpack://landing_2021/./node_modules/core-js/modules/_string-trim.js","webpack://landing_2021/./node_modules/core-js/modules/_string-ws.js","webpack://landing_2021/./node_modules/core-js/modules/_task.js","webpack://landing_2021/./node_modules/core-js/modules/_to-absolute-index.js","webpack://landing_2021/./node_modules/core-js/modules/_typed.js","webpack://landing_2021/./node_modules/core-js/modules/_uid.js","webpack://landing_2021/./node_modules/core-js/modules/_user-agent.js","webpack://landing_2021/./node_modules/core-js/modules/_validate-collection.js","webpack://landing_2021/./node_modules/core-js/modules/_wks-define.js","webpack://landing_2021/./node_modules/core-js/modules/_wks-ext.js","webpack://landing_2021/./node_modules/core-js/modules/_wks.js","webpack://landing_2021/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://landing_2021/./node_modules/core-js/modules/es6.array.species.js","webpack://landing_2021/./node_modules/core-js/modules/es6.date.to-primitive.js","webpack://landing_2021/./node_modules/core-js/modules/es6.date.to-string.js","webpack://landing_2021/./node_modules/core-js/modules/es6.function.name.js","webpack://landing_2021/./node_modules/core-js/modules/es6.number.parse-float.js","webpack://landing_2021/./node_modules/core-js/modules/es6.number.parse-int.js","webpack://landing_2021/./node_modules/core-js/modules/es6.object.create.js","webpack://landing_2021/./node_modules/core-js/modules/es6.object.define-properties.js","webpack://landing_2021/./node_modules/core-js/modules/es6.object.define-property.js","webpack://landing_2021/./node_modules/core-js/modules/es6.parse-float.js","webpack://landing_2021/./node_modules/core-js/modules/es6.parse-int.js","webpack://landing_2021/./node_modules/core-js/modules/es6.regexp.constructor.js","webpack://landing_2021/./node_modules/core-js/modules/es6.string.from-code-point.js","webpack://landing_2021/./node_modules/core-js/modules/es6.string.raw.js","webpack://landing_2021/./node_modules/core-js/modules/es6.string.repeat.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.data-view.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.float32-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.float64-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.int16-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.int32-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.int8-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://landing_2021/./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://landing_2021/./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://landing_2021/./node_modules/core-js/modules/web.dom.iterable.js","webpack://landing_2021/./node_modules/core-js/modules/web.immediate.js","webpack://landing_2021/./node_modules/core-js/web/index.js","webpack://landing_2021/./node_modules/gsap/Observer.js","webpack://landing_2021/./node_modules/gsap/gsap-core.js","webpack://landing_2021/./node_modules/@vue/devtools-api/lib/esm/env.js","webpack://landing_2021/./node_modules/@vue/devtools-api/lib/esm/const.js","webpack://landing_2021/./node_modules/@vue/devtools-api/lib/esm/time.js","webpack://landing_2021/./node_modules/axios/lib/platform/common/utils.js","webpack://landing_2021/./node_modules/axios/lib/env/data.js","webpack://landing_2021/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/ParseError.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/helpers/isObject.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/metadata.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/helpers/mergeArrays.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/helpers/getNumberType.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/format.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/PhoneNumber.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js","webpack://landing_2021/./node_modules/libphonenumber-js/es6/normalizeArguments.js","webpack://landing_2021/./node_modules/mitt/dist/mitt.mjs","webpack://landing_2021/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://landing_2021/./node_modules/swiper/shared/utils.mjs","webpack://landing_2021/./node_modules/swiper/shared/swiper-core.mjs","webpack://landing_2021/./node_modules/swiper/modules/virtual.mjs","webpack://landing_2021/./node_modules/swiper/modules/keyboard.mjs","webpack://landing_2021/./node_modules/swiper/modules/mousewheel.mjs","webpack://landing_2021/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://landing_2021/./node_modules/swiper/modules/navigation.mjs","webpack://landing_2021/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://landing_2021/./node_modules/swiper/modules/pagination.mjs","webpack://landing_2021/./node_modules/swiper/modules/scrollbar.mjs","webpack://landing_2021/./node_modules/swiper/modules/parallax.mjs","webpack://landing_2021/./node_modules/swiper/modules/zoom.mjs","webpack://landing_2021/./node_modules/swiper/modules/controller.mjs","webpack://landing_2021/./node_modules/swiper/modules/a11y.mjs","webpack://landing_2021/./node_modules/swiper/modules/history.mjs","webpack://landing_2021/./node_modules/swiper/modules/hash-navigation.mjs","webpack://landing_2021/./node_modules/swiper/modules/autoplay.mjs","webpack://landing_2021/./node_modules/swiper/modules/thumbs.mjs","webpack://landing_2021/./node_modules/swiper/modules/free-mode.mjs","webpack://landing_2021/./node_modules/swiper/modules/grid.mjs","webpack://landing_2021/./node_modules/swiper/modules/manipulation.mjs","webpack://landing_2021/./node_modules/swiper/shared/effect-init.mjs","webpack://landing_2021/./node_modules/swiper/shared/effect-target.mjs","webpack://landing_2021/./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://landing_2021/./node_modules/swiper/modules/effect-fade.mjs","webpack://landing_2021/./node_modules/swiper/modules/effect-cube.mjs","webpack://landing_2021/./node_modules/swiper/shared/create-shadow.mjs","webpack://landing_2021/./node_modules/swiper/modules/effect-flip.mjs","webpack://landing_2021/./node_modules/swiper/modules/effect-coverflow.mjs","webpack://landing_2021/./node_modules/swiper/modules/effect-creative.mjs","webpack://landing_2021/./node_modules/swiper/modules/effect-cards.mjs","webpack://landing_2021/./node_modules/swiper/swiper-bundle.mjs","webpack://landing_2021/./node_modules/swiper/shared/update-swiper.mjs","webpack://landing_2021/./node_modules/swiper/shared/get-element-params.mjs","webpack://landing_2021/./node_modules/swiper/swiper-element-bundle.mjs","webpack://landing_2021/./node_modules/vue-router/dist/vue-router.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VMenu/shared.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VOverlay/util/point.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/isFixedPosition.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VOverlay/locationStrategies.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VOverlay/requestNewFrame.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VOverlay/scrollStrategies.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/bindProps.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VOverlay/useActivator.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/stack.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/teleport.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VOverlay/VOverlay.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTooltip/VTooltip.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/resizeObserver.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/layout.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VApp/VApp.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/tag.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VToolbar/VToolbarTitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/transitions/createTransition.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/transitions/expand-transition.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/transitions/dialog-transition.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/transitions/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VResponsive/VResponsive.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/rounded.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VImg/VImg.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/border.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/elevation.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VToolbar/VToolbar.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/scroll.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/ssrBoot.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VAppBar/VAppBar.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/density.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/variant.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/group.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/size.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VIcon/VIcon.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/intersectionObserver.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/location.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/loader.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/position.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/selectLink.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBtn/VBtn.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VAppBar/VAppBarNavIcon.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VAppBar/VAppBarTitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/createSimpleFunctional.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VAlert/VAlertTitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VAlert/VAlert.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VAvatar/VAvatar.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VLabel/VLabel.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCheckbox/VCheckboxBtn.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSlideGroup/helpers.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VChipGroup/VChipGroup.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VChip/VChip.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/list.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/nested/activeStrategies.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/nested/openStrategies.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/nested/selectStrategies.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/nested/nested.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListGroup.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListItemSubtitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListItemTitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListSubheader.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDivider/VDivider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListChildren.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/list-items.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VList.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VMenu/VMenu.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCounter/VCounter.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VField/VFieldLabel.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VInput/InputIcon.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/focus.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VField/VField.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VMessages/VMessages.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/form.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/validation.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VInput/VInput.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTextField/VTextField.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VVirtualScroll/VVirtualScrollItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/virtual.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VVirtualScroll/VVirtualScroll.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSelect/useScrolling.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSelect/VSelect.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/filter.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBadge/VBadge.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBanner/VBannerActions.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBanner/VBannerText.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBanner/VBanner.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBottomNavigation/VBottomNavigation.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDialog/VDialog.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBottomSheet/VBottomSheet.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VBreadcrumbs/VBreadcrumbs.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCard/VCardActions.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCard/VCardSubtitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCard/VCardTitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCard/VCardItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCard/VCardText.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCard/VCard.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VWindow/VWindow.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCarousel/VCarousel.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VWindow/VWindowItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCarousel/VCarouselItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCheckbox/VCheckbox.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCode/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VColorPicker/VColorPickerCanvas.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VColorPicker/util/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VColorPicker/VColorPickerEdit.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSlider/slider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSlider/VSliderThumb.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSlider/VSliderTrack.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSlider/VSlider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VColorPicker/VColorPickerPreview.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/colors.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VColorPicker/VColorPickerSwatches.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSheet/VSheet.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VColorPicker/VColorPicker.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VCombobox/VCombobox.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VConfirmEdit/VConfirmEdit.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/expand.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/group.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/options.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/paginate.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/select.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/sort.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataIterator/composables/items.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataIterator/VDataIterator.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/refs.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VPagination/VPagination.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableFooter.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableColumn.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/headers.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableHeaders.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableRow.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/events.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableRows.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTable/VTable.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/composables/items.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTable.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableVirtual.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDataTable/VDataTableServer.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VGrid/VSpacer.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDatePicker/VDatePickerControls.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDatePicker/VDatePickerHeader.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/calendar.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDatePicker/VDatePickerMonth.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDatePicker/VDatePickerMonths.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDatePicker/VDatePickerYears.mjs","webpack://landing_2021/./node_modules/vuetify/lib/labs/VPicker/VPickerTitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/labs/VPicker/VPicker.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VDatePicker/VDatePicker.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VEmptyState/VEmptyState.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VExpansionPanel/shared.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelText.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanels.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VFab/VFab.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VFileInput/VFileInput.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VFooter/VFooter.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VForm/VForm.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VGrid/VContainer.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VGrid/VCol.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VGrid/VRow.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VHover/VHover.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VInfiniteScroll/VInfiniteScroll.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VItemGroup/VItemGroup.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VItemGroup/VItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VKbd/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VLayout/VLayout.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VLayout/VLayoutItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VLazy/VLazy.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListImg.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListItemAction.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VList/VListItemMedia.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VLocaleProvider/VLocaleProvider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VMain/VMain.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VNavigationDrawer/sticky.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/touch.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VNavigationDrawer/touch.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VNoSsr/VNoSsr.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VOtpInput/VOtpInput.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VParallax/VParallax.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VRadio/VRadio.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VRadioGroup/VRadioGroup.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VRangeSlider/VRangeSlider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VRating/VRating.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSkeletonLoader/VSkeletonLoader.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSlideGroup/VSlideGroupItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSnackbar/VSnackbar.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSparkline/util/line.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSparkline/VBarline.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSparkline/util/path.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSparkline/VTrendline.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSparkline/VSparkline.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSpeedDial/VSpeedDial.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VStepper/shared.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VStepper/VStepperActions.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VStepper/VStepperHeader.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VStepper/VStepperItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VStepper/VStepperWindow.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VStepper/VStepperWindowItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VStepper/VStepper.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSwitch/VSwitch.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VSystemBar/VSystemBar.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTabs/shared.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTabs/VTab.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTabs/VTabsWindow.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTabs/VTabsWindowItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTabs/VTabs.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTextarea/VTextarea.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VThemeProvider/VThemeProvider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTimeline/VTimelineDivider.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTimeline/VTimelineItem.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VTimeline/VTimeline.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VToolbar/VToolbarItems.mjs","webpack://landing_2021/./node_modules/vuetify/lib/components/VValidation/VValidation.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/color.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/component.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/date/adapters/vuetify.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/date/date.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/injectSelf.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/defaults.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/delay.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/dimensions.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/display.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/forwardRefs.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/goto.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/hydration.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/icons.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/lazy.mjs","webpack://landing_2021/./node_modules/vuetify/lib/locale/en.mjs","webpack://landing_2021/./node_modules/vuetify/lib/locale/adapters/vuetify.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/locale.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/proxiedModel.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/router.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/scopeId.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/theme.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/toggleScope.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/transition.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/dom.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/click-outside/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/mutate/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/resize/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/scroll/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/composables/directiveComponent.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/tooltip/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/intersect/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/ripple/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/directives/touch/index.mjs","webpack://landing_2021/./node_modules/vuetify/lib/framework.mjs","webpack://landing_2021/./node_modules/vuetify/lib/iconsets/mdi.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/anchor.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/animation.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/box.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/color/APCA.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/color/transformCIELAB.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/color/transformSRGB.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/colorUtils.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/console.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/defineComponent.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/easing.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/getCurrentInstance.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/getScrollParent.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/globals.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/helpers.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/propsFactory.mjs","webpack://landing_2021/./node_modules/vuetify/lib/util/useRender.mjs"],"sourcesContent":["require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","exports.f = {}.propertyIsEnumerable;\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","require('./_set-species')('Array');\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_wks-define')('asyncIterator');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*!\n * Observer 3.12.7\n * https://gsap.com\n *\n * @license Copyright 2008-2025, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _coreInitted,\n _clamp,\n _win,\n _doc,\n _docEl,\n _body,\n _isTouch,\n _pointerType,\n ScrollTrigger,\n _root,\n _normalizer,\n _eventTypes,\n _context,\n _getGSAP = function _getGSAP() {\n return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _startup = 1,\n _observers = [],\n _scrollers = [],\n _proxies = [],\n _getTime = Date.now,\n _bridge = function _bridge(name, value) {\n return value;\n},\n _integrate = function _integrate() {\n var core = ScrollTrigger.core,\n data = core.bridge || {},\n scrollers = core._scrollers,\n proxies = core._proxies;\n scrollers.push.apply(scrollers, _scrollers);\n proxies.push.apply(proxies, _proxies);\n _scrollers = scrollers;\n _proxies = proxies;\n\n _bridge = function _bridge(name, value) {\n return data[name](value);\n };\n},\n _getProxyProp = function _getProxyProp(element, property) {\n return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n},\n _isViewport = function _isViewport(el) {\n return !!~_root.indexOf(el);\n},\n _addListener = function _addListener(element, type, func, passive, capture) {\n return element.addEventListener(type, func, {\n passive: passive !== false,\n capture: !!capture\n });\n},\n _removeListener = function _removeListener(element, type, func, capture) {\n return element.removeEventListener(type, func, !!capture);\n},\n _scrollLeft = \"scrollLeft\",\n _scrollTop = \"scrollTop\",\n _onScroll = function _onScroll() {\n return _normalizer && _normalizer.isPressed || _scrollers.cache++;\n},\n _scrollCacheFunc = function _scrollCacheFunc(f, doNotCache) {\n var cachingFunc = function cachingFunc(value) {\n // since reading the scrollTop/scrollLeft/pageOffsetY/pageOffsetX can trigger a layout, this function allows us to cache the value so it only gets read fresh after a \"scroll\" event fires (or while we're refreshing because that can lengthen the page and alter the scroll position). when \"soft\" is true, that means don't actually set the scroll, but cache the new value instead (useful in ScrollSmoother)\n if (value || value === 0) {\n _startup && (_win.history.scrollRestoration = \"manual\"); // otherwise the new position will get overwritten by the browser onload.\n\n var isNormalizing = _normalizer && _normalizer.isPressed;\n value = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0); //TODO: iOS Bug: if you allow it to go to 0, Safari can start to report super strange (wildly inaccurate) touch positions!\n\n f(value);\n cachingFunc.cacheID = _scrollers.cache;\n isNormalizing && _bridge(\"ss\", value); // set scroll (notify ScrollTrigger so it can dispatch a \"scrollStart\" event if necessary\n } else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge(\"ref\")) {\n cachingFunc.cacheID = _scrollers.cache;\n cachingFunc.v = f();\n }\n\n return cachingFunc.v + cachingFunc.offset;\n };\n\n cachingFunc.offset = 0;\n return f && cachingFunc;\n},\n _horizontal = {\n s: _scrollLeft,\n p: \"left\",\n p2: \"Left\",\n os: \"right\",\n os2: \"Right\",\n d: \"width\",\n d2: \"Width\",\n a: \"x\",\n sc: _scrollCacheFunc(function (value) {\n return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n })\n},\n _vertical = {\n s: _scrollTop,\n p: \"top\",\n p2: \"Top\",\n os: \"bottom\",\n os2: \"Bottom\",\n d: \"height\",\n d2: \"Height\",\n a: \"y\",\n op: _horizontal,\n sc: _scrollCacheFunc(function (value) {\n return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n })\n},\n _getTarget = function _getTarget(t, self) {\n return (self && self._ctx && self._ctx.selector || gsap.utils.toArray)(t)[0] || (typeof t === \"string\" && gsap.config().nullTargetWarn !== false ? console.warn(\"Element not found:\", t) : null);\n},\n _getScrollFunc = function _getScrollFunc(element, _ref) {\n var s = _ref.s,\n sc = _ref.sc;\n // we store the scroller functions in an alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a \".rec\" property in order to revert to that after refreshing to ensure things don't shift around.\n _isViewport(element) && (element = _doc.scrollingElement || _docEl);\n\n var i = _scrollers.indexOf(element),\n offset = sc === _vertical.sc ? 1 : 2;\n\n !~i && (i = _scrollers.push(element) - 1);\n _scrollers[i + offset] || _addListener(element, \"scroll\", _onScroll); // clear the cache when a scroll occurs\n\n var prev = _scrollers[i + offset],\n func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {\n return arguments.length ? element[s] = value : element[s];\n })));\n func.target = element;\n prev || (func.smooth = gsap.getProperty(element, \"scrollBehavior\") === \"smooth\"); // only set it the first time (don't reset every time a scrollFunc is requested because perhaps it happens during a refresh() when it's disabled in ScrollTrigger.\n\n return func;\n},\n _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {\n var v1 = value,\n v2 = value,\n t1 = _getTime(),\n t2 = t1,\n min = minTimeRefresh || 50,\n dropToZeroTime = Math.max(500, min * 3),\n update = function update(value, force) {\n var t = _getTime();\n\n if (force || t - t1 > min) {\n v2 = v1;\n v1 = value;\n t2 = t1;\n t1 = t;\n } else if (useDelta) {\n v1 += value;\n } else {\n // not totally necessary, but makes it a bit more accurate by adjusting the v1 value according to the new slope. This way we're not just ignoring the incoming data. Removing for now because it doesn't seem to make much practical difference and it's probably not worth the kb.\n v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);\n }\n },\n reset = function reset() {\n v2 = v1 = useDelta ? 0 : v1;\n t2 = t1 = 0;\n },\n getVelocity = function getVelocity(latestValue) {\n var tOld = t2,\n vOld = v2,\n t = _getTime();\n\n (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);\n return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;\n };\n\n return {\n update: update,\n reset: reset,\n getVelocity: getVelocity\n };\n},\n _getEvent = function _getEvent(e, preventDefault) {\n preventDefault && !e._gsapAllow && e.preventDefault();\n return e.changedTouches ? e.changedTouches[0] : e;\n},\n _getAbsoluteMax = function _getAbsoluteMax(a) {\n var max = Math.max.apply(Math, a),\n min = Math.min.apply(Math, a);\n return Math.abs(max) >= Math.abs(min) ? max : min;\n},\n _setScrollTrigger = function _setScrollTrigger() {\n ScrollTrigger = gsap.core.globals().ScrollTrigger;\n ScrollTrigger && ScrollTrigger.core && _integrate();\n},\n _initCore = function _initCore(core) {\n gsap = core || _getGSAP();\n\n if (!_coreInitted && gsap && typeof document !== \"undefined\" && document.body) {\n _win = window;\n _doc = document;\n _docEl = _doc.documentElement;\n _body = _doc.body;\n _root = [_win, _doc, _docEl, _body];\n _clamp = gsap.utils.clamp;\n\n _context = gsap.core.context || function () {};\n\n _pointerType = \"onpointerenter\" in _body ? \"pointer\" : \"mouse\"; // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\n _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia(\"(hover: none), (pointer: coarse)\").matches ? 1 : \"ontouchstart\" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;\n _eventTypes = Observer.eventTypes = (\"ontouchstart\" in _docEl ? \"touchstart,touchmove,touchcancel,touchend\" : !(\"onpointerdown\" in _docEl) ? \"mousedown,mousemove,mouseup,mouseup\" : \"pointerdown,pointermove,pointercancel,pointerup\").split(\",\");\n setTimeout(function () {\n return _startup = 0;\n }, 500);\n\n _setScrollTrigger();\n\n _coreInitted = 1;\n }\n\n return _coreInitted;\n};\n\n_horizontal.op = _vertical;\n_scrollers.cache = 0;\nexport var Observer = /*#__PURE__*/function () {\n function Observer(vars) {\n this.init(vars);\n }\n\n var _proto = Observer.prototype;\n\n _proto.init = function init(vars) {\n _coreInitted || _initCore(gsap) || console.warn(\"Please gsap.registerPlugin(Observer)\");\n ScrollTrigger || _setScrollTrigger();\n var tolerance = vars.tolerance,\n dragMinimum = vars.dragMinimum,\n type = vars.type,\n target = vars.target,\n lineHeight = vars.lineHeight,\n debounce = vars.debounce,\n preventDefault = vars.preventDefault,\n onStop = vars.onStop,\n onStopDelay = vars.onStopDelay,\n ignore = vars.ignore,\n wheelSpeed = vars.wheelSpeed,\n event = vars.event,\n onDragStart = vars.onDragStart,\n onDragEnd = vars.onDragEnd,\n onDrag = vars.onDrag,\n onPress = vars.onPress,\n onRelease = vars.onRelease,\n onRight = vars.onRight,\n onLeft = vars.onLeft,\n onUp = vars.onUp,\n onDown = vars.onDown,\n onChangeX = vars.onChangeX,\n onChangeY = vars.onChangeY,\n onChange = vars.onChange,\n onToggleX = vars.onToggleX,\n onToggleY = vars.onToggleY,\n onHover = vars.onHover,\n onHoverEnd = vars.onHoverEnd,\n onMove = vars.onMove,\n ignoreCheck = vars.ignoreCheck,\n isNormalizer = vars.isNormalizer,\n onGestureStart = vars.onGestureStart,\n onGestureEnd = vars.onGestureEnd,\n onWheel = vars.onWheel,\n onEnable = vars.onEnable,\n onDisable = vars.onDisable,\n onClick = vars.onClick,\n scrollSpeed = vars.scrollSpeed,\n capture = vars.capture,\n allowClicks = vars.allowClicks,\n lockAxis = vars.lockAxis,\n onLockAxis = vars.onLockAxis;\n this.target = target = _getTarget(target) || _docEl;\n this.vars = vars;\n ignore && (ignore = gsap.utils.toArray(ignore));\n tolerance = tolerance || 1e-9;\n dragMinimum = dragMinimum || 0;\n wheelSpeed = wheelSpeed || 1;\n scrollSpeed = scrollSpeed || 1;\n type = type || \"wheel,touch,pointer\";\n debounce = debounce !== false;\n lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22); // note: browser may report \"normal\", so default to 22.\n\n var id,\n onStopDelayedCall,\n dragged,\n moved,\n wheeled,\n locked,\n axis,\n self = this,\n prevDeltaX = 0,\n prevDeltaY = 0,\n passive = vars.passive || !preventDefault && vars.passive !== false,\n scrollFuncX = _getScrollFunc(target, _horizontal),\n scrollFuncY = _getScrollFunc(target, _vertical),\n scrollX = scrollFuncX(),\n scrollY = scrollFuncY(),\n limitToTouch = ~type.indexOf(\"touch\") && !~type.indexOf(\"pointer\") && _eventTypes[0] === \"pointerdown\",\n // for devices that accommodate mouse events and touch events, we need to distinguish.\n isViewport = _isViewport(target),\n ownerDoc = target.ownerDocument || _doc,\n deltaX = [0, 0, 0],\n // wheel, scroll, pointer/touch\n deltaY = [0, 0, 0],\n onClickTime = 0,\n clickCapture = function clickCapture() {\n return onClickTime = _getTime();\n },\n _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {\n return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== \"touch\" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);\n },\n onStopFunc = function onStopFunc() {\n self._vx.reset();\n\n self._vy.reset();\n\n onStopDelayedCall.pause();\n onStop && onStop(self);\n },\n update = function update() {\n var dx = self.deltaX = _getAbsoluteMax(deltaX),\n dy = self.deltaY = _getAbsoluteMax(deltaY),\n changedX = Math.abs(dx) >= tolerance,\n changedY = Math.abs(dy) >= tolerance;\n\n onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY); // in ScrollTrigger.normalizeScroll(), we need to know if it was touch/pointer so we need access to the deltaX/deltaY Arrays before we clear them out.\n\n if (changedX) {\n onRight && self.deltaX > 0 && onRight(self);\n onLeft && self.deltaX < 0 && onLeft(self);\n onChangeX && onChangeX(self);\n onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);\n prevDeltaX = self.deltaX;\n deltaX[0] = deltaX[1] = deltaX[2] = 0;\n }\n\n if (changedY) {\n onDown && self.deltaY > 0 && onDown(self);\n onUp && self.deltaY < 0 && onUp(self);\n onChangeY && onChangeY(self);\n onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);\n prevDeltaY = self.deltaY;\n deltaY[0] = deltaY[1] = deltaY[2] = 0;\n }\n\n if (moved || dragged) {\n onMove && onMove(self);\n\n if (dragged) {\n onDragStart && dragged === 1 && onDragStart(self);\n onDrag && onDrag(self);\n dragged = 0;\n }\n\n moved = false;\n }\n\n locked && !(locked = false) && onLockAxis && onLockAxis(self);\n\n if (wheeled) {\n onWheel(self);\n wheeled = false;\n }\n\n id = 0;\n },\n onDelta = function onDelta(x, y, index) {\n deltaX[index] += x;\n deltaY[index] += y;\n\n self._vx.update(x);\n\n self._vy.update(y);\n\n debounce ? id || (id = requestAnimationFrame(update)) : update();\n },\n onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {\n if (lockAxis && !axis) {\n self.axis = axis = Math.abs(x) > Math.abs(y) ? \"x\" : \"y\";\n locked = true;\n }\n\n if (axis !== \"y\") {\n deltaX[2] += x;\n\n self._vx.update(x, true); // update the velocity as frequently as possible instead of in the debounced function so that very quick touch-scrolls (flicks) feel natural. If it's the mouse/touch/pointer, force it so that we get snappy/accurate momentum scroll.\n\n }\n\n if (axis !== \"x\") {\n deltaY[2] += y;\n\n self._vy.update(y, true);\n }\n\n debounce ? id || (id = requestAnimationFrame(update)) : update();\n },\n _onDrag = function _onDrag(e) {\n if (_ignoreCheck(e, 1)) {\n return;\n }\n\n e = _getEvent(e, preventDefault);\n var x = e.clientX,\n y = e.clientY,\n dx = x - self.x,\n dy = y - self.y,\n isDragging = self.isDragging;\n self.x = x;\n self.y = y;\n\n if (isDragging || (dx || dy) && (Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum)) {\n dragged = isDragging ? 2 : 1; // dragged: 0 = not dragging, 1 = first drag, 2 = normal drag\n\n isDragging || (self.isDragging = true);\n onTouchOrPointerDelta(dx, dy);\n }\n },\n _onPress = self.onPress = function (e) {\n if (_ignoreCheck(e, 1) || e && e.button) {\n return;\n }\n\n self.axis = axis = null;\n onStopDelayedCall.pause();\n self.isPressed = true;\n e = _getEvent(e); // note: may need to preventDefault(?) Won't side-scroll on iOS Safari if we do, though.\n\n prevDeltaX = prevDeltaY = 0;\n self.startX = self.x = e.clientX;\n self.startY = self.y = e.clientY;\n\n self._vx.reset(); // otherwise the t2 may be stale if the user touches and flicks super fast and releases in less than 2 requestAnimationFrame ticks, causing velocity to be 0.\n\n\n self._vy.reset();\n\n _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, passive, true);\n\n self.deltaX = self.deltaY = 0;\n onPress && onPress(self);\n },\n _onRelease = self.onRelease = function (e) {\n if (_ignoreCheck(e, 1)) {\n return;\n }\n\n _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n\n var isTrackingDrag = !isNaN(self.y - self.startY),\n wasDragging = self.isDragging,\n isDragNotClick = wasDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),\n // some touch devices need some wiggle room in terms of sensing clicks - the finger may move a few pixels.\n eventData = _getEvent(e);\n\n if (!isDragNotClick && isTrackingDrag) {\n self._vx.reset();\n\n self._vy.reset(); //if (preventDefault && allowClicks && self.isPressed) { // check isPressed because in a rare edge case, the inputObserver in ScrollTrigger may stopPropagation() on the press/drag, so the onRelease may get fired without the onPress/onDrag ever getting called, thus it could trigger a click to occur on a link after scroll-dragging it.\n\n\n if (preventDefault && allowClicks) {\n gsap.delayedCall(0.08, function () {\n // some browsers (like Firefox) won't trust script-generated clicks, so if the user tries to click on a video to play it, for example, it simply won't work. Since a regular \"click\" event will most likely be generated anyway (one that has its isTrusted flag set to true), we must slightly delay our script-generated click so that the \"real\"/trusted one is prioritized. Remember, when there are duplicate events in quick succession, we suppress all but the first one. Some browsers don't even trigger the \"real\" one at all, so our synthetic one is a safety valve that ensures that no matter what, a click event does get dispatched.\n if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {\n if (e.target.click) {\n //some browsers (like mobile Safari) don't properly trigger the click event\n e.target.click();\n } else if (ownerDoc.createEvent) {\n var syntheticEvent = ownerDoc.createEvent(\"MouseEvents\");\n syntheticEvent.initMouseEvent(\"click\", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);\n e.target.dispatchEvent(syntheticEvent);\n }\n }\n });\n }\n }\n\n self.isDragging = self.isGesturing = self.isPressed = false;\n onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true);\n dragged && update(); // in case debouncing, we don't want onDrag to fire AFTER onDragEnd().\n\n onDragEnd && wasDragging && onDragEnd(self);\n onRelease && onRelease(self, isDragNotClick);\n },\n _onGestureStart = function _onGestureStart(e) {\n return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);\n },\n _onGestureEnd = function _onGestureEnd() {\n return (self.isGesturing = false) || onGestureEnd(self);\n },\n onScroll = function onScroll(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n var x = scrollFuncX(),\n y = scrollFuncY();\n onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);\n scrollX = x;\n scrollY = y;\n onStop && onStopDelayedCall.restart(true);\n },\n _onWheel = function _onWheel(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n e = _getEvent(e, preventDefault);\n onWheel && (wheeled = true);\n var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;\n onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);\n onStop && !isNormalizer && onStopDelayedCall.restart(true);\n },\n _onMove = function _onMove(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n var x = e.clientX,\n y = e.clientY,\n dx = x - self.x,\n dy = y - self.y;\n self.x = x;\n self.y = y;\n moved = true;\n onStop && onStopDelayedCall.restart(true);\n (dx || dy) && onTouchOrPointerDelta(dx, dy);\n },\n _onHover = function _onHover(e) {\n self.event = e;\n onHover(self);\n },\n _onHoverEnd = function _onHoverEnd(e) {\n self.event = e;\n onHoverEnd(self);\n },\n _onClick = function _onClick(e) {\n return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);\n };\n\n onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();\n self.deltaX = self.deltaY = 0;\n self._vx = _getVelocityProp(0, 50, true);\n self._vy = _getVelocityProp(0, 50, true);\n self.scrollX = scrollFuncX;\n self.scrollY = scrollFuncY;\n self.isDragging = self.isGesturing = self.isPressed = false;\n\n _context(this);\n\n self.enable = function (e) {\n if (!self.isEnabled) {\n _addListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n type.indexOf(\"scroll\") >= 0 && _addListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, passive, capture);\n type.indexOf(\"wheel\") >= 0 && _addListener(target, \"wheel\", _onWheel, passive, capture);\n\n if (type.indexOf(\"touch\") >= 0 && _isTouch || type.indexOf(\"pointer\") >= 0) {\n _addListener(target, _eventTypes[0], _onPress, passive, capture);\n\n _addListener(ownerDoc, _eventTypes[2], _onRelease);\n\n _addListener(ownerDoc, _eventTypes[3], _onRelease);\n\n allowClicks && _addListener(target, \"click\", clickCapture, true, true);\n onClick && _addListener(target, \"click\", _onClick);\n onGestureStart && _addListener(ownerDoc, \"gesturestart\", _onGestureStart);\n onGestureEnd && _addListener(ownerDoc, \"gestureend\", _onGestureEnd);\n onHover && _addListener(target, _pointerType + \"enter\", _onHover);\n onHoverEnd && _addListener(target, _pointerType + \"leave\", _onHoverEnd);\n onMove && _addListener(target, _pointerType + \"move\", _onMove);\n }\n\n self.isEnabled = true;\n self.isDragging = self.isGesturing = self.isPressed = moved = dragged = false;\n\n self._vx.reset();\n\n self._vy.reset();\n\n scrollX = scrollFuncX();\n scrollY = scrollFuncY();\n e && e.type && _onPress(e);\n onEnable && onEnable(self);\n }\n\n return self;\n };\n\n self.disable = function () {\n if (self.isEnabled) {\n // only remove the _onScroll listener if there aren't any others that rely on the functionality.\n _observers.filter(function (o) {\n return o !== self && _isViewport(o.target);\n }).length || _removeListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n if (self.isPressed) {\n self._vx.reset();\n\n self._vy.reset();\n\n _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n }\n\n _removeListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, capture);\n\n _removeListener(target, \"wheel\", _onWheel, capture);\n\n _removeListener(target, _eventTypes[0], _onPress, capture);\n\n _removeListener(ownerDoc, _eventTypes[2], _onRelease);\n\n _removeListener(ownerDoc, _eventTypes[3], _onRelease);\n\n _removeListener(target, \"click\", clickCapture, true);\n\n _removeListener(target, \"click\", _onClick);\n\n _removeListener(ownerDoc, \"gesturestart\", _onGestureStart);\n\n _removeListener(ownerDoc, \"gestureend\", _onGestureEnd);\n\n _removeListener(target, _pointerType + \"enter\", _onHover);\n\n _removeListener(target, _pointerType + \"leave\", _onHoverEnd);\n\n _removeListener(target, _pointerType + \"move\", _onMove);\n\n self.isEnabled = self.isPressed = self.isDragging = false;\n onDisable && onDisable(self);\n }\n };\n\n self.kill = self.revert = function () {\n self.disable();\n\n var i = _observers.indexOf(self);\n\n i >= 0 && _observers.splice(i, 1);\n _normalizer === self && (_normalizer = 0);\n };\n\n _observers.push(self);\n\n isNormalizer && _isViewport(target) && (_normalizer = self);\n self.enable(event);\n };\n\n _createClass(Observer, [{\n key: \"velocityX\",\n get: function get() {\n return this._vx.getVelocity();\n }\n }, {\n key: \"velocityY\",\n get: function get() {\n return this._vy.getVelocity();\n }\n }]);\n\n return Observer;\n}();\nObserver.version = \"3.12.7\";\n\nObserver.create = function (vars) {\n return new Observer(vars);\n};\n\nObserver.register = _initCore;\n\nObserver.getAll = function () {\n return _observers.slice();\n};\n\nObserver.getById = function (id) {\n return _observers.filter(function (o) {\n return o.vars.id === id;\n })[0];\n};\n\n_getGSAP() && gsap.registerPlugin(Observer);\nexport { Observer as default, _isViewport, _scrollers, _getScrollFunc, _getProxyProp, _proxies, _getVelocityProp, _vertical, _horizontal, _getTarget };","function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*!\n * GSAP 3.12.7\n * https://gsap.com\n *\n * @license Copyright 2008-2025, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n},\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n},\n _suppressOverwrites,\n _reverting,\n _context,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n},\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n_unitExp = /^[+\\-=e\\s\\d]*\\d+[.\\d]*([a-z]*|%)\\s*$/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n},\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n},\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n _emptyFunc = function _emptyFunc() {\n return 0;\n},\n _startAtRevertConfig = {\n suppressEvents: true,\n isStart: true,\n kill: false\n},\n _revertConfigNoKill = {\n suppressEvents: true,\n kill: false\n},\n _revertConfig = {\n suppressEvents: true\n},\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n},\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n},\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 10000000) / 10000000 || 0;\n},\n // increased precision mostly for timing values.\n_parseRelative = function _parseRelative(start, value) {\n var operator = value.charAt(0),\n end = parseFloat(value.substr(2));\n start = parseFloat(start);\n return operator === \"+\" ? start + end : operator === \"-\" ? start - end : operator === \"*\" ? start * end : start / end;\n},\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n},\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n},\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && !_reverting && _lazyRender();\n animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));\n _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n return function (obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n }\n };\n},\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n},\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n\n return base;\n},\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n},\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n},\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n},\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n},\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);\n child._act = 0;\n},\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n},\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n},\n _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {\n return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));\n},\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime = _roundPrecise(tTime / cycleDuration));\n return tTime && whole === tTime ? whole - 1 : whole;\n},\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n _setEnd = function _setEnd(animation) {\n return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n\n return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {\n // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n},\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n _isFromOrFromStart(child) || (timeline._recent = child);\n skipChecks || _postAddChecks(timeline, child);\n timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)\n\n return timeline;\n},\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {\n _initTween(tween, time, tTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [tTime, suppressEvents];\n return 1;\n }\n},\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n},\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n_isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n var data = _ref2.data;\n return data === \"isFromStart\" || data === \"isStart\";\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n // if iteration changed\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents && !_reverting) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n},\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n},\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _roundPrecise(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);\n animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n},\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc,\n totalDuration: _emptyFunc\n},\n _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset,\n isPercent;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n offset = position.charAt(0);\n isPercent = position.substr(-1) === \"%\";\n i = position.indexOf(\"=\");\n\n if (offset === \"<\" || offset === \">\") {\n i >= 0 && (position = position.replace(/=/, \"\"));\n return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n }\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n if (isPercent && percentAnimation) {\n offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n }\n\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n},\n _createTweenType = function _createTweenType(type, params, timeline) {\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars,\n parent;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = timeline;\n\n if (type) {\n irVars = vars;\n parent = timeline;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n\n return new Tween(params[0], vars, params[varsIndex + 1]);\n},\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n},\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n},\n getUnit = function getUnit(value, v) {\n return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : v[1];\n},\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n},\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n},\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, scope, leaveStrings) {\n return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n selector = function selector(value) {\n value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n return function (v) {\n var el = value.current || value.nativeElement || value;\n return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n };\n},\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n},\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = (Math.random() * i) | 0, v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt < l && wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n},\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())\n\n return function (raw) {\n var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);\n\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n };\n},\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n},\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n},\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n},\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n},\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n},\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n},\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n},\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n},\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n},\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n},\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n},\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n},\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n prevContext = _context,\n context = animation._ctx,\n params,\n scope,\n result;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n context && (_context = context);\n result = params ? callback.apply(scope, params) : callback.call(scope);\n _context = prevContext;\n return result;\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _registerPluginQueue = [],\n _createPlugin = function _createPlugin(config) {\n if (!config) return;\n config = !config.name && config[\"default\"] || config; // UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n if (_windowExists() || config.headless) {\n // edge case: some build tools may pass in a null/undefined value\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n } else {\n _registerPluginQueue.push(config);\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n},\n // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:\n// let ctx = _doc.createElement(\"canvas\").getContext(\"2d\");\n// _forEachName(\"aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan\", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});\n_hue = function _hue(h, m1, m2) {\n h += h < 0 ? 1 : h > 1 ? -1 : 0;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n //for shorthand like #9F0 or #9F0F (could have alpha)\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n\n if (v.length === 9) {\n // hex with alpha, like #fd5e53ff\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n},\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n},\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n},\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n}(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n (elapsed > _lagThreshold || elapsed < 0) && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _registerPluginQueue.forEach(_createPlugin);\n }\n\n _raf = typeof requestAnimationFrame !== \"undefined\" && requestAnimationFrame;\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback, once, prioritize) {\n var func = once ? function (t, d, f, v) {\n callback(t, d, f, v);\n\n _self.remove(func);\n } : callback;\n\n _self.remove(callback);\n\n _listeners[prioritize ? \"unshift\" : \"push\"](func);\n\n _wake();\n\n return func;\n },\n remove: function remove(callback, i) {\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n}(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n},\n //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n},\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n},\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n},\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n},\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n},\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n},\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n return Math.pow(2, 10 * (p - 1)) * p + p * p * p * p * p * p * (1 - p);\n}); // previously 2 ** (10 * (p - 1)) but that doesn't end up with the value quite at the right spot so we do a blended ease to ensure it lands where it should perfectly.\n\n\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars) {\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n\n if (_context) {\n this._ctx = _context;\n\n _context.data.push(this);\n }\n\n _tickerActive || _ticker.wake();\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n\n !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n while (parent && parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n // this._lock = 1;\n\n _lazySafeRender(this, _totalTime, suppressEvents); // this._lock = 0;\n //}\n\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() >= 0 && this._initted ? 1 : 0;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n\n _proto.timeScale = function timeScale(value, suppressEvents) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n //(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);\n\n _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.\n\n\n return _recacheAncestors(this);\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n } // possible future addition - if an animation is removed from its parent and then .restart() or .play() or .resume() is called, perhaps we should force it back into the globalTimeline but be careful because what if it's already at its end? We don't want it to just persist forever and not get released for GC.\n // !this.parent && !value && this._tTime < this._tDur && this !== _globalTimeline && _globalTimeline.add(this);\n\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detached parent\n\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n\n _proto.revert = function revert(config) {\n if (config === void 0) {\n config = _revertConfig;\n }\n\n var prevIsReverting = _reverting;\n _reverting = config;\n\n if (this._initted || this._startAt) {\n this.timeline && this.timeline.revert(config);\n this.totalTime(-0.01, config.suppressEvents);\n }\n\n this.data !== \"nested\" && config.kill !== false && this.kill();\n _reverting = prevIsReverting;\n return this;\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (Math.abs(animation._ts) || 1);\n animation = animation._dp;\n }\n\n return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). \"_sat\" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n var time = this._time;\n this._rDelay = value;\n\n _onUpdateTotalDuration(this);\n\n return time ? this.time(time) : this;\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n this._dur || (this._zTime = -_tinyNum); // ensures onComplete fires on a zero-duration animation that gets restarted.\n\n return this;\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, position) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n vars.reversed && _this.reverse();\n vars.paused && _this.paused(true);\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n _createTweenType(0, arguments, this);\n\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n _createTweenType(1, arguments, this);\n\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n _createTweenType(2, arguments, this);\n\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n } //ONLY for backward compatibility! Maybe delete?\n ;\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n prevIteration = _roundPrecise(tTime / cycleDuration); // full decimal version of iterations, not the previous iteration (we're reusing prevIteration variable for efficiency)\n\n iteration = ~~prevIteration;\n\n if (iteration && iteration === prevIteration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://gsap.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the \"repeatDelay\" portion\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.\n\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n return this;\n }\n\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n }\n\n if (!prevTime && time && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n _isNumber(position) || (position = _parsePosition(this, position, child));\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n child.parent === this && _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n } // potential future feature - targets() on timelines\n // targets() {\n // \tlet result = [];\n // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n // \treturn result.filter((v, i) => result.indexOf(v) === i);\n // }\n ;\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n initted,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n\n if (!initted) {\n var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n initted = 1;\n }\n\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }, vars));\n\n return immediateRender ? tween.render(0) : tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate(soft) {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate(soft);\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this, soft);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);\n\n if (pt || pt === 0) {\n // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n end = pt;\n }\n }\n }\n\n if (!optional || parsedStart !== end || _forceAllPropTweens) {\n if (!isNaN(parsedStart * end) && end !== \"\") {\n // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n},\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n},\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n},\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n_forceAllPropTweens,\n _initTween = function _initTween(tween, time, tTime) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.vars.targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n if (!tl || keyframes && !vars.stagger) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n\n if (prevStartAt) {\n prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.\n\n time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a \"startAt\" (not \"from()\" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)\n // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for \"startAt\" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.\n\n prevStartAt._lazy = 0;\n }\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: !prevStartAt && _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate && function () {\n return _callback(tween, \"onUpdate\");\n },\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.\n\n tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween\n\n time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\n if (immediateRender) {\n if (dur && time <= 0 && tTime <= 0) {\n // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (!prevStartAt) {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})\n\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline!\n\n tween._startAt._sat = tween; // used in globalTime()\n\n time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));\n tween._zTime = time;\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = tween._ptCache = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\n keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the \"before\" state for any staggered/delayed animations thus when the following tween initializes, it'll use the \"before\" state instead of the \"after\" state as the initial values.\n},\n _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {\n var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],\n pt,\n rootPT,\n lookup,\n i;\n\n if (!ptCache) {\n ptCache = tween._ptCache[property] = [];\n lookup = tween._ptLookup;\n i = tween._targets.length;\n\n while (i--) {\n pt = lookup[i][property];\n\n if (pt && pt.d && pt.d._pt) {\n // it's a plugin, so find the nested PropTween\n pt = pt.d._pt;\n\n while (pt && pt.p !== property && pt.fp !== property) {\n // \"fp\" is functionParam for things like setting CSS variables which require .setProperty(\"--var-name\", value)\n pt = pt._next;\n }\n }\n\n if (!pt) {\n // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this\n // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo(\"x\", 200) for example.\n _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.\n\n tween.vars[property] = \"+=0\";\n\n _initTween(tween, time);\n\n _forceAllPropTweens = 0;\n return skipRecursion ? _warn(property + \" not eligible for reset\") : 1; // if someone tries to do a quickTo() on a special property like borderRadius which must get split into 4 different properties, that's not eligible for .resetTo().\n }\n\n ptCache.push(pt);\n }\n }\n\n i = ptCache.length;\n\n while (i--) {\n rootPT = ptCache[i];\n pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.\n\n pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;\n pt.c = value - pt.s;\n rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)\n\n rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)\n }\n},\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n},\n // parses multiple formats, like {\"0%\": {x: 100}, {\"50%\": {x: -20}} and { x: {\"0%\": 100, \"50%\": -20} }, and an \"ease\" can be set on any object. We populate an \"allProps\" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a \"t\" (time), \"v\", (value), and \"e\" (ease) property. This allows us to piece together a timeline later.\n_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n var ease = obj.ease || easeEach || \"power1.inOut\",\n p,\n a;\n\n if (_isArray(obj)) {\n a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease\n\n obj.forEach(function (value, i) {\n return a.push({\n t: i / (obj.length - 1) * 100,\n v: value,\n e: ease\n });\n });\n } else {\n for (p in obj) {\n a = allProps[p] || (allProps[p] = []);\n p === \"ease\" || a.push({\n t: parseFloat(prop),\n v: obj[p],\n e: ease\n });\n }\n }\n},\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert\",\n _staggerPropsToSkip = {};\n\n_forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n return _staggerPropsToSkip[name] = 1;\n});\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, position, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n position.duration = vars;\n vars = position;\n position = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = vars.parent || _globalTimeline,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://gsap.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {},\n targets: parent && parent.data === \"nested\" ? parent.vars.targets : parsedTargets\n }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.\n\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n\n if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n l = parsedTargets.length;\n staggerFunc = stagger && distribute(stagger);\n\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = _copyExcluding(vars, _staggerPropsToSkip);\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n tl._ease = _easeMap.none;\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n } else if (keyframes) {\n _inheritDefaults(_setDefaults(tl.vars.defaults, {\n ease: \"none\"\n }));\n\n tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n var time = 0,\n a,\n kf,\n v;\n\n if (_isArray(keyframes)) {\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.\n } else {\n copy = {};\n\n for (p in keyframes) {\n p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n }\n\n for (p in copy) {\n a = copy[p].sort(function (a, b) {\n return a.t - b.t;\n });\n time = 0;\n\n for (i = 0; i < a.length; i++) {\n kf = a[i];\n v = {\n ease: kf.e,\n duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n };\n v[p] = kf.v;\n tl.to(parsedTargets, v, time);\n time += v.duration;\n }\n }\n\n tl.duration() < duration && tl.to({}, {\n duration: duration - tl.duration()\n }); // in case keyframes didn't go to 100%\n }\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n vars.reversed && _this3.reverse();\n vars.paused && _this3.paused(true);\n\n if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay) || 0); //in case delay is negative\n\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n isNegative = totalTime < 0,\n tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative || this._lazy) {\n // this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && isNegative) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n prevIteration = _roundPrecise(tTime / cycleDuration); // full decimal version of iterations, not the previous iteration (we're reusing prevIteration variable for efficiency)\n\n iteration = ~~prevIteration;\n\n if (iteration && iteration === prevIteration) {\n time = dur;\n iteration--;\n } else if (time > dur) {\n time = dur;\n }\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted && iteration === prevIteration) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n this._tTime = tTime;\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock && time !== cycleDuration && this._initted) {\n // this._time will === cycleDuration when we render at EXACTLY the end of an iteration. Without this condition, it'd often do the repeatRefresh render TWICE (again on the very next tick).\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n\n if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {\n // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values. But we also don't want to dump if we're doing a repeatRefresh render!\n return this;\n }\n\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n if (time && !prevTime && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate(soft) {\n // \"soft\" gives us a way to clear out everything EXCEPT the recorded pre-\"from\" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the \"from\" values would persist and then on the next render, the from() tweens would initialize and the current value would match the \"from\" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.\n (!soft || !this.vars.runBackwards) && (this._startAt = 0);\n this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate(soft);\n return _Animation2.prototype.invalidate.call(this, soft);\n };\n\n _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {\n _tickerActive || _ticker.wake();\n this._ts || this.play();\n var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),\n ratio;\n this._initted || _initTween(this, time);\n ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.\n // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.\n // if (_isObject(property)) { // performance optimization\n // \tfor (p in property) {\n // \t\tif (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {\n // \t\t\treturn this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n // \t\t}\n // \t}\n // } else {\n\n if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {\n return this.resetTo(property, value, start, startIsRelative, 1); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n } //}\n\n\n _alignPlayhead(this, 0);\n\n this.parent || _addLinkedListItem(this._dp, this, \"_first\", \"_last\", this._dp._sort ? \"_start\" : 0);\n return this.render(0);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n this.parent ? _interrupt(this) : this.scrollTrigger && this.scrollTrigger.kill(!!_reverting);\n return this;\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return _createTweenType(1, arguments);\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return _createTweenType(2, arguments);\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n},\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n},\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n},\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n},\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n},\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n\n data.set(data.t, data.p, s, data);\n},\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n},\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n},\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n},\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n\n return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n\nvar _media = [],\n _listeners = {},\n _emptyArray = [],\n _lastMediaTime = 0,\n _contextID = 0,\n _dispatch = function _dispatch(type) {\n return (_listeners[type] || _emptyArray).map(function (f) {\n return f();\n });\n},\n _onMediaChange = function _onMediaChange() {\n var time = Date.now(),\n matches = [];\n\n if (time - _lastMediaTime > 2) {\n _dispatch(\"matchMediaInit\");\n\n _media.forEach(function (c) {\n var queries = c.queries,\n conditions = c.conditions,\n match,\n p,\n anyMatch,\n toggled;\n\n for (p in queries) {\n match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\n match && (anyMatch = 1);\n\n if (match !== conditions[p]) {\n conditions[p] = match;\n toggled = 1;\n }\n }\n\n if (toggled) {\n c.revert();\n anyMatch && matches.push(c);\n }\n });\n\n _dispatch(\"matchMediaRevert\");\n\n matches.forEach(function (c) {\n return c.onMatch(c, function (func) {\n return c.add(null, func);\n });\n });\n _lastMediaTime = time;\n\n _dispatch(\"matchMedia\");\n }\n};\n\nvar Context = /*#__PURE__*/function () {\n function Context(func, scope) {\n this.selector = scope && selector(scope);\n this.data = [];\n this._r = []; // returned/cleanup functions\n\n this.isReverted = false;\n this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because \"this\" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely\n\n func && this.add(func);\n }\n\n var _proto5 = Context.prototype;\n\n _proto5.add = function add(name, func, scope) {\n // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.\n // if (name && _isFunction(name.revert)) {\n // \tthis.data.push(name);\n // \treturn (name._ctx = this);\n // }\n if (_isFunction(name)) {\n scope = func;\n func = name;\n name = _isFunction;\n }\n\n var self = this,\n f = function f() {\n var prev = _context,\n prevSelector = self.selector,\n result;\n prev && prev !== self && prev.data.push(self);\n scope && (self.selector = selector(scope));\n _context = self;\n result = func.apply(self, arguments);\n _isFunction(result) && self._r.push(result);\n _context = prev;\n self.selector = prevSelector;\n self.isReverted = false;\n return result;\n };\n\n self.last = f;\n return name === _isFunction ? f(self, function (func) {\n return self.add(null, func);\n }) : name ? self[name] = f : f;\n };\n\n _proto5.ignore = function ignore(func) {\n var prev = _context;\n _context = null;\n func(this);\n _context = prev;\n };\n\n _proto5.getTweens = function getTweens() {\n var a = [];\n this.data.forEach(function (e) {\n return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === \"nested\") && a.push(e);\n });\n return a;\n };\n\n _proto5.clear = function clear() {\n this._r.length = this.data.length = 0;\n };\n\n _proto5.kill = function kill(revert, matchMedia) {\n var _this4 = this;\n\n if (revert) {\n (function () {\n var tweens = _this4.getTweens(),\n i = _this4.data.length,\n t;\n\n while (i--) {\n // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.\n t = _this4.data[i];\n\n if (t.data === \"isFlip\") {\n t.revert();\n t.getChildren(true, true, false).forEach(function (tween) {\n return tweens.splice(tweens.indexOf(tween), 1);\n });\n }\n } // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort\n\n\n tweens.map(function (t) {\n return {\n g: t._dur || t._delay || t._sat && !t._sat.vars.immediateRender ? t.globalTime(0) : -Infinity,\n t: t\n };\n }).sort(function (a, b) {\n return b.g - a.g || -Infinity;\n }).forEach(function (o) {\n return o.t.revert(revert);\n }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the \" || -1\" in the sort keeps the order properly.\n\n i = _this4.data.length;\n\n while (i--) {\n // make sure we loop backwards so that, for example, SplitTexts that were created later on the same element get reverted first\n t = _this4.data[i];\n\n if (t instanceof Timeline) {\n if (t.data !== \"nested\") {\n t.scrollTrigger && t.scrollTrigger.revert();\n t.kill(); // don't revert() the timeline because that's duplicating efforts since we already reverted all the tweens\n }\n } else {\n !(t instanceof Tween) && t.revert && t.revert(revert);\n }\n }\n\n _this4._r.forEach(function (f) {\n return f(revert, _this4);\n });\n\n _this4.isReverted = true;\n })();\n } else {\n this.data.forEach(function (e) {\n return e.kill && e.kill();\n });\n }\n\n this.clear();\n\n if (matchMedia) {\n var i = _media.length;\n\n while (i--) {\n // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.\n _media[i].id === this.id && _media.splice(i, 1);\n }\n }\n } // killWithCleanup() {\n // \tthis.kill();\n // \tthis._r.forEach(f => f(false, this));\n // }\n ;\n\n _proto5.revert = function revert(config) {\n this.kill(config || {});\n };\n\n return Context;\n}();\n\nvar MatchMedia = /*#__PURE__*/function () {\n function MatchMedia(scope) {\n this.contexts = [];\n this.scope = scope;\n _context && _context.data.push(this);\n }\n\n var _proto6 = MatchMedia.prototype;\n\n _proto6.add = function add(conditions, func, scope) {\n _isObject(conditions) || (conditions = {\n matches: conditions\n });\n var context = new Context(0, scope || this.scope),\n cond = context.conditions = {},\n mq,\n p,\n active;\n _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()\n\n this.contexts.push(context);\n func = context.add(\"onMatch\", func);\n context.queries = conditions;\n\n for (p in conditions) {\n if (p === \"all\") {\n active = 1;\n } else {\n mq = _win.matchMedia(conditions[p]);\n\n if (mq) {\n _media.indexOf(context) < 0 && _media.push(context);\n (cond[p] = mq.matches) && (active = 1);\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n }\n }\n\n active && func(context, function (f) {\n return context.add(null, f);\n });\n return this;\n } // refresh() {\n // \tlet time = _lastMediaTime,\n // \t\tmedia = _media;\n // \t_lastMediaTime = -1;\n // \t_media = this.contexts;\n // \t_onMediaChange();\n // \t_lastMediaTime = time;\n // \t_media = media;\n // }\n ;\n\n _proto6.revert = function revert(config) {\n this.kill(config || {});\n };\n\n _proto6.kill = function kill(revert) {\n this.contexts.forEach(function (c) {\n return c.kill(revert, true);\n });\n };\n\n return MatchMedia;\n}();\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n quickTo: function quickTo(target, property, vars) {\n var _setDefaults2;\n\n var tween = gsap.to(target, _setDefaults((_setDefaults2 = {}, _setDefaults2[property] = \"+=0.1\", _setDefaults2.paused = true, _setDefaults2.stagger = 0, _setDefaults2), vars || {})),\n func = function func(value, start, startIsRelative) {\n return tween.resetTo(property, value, start, startIsRelative);\n };\n\n func.tween = tween;\n return func;\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref3) {\n var name = _ref3.name,\n effect = _ref3.effect,\n plugins = _ref3.plugins,\n defaults = _ref3.defaults,\n extendTimeline = _ref3.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n context: function context(func, scope) {\n return func ? new Context(func, scope) : _context;\n },\n matchMedia: function matchMedia(scope) {\n return new MatchMedia(scope);\n },\n matchMediaRefresh: function matchMediaRefresh() {\n return _media.forEach(function (c) {\n var cond = c.conditions,\n found,\n p;\n\n for (p in cond) {\n if (cond[p]) {\n cond[p] = false;\n found = 1;\n }\n }\n\n found && c.revert();\n }) || _onMediaChange();\n },\n addEventListener: function addEventListener(type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n },\n removeEventListener: function removeEventListener(type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n selector: selector,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n reverting: function reverting() {\n return _reverting;\n },\n context: function context(toAdd) {\n if (toAdd && _context) {\n _context.data.push(toAdd);\n\n toAdd._ctx = _context;\n }\n\n return _context;\n },\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n},\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n},\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt, v;\n this.tween = tween;\n\n for (p in vars) {\n v = target.getAttribute(p) || \"\";\n pt = this.add(target, \"setAttribute\", (v || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt.op = p;\n pt.b = v; // record the beginning value so we can revert()\n\n this._props.push(p);\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)\n\n pt = pt._next;\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.12.7\";\n_coreReady = 1;\n_windowExists() && _wake();\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative };","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-expect-error navigator and windows are not available in all environments\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = globalThis.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","export const VERSION = \"1.7.8\";","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n\n var _super = _createSuper(ParseError);\n\n function ParseError(code) {\n var _this;\n\n _classCallCheck(this, ParseError);\n\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return _createClass(ParseError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport { ParseError as default };\n//# sourceMappingURL=ParseError.js.map","var objectConstructor = {}.constructor;\nexport default function isObject(object) {\n return object !== undefined && object !== null && object.constructor === objectConstructor;\n}\n//# sourceMappingURL=isObject.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport compare from './tools/semver-compare.js';\nimport isObject from './helpers/isObject.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!isObject(metadata) || !isObject(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar typeOf = function typeOf(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries.hasOwnProperty(country);\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} emitEvent - An optional \"emit event\" function.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, emitEvent) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n // `emitEvent` argument was added to this `export`ed function on Dec 26th, 2023.\n // Any 3rd-party code that used to `import` and call this function before that\n // won't be passing any `emitEvent` argument.\n //\n // The addition of the `emitEvent` argument was to fix the slightly-weird behavior\n // of parsing an input string when the user inputs something like `\"2+7\"\n // https://github.com/catamphetamine/react-phone-number-input/issues/437\n //\n // If the parser encounters an unexpected `+` in a string being parsed\n // then it simply discards that out-of-place `+` and any following characters.\n //\n if (typeof emitEvent === 'function') {\n emitEvent('end');\n }\n\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) {\n var element = _step.value;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=mergeArrays.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returns an empty object — `{}` —\n // that means that the phone number is malformed,\n // so it can't possibly be valid.\n\n if (!input.country && !input.countryCallingCode) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n};\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nexport function chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossible.js';\nimport isValidNumber from './isValid.js'; // import checkNumberLength from './helpers/checkNumberLength.js'\n\nimport getNumberType from './helpers/getNumberType.js';\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js';\nimport formatNumber from './format.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber = /*#__PURE__*/function () {\n /**\r\n * @param {string} countryOrCountryCallingCode\r\n * @param {string} nationalNumber\r\n * @param {object} metadata — Metadata JSON\r\n * @return {PhoneNumber}\r\n */\n function PhoneNumber(countryOrCountryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryOrCountryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _getCountryAndCountry = getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadata),\n country = _getCountryAndCountry.country,\n countryCallingCode = _getCountryAndCountry.countryCallingCode;\n\n this.country = country;\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber; // Exclude `metadata` property output from `PhoneNumber.toString()`\n // so that it doesn't clutter the console output of Node.js.\n // Previously, when Node.js did `console.log(new PhoneNumber(...))`,\n // it would output the whole internal structure of the `metadata` object.\n\n this.getMetadata = function () {\n return metadata;\n };\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"getPossibleCountries\",\n value: function getPossibleCountries() {\n if (this.country) {\n return [this.country];\n }\n\n return getPossibleCountriesForNumber(this.countryCallingCode, this.nationalNumber, this.getMetadata());\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.getMetadata());\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\n // but later it was found out that it doesn't include the possible `TOO_SHORT` result\n // returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\n // so eventually I simply commented out this method from the `PhoneNumber` class\n // and just left the `validatePhoneNumberLength()` function, even though that one would require\n // and additional step to also validate the actual country / calling code of the phone number.\n // validateLength() {\n // \tconst metadata = new Metadata(this.getMetadata())\n // \tmetadata.selectNumberingPlan(this.countryCallingCode)\n // \tconst result = checkNumberLength(this.nationalNumber, metadata)\n // \tif (result !== 'IS_POSSIBLE') {\n // \t\treturn result\n // \t}\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\n var country;\n var countryCallingCode;\n var metadata = new Metadata(metadataJson); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n if (isCountryCode(countryOrCountryCallingCode)) {\n country = countryOrCountryCallingCode;\n metadata.selectNumberingPlan(country);\n countryCallingCode = metadata.countryCallingCode();\n } else {\n countryCallingCode = countryOrCountryCallingCode;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(countryCallingCode)) {\n country = '001';\n }\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode\n };\n}\n//# sourceMappingURL=PhoneNumber.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nexport default function getCountryByNationalNumber(nationalPhoneNumber, _ref) {\n var countries = _ref.countries,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata); // const matchingCountries = []\n\n for (var _iterator = _createForOfIteratorHelperLoose(countries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // \"Leading digits\" patterns are only defined for about 20% of all countries.\n // By definition, matching \"leading digits\" is a sufficient but not a necessary\n // condition for a phone number to belong to a country.\n // The point of \"leading digits\" check is that it's the fastest one to get a match.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\n // because of the intended use of that feature.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n // If both the `defaultCountry` and the \"main\" one match the phone number,\n // don't prefer the `defaultCountry` over the \"main\" one.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\n return country; // // If the `defaultCountry` is among the `matchingCountries` then return it.\n // if (defaultCountry) {\n // \tif (country === defaultCountry) {\n // \t\treturn country\n // \t}\n // \tmatchingCountries.push(country)\n // } else {\n // \treturn country\n // }\n }\n } // // Return the first (\"main\") one of the `matchingCountries`.\n // if (matchingCountries.length > 0) {\n // \treturn matchingCountries[0]\n // }\n\n}\n//# sourceMappingURL=getCountryByNationalNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parse from './parse.js';\nexport default function parsePhoneNumberWithError(text, options, metadata) {\n return parse(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumberWithError_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport isObject from './helpers/isObject.js'; // Extracts the following properties from function arguments:\n// * input `text`\n// * `options` object\n// * `metadata` JSON\n\nexport default function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n}\n//# sourceMappingURL=normalizeArguments.js.map","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","/**\n * SSR Window 5.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 12, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit, forceActiveIndex) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n panOnMouseMove: false,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let isPanningWithMouse = false;\n let mousePanStart = {\n x: 0,\n y: 0\n };\n const mousePanSensitivity = -3; // Negative to invert pan direction\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n const isMouseEvent = e.pointerType === 'mouse';\n const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n if (isMousePan) onMouseMove(e);\n return;\n }\n if (isMousePan) {\n onMouseMove(e);\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n evCache.length = 0;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function onMouseMove(e) {\n // Only pan if zoomed in and mouse panning is enabled\n if (currentScale <= 1 || !gesture.imageWrapEl) return;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n const matrix = new window.DOMMatrix(currentTransform);\n if (!isPanningWithMouse) {\n isPanningWithMouse = true;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = matrix.e;\n image.startY = matrix.f;\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n return;\n }\n const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n const scaledWidth = image.width * currentScale;\n const scaledHeight = image.height * currentScale;\n const slideWidth = gesture.slideWidth;\n const slideHeight = gesture.slideHeight;\n const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n const maxX = -minX;\n const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n const maxY = -minY;\n const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = newX;\n image.startY = newY;\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n if (swiper.params.zoom.panOnMouseMove) {\n mousePanStart = {\n x: 0,\n y: 0\n };\n if (isPanningWithMouse) {\n isPanningWithMouse = false;\n image.startX = 0;\n image.startY = 0;\n }\n }\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n _loopSwapReset: false,\n watchSlidesProgress: true,\n loopAdditionalSlides: 3,\n centeredSlides: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/**\n * Swiper 11.2.4\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 14, 2025\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: isObject(propValue) ? {\n ...propValue\n } : propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.find(mParam => attr.name.startsWith(`${mParam}-`));\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = !!value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 11.2.4\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 14, 2025\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/>', ' transform-origin=\"center\" transform=\"rotate(180)\"/>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n \n
\n \n ${Array.from({\n length: this.slideSlots\n }).map((_, index) => `\n \n \n \n `).join('')}\n
\n \n ${needsNavigation(this.passedParams) ? `\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n ` : ''}\n ${needsPagination(this.passedParams) ? `\n
\n ` : ''}\n ${needsScrollbar(this.passedParams) ? `\n
\n ` : ''}\n `;\n this.shadowRoot.appendChild(el);\n this.rendered = true;\n }\n initialize() {\n var _this = this;\n if (this.initialized) return;\n this.initialized = true;\n const {\n params: swiperParams,\n passedParams\n } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n this.render();\n\n // eslint-disable-next-line\n this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n ...(swiperParams.virtual ? {} : {\n observer: true\n }),\n ...swiperParams,\n touchEventsTarget: 'container',\n onAny: function (name) {\n if (name === 'observerUpdate') {\n _this.calcSlideSlots();\n }\n const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const event = new CustomEvent(eventName, {\n detail: args,\n bubbles: name !== 'hashChange',\n cancelable: true\n });\n _this.dispatchEvent(event);\n }\n });\n }\n connectedCallback() {\n if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.init === false || this.getAttribute('init') === 'false') {\n return;\n }\n this.initialize();\n }\n disconnectedCallback() {\n if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n this.initialized = false;\n }\n updateSwiperOnPropChange(propName, propValue) {\n const {\n params: swiperParams,\n passedParams\n } = getParams(this, propName, propValue);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n if (this.swiper && this.swiper.params[propName] === propValue) {\n return;\n }\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName] ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next'\n } : {}),\n ...(propName === 'pagination' && passedParams[propName] ? {\n paginationEl: '.swiper-pagination'\n } : {}),\n ...(propName === 'scrollbar' && passedParams[propName] ? {\n scrollbarEl: '.swiper-scrollbar'\n } : {})\n });\n }\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n if (prevValue === 'true' && newValue === null) {\n newValue = false;\n }\n this.updateSwiperOnPropChange(attr, newValue);\n }\n static get observedAttributes() {\n const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n return attrs;\n }\n}\nparamsList.forEach(paramName => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n configurable: true,\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName, value);\n }\n });\n});\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n render() {\n const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n addStyle(this.shadowRoot, SwiperSlideCSS);\n this.shadowRoot.appendChild(document.createElement('slot'));\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n lazyDiv.part.add('preloader');\n this.shadowRoot.appendChild(lazyDiv);\n }\n }\n initialize() {\n this.render();\n }\n connectedCallback() {\n if (this.swiperLoopMoveDOM) {\n return;\n }\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n if (typeof window === 'undefined') return;\n if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = params => {\n paramsList.push(...params);\n };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n","/*!\n * vue-router v4.5.0\n * (c) 2024 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, shallowReactive, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof document !== 'undefined';\n\n/**\n * Allows differentiating lazy components from functional components and vue-class-component\n * @internal\n *\n * @param component\n */\nfunction isRouteComponent(component) {\n return (typeof component === 'object' ||\n 'displayName' in component ||\n 'props' in component ||\n '__vccOpts' in component);\n}\nfunction isESModule(obj) {\n return (obj.__esModule ||\n obj[Symbol.toStringTag] === 'Module' ||\n // support CF with dynamic imports that do not\n // add the Module string tag\n (obj.default && isRouteComponent(obj.default)));\n}\nconst assign = Object.assign;\nfunction applyToParams(fn, params) {\n const newParams = {};\n for (const key in params) {\n const value = params[key];\n newParams[key] = isArray(value)\n ? value.map(fn)\n : fn(value);\n }\n return newParams;\n}\nconst noop = () => { };\n/**\n * Typesafe alternative to Array.isArray\n * https://github.com/microsoft/TypeScript/pull/48228\n */\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\n // avoid using ...args as it breaks in older Edge builds\n const args = Array.from(arguments).slice(1);\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\n}\n\n/**\n * Encoding Rules (␣ = Space)\n * - Path: ␣ \" < > # ? { }\n * - Query: ␣ \" < > # & =\n * - Hash: ␣ \" < > `\n *\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n * defines some extra characters to be encoded. Most browsers do not encode them\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n * plus `-._~`. This extra safety should be applied to query by patching the\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\n * encoded everywhere because some browsers like FF encode it when directly\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n */\n// const EXTRA_RESERVED_RE = /[!'()*]/g\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\nconst HASH_RE = /#/g; // %23\nconst AMPERSAND_RE = /&/g; // %26\nconst SLASH_RE = /\\//g; // %2F\nconst EQUAL_RE = /=/g; // %3D\nconst IM_RE = /\\?/g; // %3F\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\n * seems to be less flexible than not doing so and I can't find out the legacy\n * systems requiring this for regular requests like text/html. In the standard,\n * the encoding of the plus character is only mentioned for\n * application/x-www-form-urlencoded\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n * leave the plus character as is in queries. To be more flexible, we allow the\n * plus character on the query, but it can also be manually encoded by the user.\n *\n * Resources:\n * - https://url.spec.whatwg.org/#urlencoded-parsing\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n */\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\nconst ENC_CARET_RE = /%5E/g; // ^\nconst ENC_BACKTICK_RE = /%60/g; // `\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\nconst ENC_PIPE_RE = /%7C/g; // |\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\nconst ENC_SPACE_RE = /%20/g; // }\n/**\n * Encode characters that need to be encoded on the path, search and hash\n * sections of the URL.\n *\n * @internal\n * @param text - string to encode\n * @returns encoded string\n */\nfunction commonEncode(text) {\n return encodeURI('' + text)\n .replace(ENC_PIPE_RE, '|')\n .replace(ENC_BRACKET_OPEN_RE, '[')\n .replace(ENC_BRACKET_CLOSE_RE, ']');\n}\n/**\n * Encode characters that need to be encoded on the hash section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeHash(text) {\n return commonEncode(text)\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^');\n}\n/**\n * Encode characters that need to be encoded query values on the query\n * section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeQueryValue(text) {\n return (commonEncode(text)\n // Encode the space as +, encode the + to differentiate it from the space\n .replace(PLUS_RE, '%2B')\n .replace(ENC_SPACE_RE, '+')\n .replace(HASH_RE, '%23')\n .replace(AMPERSAND_RE, '%26')\n .replace(ENC_BACKTICK_RE, '`')\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^'));\n}\n/**\n * Like `encodeQueryValue` but also encodes the `=` character.\n *\n * @param text - string to encode\n */\nfunction encodeQueryKey(text) {\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodePath(text) {\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL as a\n * param. This function encodes everything {@link encodePath} does plus the\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n * string instead.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeParam(text) {\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) {\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\n }\n return '' + text;\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\n/**\n * Transforms a URI into a normalized history location\n *\n * @param parseQuery\n * @param location - URI to normalize\n * @param currentLocation - current absolute location. Allows resolving relative\n * paths. Must start with `/`. Defaults to `/`\n * @returns a normalized history location\n */\nfunction parseURL(parseQuery, location, currentLocation = '/') {\n let path, query = {}, searchString = '', hash = '';\n // Could use URL and URLSearchParams but IE 11 doesn't support it\n // TODO: move to new URL()\n const hashPos = location.indexOf('#');\n let searchPos = location.indexOf('?');\n // the hash appears before the search, so it's not part of the search string\n if (hashPos < searchPos && hashPos >= 0) {\n searchPos = -1;\n }\n if (searchPos > -1) {\n path = location.slice(0, searchPos);\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\n query = parseQuery(searchString);\n }\n if (hashPos > -1) {\n path = path || location.slice(0, hashPos);\n // keep the # character\n hash = location.slice(hashPos, location.length);\n }\n // no search and no query\n path = resolveRelativePath(path != null ? path : location, currentLocation);\n // empty path means a relative query or hash `?foo=f`, `#thing`\n return {\n fullPath: path + (searchString && '?') + searchString + hash,\n path,\n query,\n hash: decode(hash),\n };\n}\n/**\n * Stringifies a URL object\n *\n * @param stringifyQuery\n * @param location\n */\nfunction stringifyURL(stringifyQuery, location) {\n const query = location.query ? stringifyQuery(location.query) : '';\n return location.path + (query && '?') + query + (location.hash || '');\n}\n/**\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n *\n * @param pathname - location.pathname\n * @param base - base to strip off\n */\nfunction stripBase(pathname, base) {\n // no base or base is not found at the beginning\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\n return pathname;\n return pathname.slice(base.length) || '/';\n}\n/**\n * Checks if two RouteLocation are equal. This means that both locations are\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\n * parameters and `hash` are the same\n *\n * @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n * @param a - first {@link RouteLocation}\n * @param b - second {@link RouteLocation}\n */\nfunction isSameRouteLocation(stringifyQuery, a, b) {\n const aLastIndex = a.matched.length - 1;\n const bLastIndex = b.matched.length - 1;\n return (aLastIndex > -1 &&\n aLastIndex === bLastIndex &&\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\n isSameRouteLocationParams(a.params, b.params) &&\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\n a.hash === b.hash);\n}\n/**\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\n * considered equal to the `RouteRecord` they are aliasing.\n *\n * @param a - first {@link RouteRecord}\n * @param b - second {@link RouteRecord}\n */\nfunction isSameRouteRecord(a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b);\n}\nfunction isSameRouteLocationParams(a, b) {\n if (Object.keys(a).length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\n return false;\n }\n return true;\n}\nfunction isSameRouteLocationParamsValue(a, b) {\n return isArray(a)\n ? isEquivalentArray(a, b)\n : isArray(b)\n ? isEquivalentArray(b, a)\n : a === b;\n}\n/**\n * Check if two arrays are the same or if an array with one single entry is the\n * same as another primitive value. Used to check query and parameters\n *\n * @param a - array of values\n * @param b - array of values or a single value\n */\nfunction isEquivalentArray(a, b) {\n return isArray(b)\n ? a.length === b.length && a.every((value, i) => value === b[i])\n : a.length === 1 && a[0] === b;\n}\n/**\n * Resolves a relative path that starts with `.`.\n *\n * @param to - path location we are resolving\n * @param from - currentLocation.path, should start with `/`\n */\nfunction resolveRelativePath(to, from) {\n if (to.startsWith('/'))\n return to;\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\n return to;\n }\n if (!to)\n return from;\n const fromSegments = from.split('/');\n const toSegments = to.split('/');\n const lastToSegment = toSegments[toSegments.length - 1];\n // make . and ./ the same (../ === .., ../../ === ../..)\n // this is the same behavior as new URL()\n if (lastToSegment === '..' || lastToSegment === '.') {\n toSegments.push('');\n }\n let position = fromSegments.length - 1;\n let toPosition;\n let segment;\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n segment = toSegments[toPosition];\n // we stay on the same position\n if (segment === '.')\n continue;\n // go up in the from array\n if (segment === '..') {\n // we can't go below zero, but we still need to increment toPosition\n if (position > 1)\n position--;\n // continue\n }\n // we reached a non-relative path, we stop here\n else\n break;\n }\n return (fromSegments.slice(0, position).join('/') +\n '/' +\n toSegments.slice(toPosition).join('/'));\n}\n/**\n * Initial route location where the router is. Can be used in navigation guards\n * to differentiate the initial navigation.\n *\n * @example\n * ```js\n * import { START_LOCATION } from 'vue-router'\n *\n * router.beforeEach((to, from) => {\n * if (from === START_LOCATION) {\n * // initial navigation\n * }\n * })\n * ```\n */\nconst START_LOCATION_NORMALIZED = {\n path: '/',\n // TODO: could we use a symbol in the future?\n name: undefined,\n params: {},\n query: {},\n hash: '',\n fullPath: '/',\n matched: [],\n meta: {},\n redirectedFrom: undefined,\n};\n\nvar NavigationType;\n(function (NavigationType) {\n NavigationType[\"pop\"] = \"pop\";\n NavigationType[\"push\"] = \"push\";\n})(NavigationType || (NavigationType = {}));\nvar NavigationDirection;\n(function (NavigationDirection) {\n NavigationDirection[\"back\"] = \"back\";\n NavigationDirection[\"forward\"] = \"forward\";\n NavigationDirection[\"unknown\"] = \"\";\n})(NavigationDirection || (NavigationDirection = {}));\n/**\n * Starting location for Histories\n */\nconst START = '';\n// Generic utils\n/**\n * Normalizes a base by removing any trailing slash and reading the base tag if\n * present.\n *\n * @param base - base to normalize\n */\nfunction normalizeBase(base) {\n if (!base) {\n if (isBrowser) {\n // respect tag\n const baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\n }\n else {\n base = '/';\n }\n }\n // ensure leading slash when it was removed by the regex above avoid leading\n // slash with hash because the file could be read from the disk like file://\n // and the leading slash would cause problems\n if (base[0] !== '/' && base[0] !== '#')\n base = '/' + base;\n // remove the trailing slash so all other method can just do `base + fullPath`\n // to build an href\n return removeTrailingSlash(base);\n}\n// remove any character before the hash\nconst BEFORE_HASH_RE = /^[^#]+#/;\nfunction createHref(base, location) {\n return base.replace(BEFORE_HASH_RE, '#') + location;\n}\n\nfunction getElementPosition(el, offset) {\n const docRect = document.documentElement.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n return {\n behavior: offset.behavior,\n left: elRect.left - docRect.left - (offset.left || 0),\n top: elRect.top - docRect.top - (offset.top || 0),\n };\n}\nconst computeScrollPosition = () => ({\n left: window.scrollX,\n top: window.scrollY,\n});\nfunction scrollToPosition(position) {\n let scrollToOptions;\n if ('el' in position) {\n const positionEl = position.el;\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\n /**\n * `id`s can accept pretty much any characters, including CSS combinators\n * like `>` or `~`. It's still possible to retrieve elements using\n * `document.getElementById('~')` but it needs to be escaped when using\n * `document.querySelector('#\\\\~')` for it to be valid. The only\n * requirements for `id`s are them to be unique on the page and to not be\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\n * be properly escaped for it to work with `querySelector`. We could check\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\n * would make things inconsistent since they are valid characters for an\n * `id` but would need to be escaped when using `querySelector`, breaking\n * their usage and ending up in no selector returned. Selectors need to be\n * escaped:\n *\n * - `#1-thing` becomes `#\\31 -thing`\n * - `#with~symbols` becomes `#with\\\\~symbols`\n *\n * - More information about the topic can be found at\n * https://mathiasbynens.be/notes/html5-id-class.\n * - Practical example: https://mathiasbynens.be/demo/html5-id\n */\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\n try {\n const foundEl = document.querySelector(position.el);\n if (isIdSelector && foundEl) {\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\n // return to avoid other warnings\n return;\n }\n }\n catch (err) {\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\n // return to avoid other warnings\n return;\n }\n }\n }\n const el = typeof positionEl === 'string'\n ? isIdSelector\n ? document.getElementById(positionEl.slice(1))\n : document.querySelector(positionEl)\n : positionEl;\n if (!el) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\n return;\n }\n scrollToOptions = getElementPosition(el, position);\n }\n else {\n scrollToOptions = position;\n }\n if ('scrollBehavior' in document.documentElement.style)\n window.scrollTo(scrollToOptions);\n else {\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n }\n}\nfunction getScrollKey(path, delta) {\n const position = history.state ? history.state.position - delta : -1;\n return position + path;\n}\nconst scrollPositions = new Map();\nfunction saveScrollPosition(key, scrollPosition) {\n scrollPositions.set(key, scrollPosition);\n}\nfunction getSavedScrollPosition(key) {\n const scroll = scrollPositions.get(key);\n // consume it so it's not used again\n scrollPositions.delete(key);\n return scroll;\n}\n// TODO: RFC about how to save scroll position\n/**\n * ScrollBehavior instance used by the router to compute and restore the scroll\n * position when navigating.\n */\n// export interface ScrollHandler {\n// // returns a scroll position that can be saved in history\n// compute(): ScrollPositionEntry\n// // can take an extended ScrollPositionEntry\n// scroll(position: ScrollPosition): void\n// }\n// export const scrollHandler: ScrollHandler = {\n// compute: computeScroll,\n// scroll: scrollToPosition,\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\n/**\n * Creates a normalized history location from a window.location object\n * @param base - The base path\n * @param location - The window.location object\n */\nfunction createCurrentLocation(base, location) {\n const { pathname, search, hash } = location;\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\n const hashPos = base.indexOf('#');\n if (hashPos > -1) {\n let slicePos = hash.includes(base.slice(hashPos))\n ? base.slice(hashPos).length\n : 1;\n let pathFromHash = hash.slice(slicePos);\n // prepend the starting slash to hash so the url starts with /#\n if (pathFromHash[0] !== '/')\n pathFromHash = '/' + pathFromHash;\n return stripBase(pathFromHash, '');\n }\n const path = stripBase(pathname, base);\n return path + search + hash;\n}\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n let listeners = [];\n let teardowns = [];\n // TODO: should it be a stack? a Dict. Check if the popstate listener\n // can trigger twice\n let pauseState = null;\n const popStateHandler = ({ state, }) => {\n const to = createCurrentLocation(base, location);\n const from = currentLocation.value;\n const fromState = historyState.value;\n let delta = 0;\n if (state) {\n currentLocation.value = to;\n historyState.value = state;\n // ignore the popstate and reset the pauseState\n if (pauseState && pauseState === from) {\n pauseState = null;\n return;\n }\n delta = fromState ? state.position - fromState.position : 0;\n }\n else {\n replace(to);\n }\n // Here we could also revert the navigation by calling history.go(-delta)\n // this listener will have to be adapted to not trigger again and to wait for the url\n // to be updated before triggering the listeners. Some kind of validation function would also\n // need to be passed to the listeners so the navigation can be accepted\n // call all listeners\n listeners.forEach(listener => {\n listener(currentLocation.value, from, {\n delta,\n type: NavigationType.pop,\n direction: delta\n ? delta > 0\n ? NavigationDirection.forward\n : NavigationDirection.back\n : NavigationDirection.unknown,\n });\n });\n };\n function pauseListeners() {\n pauseState = currentLocation.value;\n }\n function listen(callback) {\n // set up the listener and prepare teardown callbacks\n listeners.push(callback);\n const teardown = () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n teardowns.push(teardown);\n return teardown;\n }\n function beforeUnloadListener() {\n const { history } = window;\n if (!history.state)\n return;\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\n }\n function destroy() {\n for (const teardown of teardowns)\n teardown();\n teardowns = [];\n window.removeEventListener('popstate', popStateHandler);\n window.removeEventListener('beforeunload', beforeUnloadListener);\n }\n // set up the listeners and prepare teardown callbacks\n window.addEventListener('popstate', popStateHandler);\n // TODO: could we use 'pagehide' or 'visibilitychange' instead?\n // https://developer.chrome.com/blog/page-lifecycle-api/\n window.addEventListener('beforeunload', beforeUnloadListener, {\n passive: true,\n });\n return {\n pauseListeners,\n listen,\n destroy,\n };\n}\n/**\n * Creates a state object\n */\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\n return {\n back,\n current,\n forward,\n replaced,\n position: window.history.length,\n scroll: computeScroll ? computeScrollPosition() : null,\n };\n}\nfunction useHistoryStateNavigation(base) {\n const { history, location } = window;\n // private variables\n const currentLocation = {\n value: createCurrentLocation(base, location),\n };\n const historyState = { value: history.state };\n // build current history entry as this is a fresh navigation\n if (!historyState.value) {\n changeLocation(currentLocation.value, {\n back: null,\n current: currentLocation.value,\n forward: null,\n // the length is off by one, we need to decrease it\n position: history.length - 1,\n replaced: true,\n // don't add a scroll as the user may have an anchor, and we want\n // scrollBehavior to be triggered without a saved position\n scroll: null,\n }, true);\n }\n function changeLocation(to, state, replace) {\n /**\n * if a base tag is provided, and we are on a normal domain, we have to\n * respect the provided `base` attribute because pushState() will use it and\n * potentially erase anything before the `#` like at\n * https://github.com/vuejs/router/issues/685 where a base of\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\n * there is no host, the `` tag makes no sense and if there isn't a\n * base tag we can just use everything after the `#`.\n */\n const hashIndex = base.indexOf('#');\n const url = hashIndex > -1\n ? (location.host && document.querySelector('base')\n ? base\n : base.slice(hashIndex)) + to\n : createBaseLocation() + base + to;\n try {\n // BROWSER QUIRK\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\n historyState.value = state;\n }\n catch (err) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('Error with push/replace State', err);\n }\n else {\n console.error(err);\n }\n // Force the navigation, this also resets the call count\n location[replace ? 'replace' : 'assign'](url);\n }\n }\n function replace(to, data) {\n const state = assign({}, history.state, buildState(historyState.value.back, \n // keep back and forward entries but override current position\n to, historyState.value.forward, true), data, { position: historyState.value.position });\n changeLocation(to, state, true);\n currentLocation.value = to;\n }\n function push(to, data) {\n // Add to current entry the information of where we are going\n // as well as saving the current position\n const currentState = assign({}, \n // use current history state to gracefully handle a wrong call to\n // history.replaceState\n // https://github.com/vuejs/router/issues/366\n historyState.value, history.state, {\n forward: to,\n scroll: computeScrollPosition(),\n });\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\n `history.replaceState(history.state, '', url)\\n\\n` +\n `You can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state`);\n }\n changeLocation(currentState.current, currentState, true);\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\n changeLocation(to, state, false);\n currentLocation.value = to;\n }\n return {\n location: currentLocation,\n state: historyState,\n push,\n replace,\n };\n}\n/**\n * Creates an HTML5 history. Most common history for single page applications.\n *\n * @param base -\n */\nfunction createWebHistory(base) {\n base = normalizeBase(base);\n const historyNavigation = useHistoryStateNavigation(base);\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n function go(delta, triggerListeners = true) {\n if (!triggerListeners)\n historyListeners.pauseListeners();\n history.go(delta);\n }\n const routerHistory = assign({\n // it's overridden right after\n location: '',\n base,\n go,\n createHref: createHref.bind(null, base),\n }, historyNavigation, historyListeners);\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => historyNavigation.location.value,\n });\n Object.defineProperty(routerHistory, 'state', {\n enumerable: true,\n get: () => historyNavigation.state.value,\n });\n return routerHistory;\n}\n\n/**\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n *\n * @param base - Base applied to all urls, defaults to '/'\n * @returns a history object that can be passed to the router constructor\n */\nfunction createMemoryHistory(base = '') {\n let listeners = [];\n let queue = [START];\n let position = 0;\n base = normalizeBase(base);\n function setLocation(location) {\n position++;\n if (position !== queue.length) {\n // we are in the middle, we remove everything from here in the queue\n queue.splice(position);\n }\n queue.push(location);\n }\n function triggerListeners(to, from, { direction, delta }) {\n const info = {\n direction,\n delta,\n type: NavigationType.pop,\n };\n for (const callback of listeners) {\n callback(to, from, info);\n }\n }\n const routerHistory = {\n // rewritten by Object.defineProperty\n location: START,\n // TODO: should be kept in queue\n state: {},\n base,\n createHref: createHref.bind(null, base),\n replace(to) {\n // remove current entry and decrement position\n queue.splice(position--, 1);\n setLocation(to);\n },\n push(to, data) {\n setLocation(to);\n },\n listen(callback) {\n listeners.push(callback);\n return () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n },\n destroy() {\n listeners = [];\n queue = [START];\n position = 0;\n },\n go(delta, shouldTrigger = true) {\n const from = this.location;\n const direction = \n // we are considering delta === 0 going forward, but in abstract mode\n // using 0 for the delta doesn't make sense like it does in html5 where\n // it reloads the page\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\n if (shouldTrigger) {\n triggerListeners(this.location, from, {\n direction,\n delta,\n });\n }\n },\n };\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => queue[position],\n });\n return routerHistory;\n}\n\n/**\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n * handle any URL is not possible.\n *\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `` tag\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n * calls**, meaning that if you use a `` tag, it's `href` value **has to match this parameter** (ignoring anything\n * after the `#`).\n *\n * @example\n * ```js\n * // at https://example.com/folder\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n * // you should avoid doing this because it changes the original url and breaks copying urls\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n *\n * // at file:///usr/etc/folder/index.html\n * // for locations with no `host`, the base is ignored\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n * ```\n */\nfunction createWebHashHistory(base) {\n // Make sure this implementation is fine in terms of encoding, specially for IE11\n // for `file://`, directly use the pathname and ignore the base\n // location.pathname contains an initial `/` even at the root: `https://example.com`\n base = location.host ? base || location.pathname + location.search : '';\n // allow the user to provide a `#` in the middle: `/base/#/app`\n if (!base.includes('#'))\n base += '#';\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\n }\n return createWebHistory(base);\n}\n\nfunction isRouteLocation(route) {\n return typeof route === 'string' || (route && typeof route === 'object');\n}\nfunction isRouteName(name) {\n return typeof name === 'string' || typeof name === 'symbol';\n}\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\n/**\n * Enumeration with all possible types for navigation failures. Can be passed to\n * {@link isNavigationFailure} to check for specific failures.\n */\nvar NavigationFailureType;\n(function (NavigationFailureType) {\n /**\n * An aborted navigation is a navigation that failed because a navigation\n * guard returned `false` or called `next(false)`\n */\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n /**\n * A cancelled navigation is a navigation that failed because a more recent\n * navigation finished started (not necessarily finished).\n */\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n /**\n * A duplicated navigation is a navigation that failed because it was\n * initiated while already being at the exact same location.\n */\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n})(NavigationFailureType || (NavigationFailureType = {}));\n// DEV only debug messages\nconst ErrorTypeMessages = {\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\n : ''}`;\n },\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n },\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n },\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n },\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n },\n};\n/**\n * Creates a typed NavigationFailure object.\n * @internal\n * @param type - NavigationFailureType\n * @param params - { from, to }\n */\nfunction createRouterError(type, params) {\n // keep full error messages in cjs versions\n if ((process.env.NODE_ENV !== 'production') || !true) {\n return assign(new Error(ErrorTypeMessages[type](params)), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n else {\n return assign(new Error(), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n}\nfunction isNavigationFailure(error, type) {\n return (error instanceof Error &&\n NavigationFailureSymbol in error &&\n (type == null || !!(error.type & type)));\n}\nconst propertiesToLog = ['params', 'query', 'hash'];\nfunction stringifyRoute(to) {\n if (typeof to === 'string')\n return to;\n if (to.path != null)\n return to.path;\n const location = {};\n for (const key of propertiesToLog) {\n if (key in to)\n location[key] = to[key];\n }\n return JSON.stringify(location, null, 2);\n}\n\n// default pattern for a param: non-greedy everything but /\nconst BASE_PARAM_PATTERN = '[^/]+?';\nconst BASE_PATH_PARSER_OPTIONS = {\n sensitive: false,\n strict: false,\n start: true,\n end: true,\n};\n// Special Regex characters that must be escaped in static tokens\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n/**\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\n *\n * @param segments - array of segments returned by tokenizePath\n * @param extraOptions - optional options for the regexp\n * @returns a PathParser\n */\nfunction tokensToParser(segments, extraOptions) {\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\n const score = [];\n // the regexp as a string\n let pattern = options.start ? '^' : '';\n // extracted keys\n const keys = [];\n for (const segment of segments) {\n // the root segment needs special treatment\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\n // allow trailing slash\n if (options.strict && !segment.length)\n pattern += '/';\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n const token = segment[tokenIndex];\n // resets the score if we are inside a sub-segment /:a-other-:b\n let subSegmentScore = 40 /* PathScore.Segment */ +\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\n if (token.type === 0 /* TokenType.Static */) {\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n pattern += '/';\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\n subSegmentScore += 40 /* PathScore.Static */;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional, regexp } = token;\n keys.push({\n name: value,\n repeatable,\n optional,\n });\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\n // the user provided a custom regexp /:id(\\\\d+)\n if (re !== BASE_PARAM_PATTERN) {\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\n // make sure the regexp is valid before using it\n try {\n new RegExp(`(${re})`);\n }\n catch (err) {\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\n err.message);\n }\n }\n // when we repeat we must take care of the repeating leading slash\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n subPattern =\n // avoid an optional / if there are more segments e.g. /:p?-static\n // or /:p?-:p2\n optional && segment.length < 2\n ? `(?:/${subPattern})`\n : '/' + subPattern;\n if (optional)\n subPattern += '?';\n pattern += subPattern;\n subSegmentScore += 20 /* PathScore.Dynamic */;\n if (optional)\n subSegmentScore += -8 /* PathScore.BonusOptional */;\n if (repeatable)\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\n if (re === '.*')\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\n }\n segmentScores.push(subSegmentScore);\n }\n // an empty array like /home/ -> [[{home}], []]\n // if (!segment.length) pattern += '/'\n score.push(segmentScores);\n }\n // only apply the strict bonus to the last score\n if (options.strict && options.end) {\n const i = score.length - 1;\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\n }\n // TODO: dev only warn double trailing slash\n if (!options.strict)\n pattern += '/?';\n if (options.end)\n pattern += '$';\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\n else if (options.strict && !pattern.endsWith('/'))\n pattern += '(?:/|$)';\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\n function parse(path) {\n const match = path.match(re);\n const params = {};\n if (!match)\n return null;\n for (let i = 1; i < match.length; i++) {\n const value = match[i] || '';\n const key = keys[i - 1];\n params[key.name] = value && key.repeatable ? value.split('/') : value;\n }\n return params;\n }\n function stringify(params) {\n let path = '';\n // for optional parameters to allow to be empty\n let avoidDuplicatedSlash = false;\n for (const segment of segments) {\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\n path += '/';\n avoidDuplicatedSlash = false;\n for (const token of segment) {\n if (token.type === 0 /* TokenType.Static */) {\n path += token.value;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional } = token;\n const param = value in params ? params[value] : '';\n if (isArray(param) && !repeatable) {\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n }\n const text = isArray(param)\n ? param.join('/')\n : param;\n if (!text) {\n if (optional) {\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\n if (segment.length < 2) {\n // remove the last slash as we could be at the end\n if (path.endsWith('/'))\n path = path.slice(0, -1);\n // do not append a slash on the next iteration\n else\n avoidDuplicatedSlash = true;\n }\n }\n else\n throw new Error(`Missing required param \"${value}\"`);\n }\n path += text;\n }\n }\n }\n // avoid empty path when we have multiple optional params\n return path || '/';\n }\n return {\n re,\n score,\n keys,\n parse,\n stringify,\n };\n}\n/**\n * Compares an array of numbers as used in PathParser.score and returns a\n * number. This function can be used to `sort` an array\n *\n * @param a - first array of numbers\n * @param b - second array of numbers\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n * should be sorted first\n */\nfunction compareScoreArray(a, b) {\n let i = 0;\n while (i < a.length && i < b.length) {\n const diff = b[i] - a[i];\n // only keep going if diff === 0\n if (diff)\n return diff;\n i++;\n }\n // if the last subsegment was Static, the shorter segments should be sorted first\n // otherwise sort the longest segment first\n if (a.length < b.length) {\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? -1\n : 1;\n }\n else if (a.length > b.length) {\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? 1\n : -1;\n }\n return 0;\n}\n/**\n * Compare function that can be used with `sort` to sort an array of PathParser\n *\n * @param a - first PathParser\n * @param b - second PathParser\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n */\nfunction comparePathParserScore(a, b) {\n let i = 0;\n const aScore = a.score;\n const bScore = b.score;\n while (i < aScore.length && i < bScore.length) {\n const comp = compareScoreArray(aScore[i], bScore[i]);\n // do not return if both are equal\n if (comp)\n return comp;\n i++;\n }\n if (Math.abs(bScore.length - aScore.length) === 1) {\n if (isLastScoreNegative(aScore))\n return 1;\n if (isLastScoreNegative(bScore))\n return -1;\n }\n // if a and b share the same score entries but b has more, sort b first\n return bScore.length - aScore.length;\n // this is the ternary version\n // return aScore.length < bScore.length\n // ? 1\n // : aScore.length > bScore.length\n // ? -1\n // : 0\n}\n/**\n * This allows detecting splats at the end of a path: /home/:id(.*)*\n *\n * @param score - score to check\n * @returns true if the last entry is negative\n */\nfunction isLastScoreNegative(score) {\n const last = score[score.length - 1];\n return score.length > 0 && last[last.length - 1] < 0;\n}\n\nconst ROOT_TOKEN = {\n type: 0 /* TokenType.Static */,\n value: '',\n};\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\n// After some profiling, the cache seems to be unnecessary because tokenizePath\n// (the slowest part of adding a route) is very fast\n// const tokenCache = new Map()\nfunction tokenizePath(path) {\n if (!path)\n return [[]];\n if (path === '/')\n return [[ROOT_TOKEN]];\n if (!path.startsWith('/')) {\n throw new Error((process.env.NODE_ENV !== 'production')\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\n : `Invalid path \"${path}\"`);\n }\n // if (tokenCache.has(path)) return tokenCache.get(path)!\n function crash(message) {\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n }\n let state = 0 /* TokenizerState.Static */;\n let previousState = state;\n const tokens = [];\n // the segment will always be valid because we get into the initial state\n // with the leading /\n let segment;\n function finalizeSegment() {\n if (segment)\n tokens.push(segment);\n segment = [];\n }\n // index on the path\n let i = 0;\n // char at index\n let char;\n // buffer of the value read\n let buffer = '';\n // custom regexp for a param\n let customRe = '';\n function consumeBuffer() {\n if (!buffer)\n return;\n if (state === 0 /* TokenizerState.Static */) {\n segment.push({\n type: 0 /* TokenType.Static */,\n value: buffer,\n });\n }\n else if (state === 1 /* TokenizerState.Param */ ||\n state === 2 /* TokenizerState.ParamRegExp */ ||\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\n if (segment.length > 1 && (char === '*' || char === '+'))\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n segment.push({\n type: 1 /* TokenType.Param */,\n value: buffer,\n regexp: customRe,\n repeatable: char === '*' || char === '+',\n optional: char === '*' || char === '?',\n });\n }\n else {\n crash('Invalid state to consume buffer');\n }\n buffer = '';\n }\n function addCharToBuffer() {\n buffer += char;\n }\n while (i < path.length) {\n char = path[i++];\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\n previousState = state;\n state = 4 /* TokenizerState.EscapeNext */;\n continue;\n }\n switch (state) {\n case 0 /* TokenizerState.Static */:\n if (char === '/') {\n if (buffer) {\n consumeBuffer();\n }\n finalizeSegment();\n }\n else if (char === ':') {\n consumeBuffer();\n state = 1 /* TokenizerState.Param */;\n }\n else {\n addCharToBuffer();\n }\n break;\n case 4 /* TokenizerState.EscapeNext */:\n addCharToBuffer();\n state = previousState;\n break;\n case 1 /* TokenizerState.Param */:\n if (char === '(') {\n state = 2 /* TokenizerState.ParamRegExp */;\n }\n else if (VALID_PARAM_RE.test(char)) {\n addCharToBuffer();\n }\n else {\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n }\n break;\n case 2 /* TokenizerState.ParamRegExp */:\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\n // it already works by escaping the closing )\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\n // is this really something people need since you can also write\n // /prefix_:p()_suffix\n if (char === ')') {\n // handle the escaped )\n if (customRe[customRe.length - 1] == '\\\\')\n customRe = customRe.slice(0, -1) + char;\n else\n state = 3 /* TokenizerState.ParamRegExpEnd */;\n }\n else {\n customRe += char;\n }\n break;\n case 3 /* TokenizerState.ParamRegExpEnd */:\n // same as finalizing a param\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n customRe = '';\n break;\n default:\n crash('Unknown state');\n break;\n }\n }\n if (state === 2 /* TokenizerState.ParamRegExp */)\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n consumeBuffer();\n finalizeSegment();\n // tokenCache.set(path, tokens)\n return tokens;\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\n const parser = tokensToParser(tokenizePath(record.path), options);\n // warn against params with the same name\n if ((process.env.NODE_ENV !== 'production')) {\n const existingKeys = new Set();\n for (const key of parser.keys) {\n if (existingKeys.has(key.name))\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\n existingKeys.add(key.name);\n }\n }\n const matcher = assign(parser, {\n record,\n parent,\n // these needs to be populated by the parent\n children: [],\n alias: [],\n });\n if (parent) {\n // both are aliases or both are not aliases\n // we don't want to mix them because the order is used when\n // passing originalRecord in Matcher.addRoute\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\n parent.children.push(matcher);\n }\n return matcher;\n}\n\n/**\n * Creates a Router Matcher.\n *\n * @internal\n * @param routes - array of initial routes\n * @param globalOptions - global route options\n */\nfunction createRouterMatcher(routes, globalOptions) {\n // normalized ordered array of matchers\n const matchers = [];\n const matcherMap = new Map();\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\n function getRecordMatcher(name) {\n return matcherMap.get(name);\n }\n function addRoute(record, parent, originalRecord) {\n // used later on to remove by name\n const isRootAdd = !originalRecord;\n const mainNormalizedRecord = normalizeRouteRecord(record);\n if ((process.env.NODE_ENV !== 'production')) {\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n }\n // we might be the child of an alias\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n const options = mergeOptions(globalOptions, record);\n // generate an array of records to correctly handle aliases\n const normalizedRecords = [mainNormalizedRecord];\n if ('alias' in record) {\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\n for (const alias of aliases) {\n normalizedRecords.push(\n // we need to normalize again to ensure the `mods` property\n // being non enumerable\n normalizeRouteRecord(assign({}, mainNormalizedRecord, {\n // this allows us to hold a copy of the `components` option\n // so that async components cache is hold on the original record\n components: originalRecord\n ? originalRecord.record.components\n : mainNormalizedRecord.components,\n path: alias,\n // we might be the child of an alias\n aliasOf: originalRecord\n ? originalRecord.record\n : mainNormalizedRecord,\n // the aliases are always of the same kind as the original since they\n // are defined on the same record\n })));\n }\n }\n let matcher;\n let originalMatcher;\n for (const normalizedRecord of normalizedRecords) {\n const { path } = normalizedRecord;\n // Build up the path for nested routes if the child isn't an absolute\n // route. Only add the / delimiter if the child path isn't empty and if the\n // parent path doesn't have a trailing slash\n if (parent && path[0] !== '/') {\n const parentPath = parent.record.path;\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\n normalizedRecord.path =\n parent.record.path + (path && connectingSlash + path);\n }\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\n 'See more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.');\n }\n // create the object beforehand, so it can be passed to children\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\n checkMissingParamsInAbsolutePath(matcher, parent);\n // if we are an alias we must tell the original record that we exist,\n // so we can be removed\n if (originalRecord) {\n originalRecord.alias.push(matcher);\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameParams(originalRecord, matcher);\n }\n }\n else {\n // otherwise, the first record is the original and others are aliases\n originalMatcher = originalMatcher || matcher;\n if (originalMatcher !== matcher)\n originalMatcher.alias.push(matcher);\n // remove the route if named and only for the top record (avoid in nested calls)\n // this works because the original record is the first one\n if (isRootAdd && record.name && !isAliasRecord(matcher)) {\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameNameAsAncestor(record, parent);\n }\n removeRoute(record.name);\n }\n }\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\n // not be reached and pass through the catch all route\n if (isMatchable(matcher)) {\n insertMatcher(matcher);\n }\n if (mainNormalizedRecord.children) {\n const children = mainNormalizedRecord.children;\n for (let i = 0; i < children.length; i++) {\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n }\n }\n // if there was no original record, then the first one was not an alias and all\n // other aliases (if any) need to reference this record when adding children\n originalRecord = originalRecord || matcher;\n // TODO: add normalized records for more flexibility\n // if (parent && isAliasRecord(originalRecord)) {\n // parent.children.push(originalRecord)\n // }\n }\n return originalMatcher\n ? () => {\n // since other matchers are aliases, they should be removed by the original matcher\n removeRoute(originalMatcher);\n }\n : noop;\n }\n function removeRoute(matcherRef) {\n if (isRouteName(matcherRef)) {\n const matcher = matcherMap.get(matcherRef);\n if (matcher) {\n matcherMap.delete(matcherRef);\n matchers.splice(matchers.indexOf(matcher), 1);\n matcher.children.forEach(removeRoute);\n matcher.alias.forEach(removeRoute);\n }\n }\n else {\n const index = matchers.indexOf(matcherRef);\n if (index > -1) {\n matchers.splice(index, 1);\n if (matcherRef.record.name)\n matcherMap.delete(matcherRef.record.name);\n matcherRef.children.forEach(removeRoute);\n matcherRef.alias.forEach(removeRoute);\n }\n }\n }\n function getRoutes() {\n return matchers;\n }\n function insertMatcher(matcher) {\n const index = findInsertionIndex(matcher, matchers);\n matchers.splice(index, 0, matcher);\n // only add the original record to the name map\n if (matcher.record.name && !isAliasRecord(matcher))\n matcherMap.set(matcher.record.name, matcher);\n }\n function resolve(location, currentLocation) {\n let matcher;\n let params = {};\n let path;\n let name;\n if ('name' in location && location.name) {\n matcher = matcherMap.get(location.name);\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n });\n // warn if the user is passing invalid params so they can debug it better when they get removed\n if ((process.env.NODE_ENV !== 'production')) {\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\n if (invalidParams.length) {\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\n }\n }\n name = matcher.record.name;\n params = assign(\n // paramsFromLocation is a new object\n paramsFromLocation(currentLocation.params, \n // only keep params that exist in the resolved location\n // only keep optional params coming from a parent record\n matcher.keys\n .filter(k => !k.optional)\n .concat(matcher.parent ? matcher.parent.keys.filter(k => k.optional) : [])\n .map(k => k.name)), \n // discard any existing params in the current location that do not exist here\n // #1497 this ensures better active/exact matching\n location.params &&\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\n // throws if cannot be stringified\n path = matcher.stringify(params);\n }\n else if (location.path != null) {\n // no need to resolve the path with the matcher as it was provided\n // this also allows the user to control the encoding\n path = location.path;\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`);\n }\n matcher = matchers.find(m => m.re.test(path));\n // matcher should have a value after the loop\n if (matcher) {\n // we know the matcher works because we tested the regexp\n params = matcher.parse(path);\n name = matcher.record.name;\n }\n // location is a relative path\n }\n else {\n // match by name or path of current route\n matcher = currentLocation.name\n ? matcherMap.get(currentLocation.name)\n : matchers.find(m => m.re.test(currentLocation.path));\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n currentLocation,\n });\n name = matcher.record.name;\n // since we are navigating to the same location, we don't need to pick the\n // params like when `name` is provided\n params = assign({}, currentLocation.params, location.params);\n path = matcher.stringify(params);\n }\n const matched = [];\n let parentMatcher = matcher;\n while (parentMatcher) {\n // reversed order so parents are at the beginning\n matched.unshift(parentMatcher.record);\n parentMatcher = parentMatcher.parent;\n }\n return {\n name,\n path,\n params,\n matched,\n meta: mergeMetaFields(matched),\n };\n }\n // add initial routes\n routes.forEach(route => addRoute(route));\n function clearRoutes() {\n matchers.length = 0;\n matcherMap.clear();\n }\n return {\n addRoute,\n resolve,\n removeRoute,\n clearRoutes,\n getRoutes,\n getRecordMatcher,\n };\n}\nfunction paramsFromLocation(params, keys) {\n const newParams = {};\n for (const key of keys) {\n if (key in params)\n newParams[key] = params[key];\n }\n return newParams;\n}\n/**\n * Normalizes a RouteRecordRaw. Creates a copy\n *\n * @param record\n * @returns the normalized version\n */\nfunction normalizeRouteRecord(record) {\n const normalized = {\n path: record.path,\n redirect: record.redirect,\n name: record.name,\n meta: record.meta || {},\n aliasOf: record.aliasOf,\n beforeEnter: record.beforeEnter,\n props: normalizeRecordProps(record),\n children: record.children || [],\n instances: {},\n leaveGuards: new Set(),\n updateGuards: new Set(),\n enterCallbacks: {},\n // must be declared afterwards\n // mods: {},\n components: 'components' in record\n ? record.components || null\n : record.component && { default: record.component },\n };\n // mods contain modules and shouldn't be copied,\n // logged or anything. It's just used for internal\n // advanced use cases like data loaders\n Object.defineProperty(normalized, 'mods', {\n value: {},\n });\n return normalized;\n}\n/**\n * Normalize the optional `props` in a record to always be an object similar to\n * components. Also accept a boolean for components.\n * @param record\n */\nfunction normalizeRecordProps(record) {\n const propsObject = {};\n // props does not exist on redirect records, but we can set false directly\n const props = record.props || false;\n if ('component' in record) {\n propsObject.default = props;\n }\n else {\n // NOTE: we could also allow a function to be applied to every component.\n // Would need user feedback for use cases\n for (const name in record.components)\n propsObject[name] = typeof props === 'object' ? props[name] : props;\n }\n return propsObject;\n}\n/**\n * Checks if a record or any of its parent is an alias\n * @param record\n */\nfunction isAliasRecord(record) {\n while (record) {\n if (record.record.aliasOf)\n return true;\n record = record.parent;\n }\n return false;\n}\n/**\n * Merge meta fields of an array of records\n *\n * @param matched - array of matched records\n */\nfunction mergeMetaFields(matched) {\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\n}\nfunction mergeOptions(defaults, partialOptions) {\n const options = {};\n for (const key in defaults) {\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n }\n return options;\n}\nfunction isSameParam(a, b) {\n return (a.name === b.name &&\n a.optional === b.optional &&\n a.repeatable === b.repeatable);\n}\n/**\n * Check if a path and its alias have the same required params\n *\n * @param a - original record\n * @param b - alias record\n */\nfunction checkSameParams(a, b) {\n for (const key of a.keys) {\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n for (const key of b.keys) {\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n}\n/**\n * A route with a name and a child with an empty path without a name should warn when adding the route\n *\n * @param mainNormalizedRecord - RouteRecordNormalized\n * @param parent - RouteRecordMatcher\n */\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n if (parent &&\n parent.record.name &&\n !mainNormalizedRecord.name &&\n !mainNormalizedRecord.path) {\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\n }\n}\nfunction checkSameNameAsAncestor(record, parent) {\n for (let ancestor = parent; ancestor; ancestor = ancestor.parent) {\n if (ancestor.record.name === record.name) {\n throw new Error(`A route named \"${String(record.name)}\" has been added as a ${parent === ancestor ? 'child' : 'descendant'} of a route with the same name. Route names must be unique and a nested route cannot use the same name as an ancestor.`);\n }\n }\n}\nfunction checkMissingParamsInAbsolutePath(record, parent) {\n for (const key of parent.keys) {\n if (!record.keys.find(isSameParam.bind(null, key)))\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\n }\n}\n/**\n * Performs a binary search to find the correct insertion index for a new matcher.\n *\n * Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships,\n * with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes.\n *\n * @param matcher - new matcher to be inserted\n * @param matchers - existing matchers\n */\nfunction findInsertionIndex(matcher, matchers) {\n // First phase: binary search based on score\n let lower = 0;\n let upper = matchers.length;\n while (lower !== upper) {\n const mid = (lower + upper) >> 1;\n const sortOrder = comparePathParserScore(matcher, matchers[mid]);\n if (sortOrder < 0) {\n upper = mid;\n }\n else {\n lower = mid + 1;\n }\n }\n // Second phase: check for an ancestor with the same score\n const insertionAncestor = getInsertionAncestor(matcher);\n if (insertionAncestor) {\n upper = matchers.lastIndexOf(insertionAncestor, upper - 1);\n if ((process.env.NODE_ENV !== 'production') && upper < 0) {\n // This should never happen\n warn(`Finding ancestor route \"${insertionAncestor.record.path}\" failed for \"${matcher.record.path}\"`);\n }\n }\n return upper;\n}\nfunction getInsertionAncestor(matcher) {\n let ancestor = matcher;\n while ((ancestor = ancestor.parent)) {\n if (isMatchable(ancestor) &&\n comparePathParserScore(matcher, ancestor) === 0) {\n return ancestor;\n }\n }\n return;\n}\n/**\n * Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without\n * a component, or name, or redirect, are just used to group other routes.\n * @param matcher\n * @param matcher.record record of the matcher\n * @returns\n */\nfunction isMatchable({ record }) {\n return !!(record.name ||\n (record.components && Object.keys(record.components).length) ||\n record.redirect);\n}\n\n/**\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n * version with the leading `?` and without Should work as URLSearchParams\n\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n const eqPos = searchParam.indexOf('=');\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n/**\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n * doesn't prepend a `?`\n *\n * @internal\n *\n * @param query - query object to stringify\n * @returns string version of the query without the leading `?`\n */\nfunction stringifyQuery(query) {\n let search = '';\n for (let key in query) {\n const value = query[key];\n key = encodeQueryKey(key);\n if (value == null) {\n // only null adds the value\n if (value !== undefined) {\n search += (search.length ? '&' : '') + key;\n }\n continue;\n }\n // keep null values\n const values = isArray(value)\n ? value.map(v => v && encodeQueryValue(v))\n : [value && encodeQueryValue(value)];\n values.forEach(value => {\n // skip undefined values in arrays as if they were not present\n // smaller code than using filter\n if (value !== undefined) {\n // only append & with non-empty search\n search += (search.length ? '&' : '') + key;\n if (value != null)\n search += '=' + value;\n }\n });\n }\n return search;\n}\n/**\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n * numbers into strings, removing keys with an undefined value and replacing\n * undefined with null in arrays\n *\n * @param query - query object to normalize\n * @returns a normalized query object\n */\nfunction normalizeQuery(query) {\n const normalizedQuery = {};\n for (const key in query) {\n const value = query[key];\n if (value !== undefined) {\n normalizedQuery[key] = isArray(value)\n ? value.map(v => (v == null ? null : '' + v))\n : value == null\n ? value\n : '' + value;\n }\n }\n return normalizedQuery;\n}\n\n/**\n * RouteRecord being rendered by the closest ancestor Router View. Used for\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\n * Location Matched\n *\n * @internal\n */\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\n/**\n * Allows overriding the router view depth to control which component in\n * `matched` is rendered. rvd stands for Router View Depth\n *\n * @internal\n */\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\n/**\n * Allows overriding the router instance returned by `useRouter` in tests. r\n * stands for router\n *\n * @internal\n */\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\n/**\n * Allows overriding the current route returned by `useRoute` in tests. rl\n * stands for route location\n *\n * @internal\n */\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\n/**\n * Allows overriding the current route used by router-view. Internally this is\n * used when the `route` prop is passed.\n *\n * @internal\n */\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n */\nfunction useCallbacks() {\n let handlers = [];\n function add(handler) {\n handlers.push(handler);\n return () => {\n const i = handlers.indexOf(handler);\n if (i > -1)\n handlers.splice(i, 1);\n };\n }\n function reset() {\n handlers = [];\n }\n return {\n add,\n list: () => handlers.slice(),\n reset,\n };\n}\n\nfunction registerGuard(record, name, guard) {\n const removeFromList = () => {\n record[name].delete(guard);\n };\n onUnmounted(removeFromList);\n onDeactivated(removeFromList);\n onActivated(() => {\n record[name].add(guard);\n });\n record[name].add(guard);\n}\n/**\n * Add a navigation guard that triggers whenever the component for the current\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\n * used in any component. The guard is removed when the component is unmounted.\n *\n * @param leaveGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteLeave(leaveGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\n}\n/**\n * Add a navigation guard that triggers whenever the current location is about\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n * component. The guard is removed when the component is unmounted.\n *\n * @param updateGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteUpdate(updateGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'updateGuards', updateGuard);\n}\nfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = fn => fn()) {\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\n const enterCallbackArray = record &&\n // name is defined if record is because of the function overload\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n return () => new Promise((resolve, reject) => {\n const next = (valid) => {\n if (valid === false) {\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\n from,\n to,\n }));\n }\n else if (valid instanceof Error) {\n reject(valid);\n }\n else if (isRouteLocation(valid)) {\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\n from: to,\n to: valid,\n }));\n }\n else {\n if (enterCallbackArray &&\n // since enterCallbackArray is truthy, both record and name also are\n record.enterCallbacks[name] === enterCallbackArray &&\n typeof valid === 'function') {\n enterCallbackArray.push(valid);\n }\n resolve();\n }\n };\n // wrapping with Promise.resolve allows it to work with both async and sync guards\n const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next));\n let guardCall = Promise.resolve(guardReturn);\n if (guard.length < 3)\n guardCall = guardCall.then(next);\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\n guardCall = guardCall.then(resolvedValue => {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n return Promise.reject(new Error('Invalid navigation guard'));\n }\n return resolvedValue;\n });\n }\n else if (guardReturn !== undefined) {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n reject(new Error('Invalid navigation guard'));\n return;\n }\n }\n }\n guardCall.catch(err => reject(err));\n });\n}\nfunction canOnlyBeCalledOnce(next, to, from) {\n let called = 0;\n return function () {\n if (called++ === 1)\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\n // @ts-expect-error: we put it in the original one because it's easier to check\n next._called = true;\n if (called === 1)\n next.apply(null, arguments);\n };\n}\nfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = fn => fn()) {\n const guards = [];\n for (const record of matched) {\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\n ` or \"children\" property.`);\n }\n for (const name in record.components) {\n let rawComponent = record.components[name];\n if ((process.env.NODE_ENV !== 'production')) {\n if (!rawComponent ||\n (typeof rawComponent !== 'object' &&\n typeof rawComponent !== 'function')) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\n ` a valid component. Received \"${String(rawComponent)}\".`);\n // throw to ensure we stop here but warn to ensure the message isn't\n // missed by the user\n throw new Error('Invalid route component');\n }\n else if ('then' in rawComponent) {\n // warn if user wrote import('/component.vue') instead of () =>\n // import('./component.vue')\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\n `Promise instead of a function that returns a Promise. Did you ` +\n `write \"import('./MyPage.vue')\" instead of ` +\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\n `production if not fixed.`);\n const promise = rawComponent;\n rawComponent = () => promise;\n }\n else if (rawComponent.__asyncLoader &&\n // warn only once per component\n !rawComponent.__warnedDefineAsync) {\n rawComponent.__warnedDefineAsync = true;\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\n `using \"defineAsyncComponent()\". ` +\n `Write \"() => import('./MyPage.vue')\" instead of ` +\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\n }\n }\n // skip update and leave guards if the route component is not mounted\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\n continue;\n if (isRouteComponent(rawComponent)) {\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = rawComponent.__vccOpts || rawComponent;\n const guard = options[guardType];\n guard &&\n guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n }\n else {\n // start requesting the chunk already\n let componentPromise = rawComponent();\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\n componentPromise = Promise.resolve(componentPromise);\n }\n guards.push(() => componentPromise.then(resolved => {\n if (!resolved)\n throw new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`);\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = resolvedComponent.__vccOpts || resolvedComponent;\n const guard = options[guardType];\n return (guard &&\n guardToPromiseFn(guard, to, from, record, name, runWithContext)());\n }));\n }\n }\n }\n return guards;\n}\n/**\n * Ensures a route is loaded, so it can be passed as o prop to ``.\n *\n * @param route - resolved route to load\n */\nfunction loadRouteLocation(route) {\n return route.matched.every(record => record.redirect)\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\n : Promise.all(route.matched.map(record => record.components &&\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\n const rawComponent = record.components[name];\n if (typeof rawComponent === 'function' &&\n !('displayName' in rawComponent)) {\n promises.push(rawComponent().then(resolved => {\n if (!resolved)\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n return;\n }));\n }\n return promises;\n }, [])))).then(() => route);\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\n// `isExactActive` behavior should go through an RFC\n/**\n * Returns the internal behavior of a {@link RouterLink} without the rendering part.\n *\n * @param props - a `to` location and an optional `replace` flag\n */\nfunction useLink(props) {\n const router = inject(routerKey);\n const currentRoute = inject(routeLocationKey);\n let hasPrevious = false;\n let previousTo = null;\n const route = computed(() => {\n const to = unref(props.to);\n if ((process.env.NODE_ENV !== 'production') && (!hasPrevious || to !== previousTo)) {\n if (!isRouteLocation(to)) {\n if (hasPrevious) {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- previous to:`, previousTo, `\\n- props:`, props);\n }\n else {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- props:`, props);\n }\n }\n previousTo = to;\n hasPrevious = true;\n }\n return router.resolve(to);\n });\n const activeRecordIndex = computed(() => {\n const { matched } = route.value;\n const { length } = matched;\n const routeMatched = matched[length - 1];\n const currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length)\n return -1;\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n if (index > -1)\n return index;\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[length - 2]);\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n getOriginalPath(routeMatched) === parentRecordPath &&\n // avoid comparing the child with its parent\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\n : index);\n });\n const isActive = computed(() => activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, route.value.params));\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, route.value.params));\n function navigate(e = {}) {\n if (guardEvent(e)) {\n const p = router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\n // avoid uncaught errors are they are logged anyway\n ).catch(noop);\n if (props.viewTransition &&\n typeof document !== 'undefined' &&\n 'startViewTransition' in document) {\n document.startViewTransition(() => p);\n }\n return p;\n }\n return Promise.resolve();\n }\n // devtools only\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n const instance = getCurrentInstance();\n if (instance) {\n const linkContextDevtools = {\n route: route.value,\n isActive: isActive.value,\n isExactActive: isExactActive.value,\n error: null,\n };\n // @ts-expect-error: this is internal\n instance.__vrl_devtools = instance.__vrl_devtools || [];\n // @ts-expect-error: this is internal\n instance.__vrl_devtools.push(linkContextDevtools);\n watchEffect(() => {\n linkContextDevtools.route = route.value;\n linkContextDevtools.isActive = isActive.value;\n linkContextDevtools.isExactActive = isExactActive.value;\n linkContextDevtools.error = isRouteLocation(unref(props.to))\n ? null\n : 'Invalid \"to\" value';\n }, { flush: 'post' });\n }\n }\n /**\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n */\n return {\n route,\n href: computed(() => route.value.href),\n isActive,\n isExactActive,\n navigate,\n };\n}\nfunction preferSingleVNode(vnodes) {\n return vnodes.length === 1 ? vnodes[0] : vnodes;\n}\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterLink',\n compatConfig: { MODE: 3 },\n props: {\n to: {\n type: [String, Object],\n required: true,\n },\n replace: Boolean,\n activeClass: String,\n // inactiveClass: String,\n exactActiveClass: String,\n custom: Boolean,\n ariaCurrentValue: {\n type: String,\n default: 'page',\n },\n },\n useLink,\n setup(props, { slots }) {\n const link = reactive(useLink(props));\n const { options } = inject(routerKey);\n const elClass = computed(() => ({\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\n // [getLinkClass(\n // props.inactiveClass,\n // options.linkInactiveClass,\n // 'router-link-inactive'\n // )]: !link.isExactActive,\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\n }));\n return () => {\n const children = slots.default && preferSingleVNode(slots.default(link));\n return props.custom\n ? children\n : h('a', {\n 'aria-current': link.isExactActive\n ? props.ariaCurrentValue\n : null,\n href: link.href,\n // this would override user added attrs but Vue will still add\n // the listener, so we end up triggering both\n onClick: link.navigate,\n class: elClass.value,\n }, children);\n };\n },\n});\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to render a link that triggers a navigation on click.\n */\nconst RouterLink = RouterLinkImpl;\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n return;\n // don't redirect when preventDefault called\n if (e.defaultPrevented)\n return;\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0)\n return;\n // don't redirect if `target=\"_blank\"`\n // @ts-expect-error getAttribute does exist\n if (e.currentTarget && e.currentTarget.getAttribute) {\n // @ts-expect-error getAttribute exists\n const target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target))\n return;\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault)\n e.preventDefault();\n return true;\n}\nfunction includesParams(outer, inner) {\n for (const key in inner) {\n const innerValue = inner[key];\n const outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue)\n return false;\n }\n else {\n if (!isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some((value, i) => value !== outerValue[i]))\n return false;\n }\n }\n return true;\n}\n/**\n * Get the original path value of a record by following its aliasOf\n * @param record\n */\nfunction getOriginalPath(record) {\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\n}\n/**\n * Utility class to get the active class based on defaults.\n * @param propClass\n * @param globalClass\n * @param defaultClass\n */\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\n ? propClass\n : globalClass != null\n ? globalClass\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterView',\n // #674 we manually inherit them\n inheritAttrs: false,\n props: {\n name: {\n type: String,\n default: 'default',\n },\n route: Object,\n },\n // Better compat for @vue/compat users\n // https://github.com/vuejs/router/issues/1315\n compatConfig: { MODE: 3 },\n setup(props, { attrs, slots }) {\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\n const injectedRoute = inject(routerViewLocationKey);\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\n const injectedDepth = inject(viewDepthKey, 0);\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\n // that are used to reuse the `path` property\n const depth = computed(() => {\n let initialDepth = unref(injectedDepth);\n const { matched } = routeToDisplay.value;\n let matchedRoute;\n while ((matchedRoute = matched[initialDepth]) &&\n !matchedRoute.components) {\n initialDepth++;\n }\n return initialDepth;\n });\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\n provide(viewDepthKey, computed(() => depth.value + 1));\n provide(matchedRouteKey, matchedRouteRef);\n provide(routerViewLocationKey, routeToDisplay);\n const viewRef = ref();\n // watch at the same time the component instance, the route record we are\n // rendering, and the name\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\n // copy reused instances\n if (to) {\n // this will update the instance for new instances as well as reused\n // instances when navigating to a new route\n to.instances[name] = instance;\n // the component instance is reused for a different route or name, so\n // we copy any saved update or leave guards. With async setup, the\n // mounting component will mount before the matchedRoute changes,\n // making instance === oldInstance, so we check if guards have been\n // added before. This works because we remove guards when\n // unmounting/deactivating components\n if (from && from !== to && instance && instance === oldInstance) {\n if (!to.leaveGuards.size) {\n to.leaveGuards = from.leaveGuards;\n }\n if (!to.updateGuards.size) {\n to.updateGuards = from.updateGuards;\n }\n }\n }\n // trigger beforeRouteEnter next callbacks\n if (instance &&\n to &&\n // if there is no instance but to and from are the same this might be\n // the first visit\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\n }\n }, { flush: 'post' });\n return () => {\n const route = routeToDisplay.value;\n // we need the value at the time we render because when we unmount, we\n // navigated to a different location so the value is different\n const currentName = props.name;\n const matchedRoute = matchedRouteRef.value;\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\n if (!ViewComponent) {\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\n }\n // props from route configuration\n const routePropsOption = matchedRoute.props[currentName];\n const routeProps = routePropsOption\n ? routePropsOption === true\n ? route.params\n : typeof routePropsOption === 'function'\n ? routePropsOption(route)\n : routePropsOption\n : null;\n const onVnodeUnmounted = vnode => {\n // remove the instance reference to prevent leak\n if (vnode.component.isUnmounted) {\n matchedRoute.instances[currentName] = null;\n }\n };\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\n onVnodeUnmounted,\n ref: viewRef,\n }));\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n isBrowser &&\n component.ref) {\n // TODO: can display if it's an alias, its props\n const info = {\n depth: depth.value,\n name: matchedRoute.name,\n path: matchedRoute.path,\n meta: matchedRoute.meta,\n };\n const internalInstances = isArray(component.ref)\n ? component.ref.map(r => r.i)\n : [component.ref.i];\n internalInstances.forEach(instance => {\n // @ts-expect-error\n instance.__vrv_devtools = info;\n });\n }\n return (\n // pass the vnode to the slot as a prop.\n // h and both accept vnodes\n normalizeSlot(slots.default, { Component: component, route }) ||\n component);\n };\n },\n});\nfunction normalizeSlot(slot, data) {\n if (!slot)\n return null;\n const slotContent = slot(data);\n return slotContent.length === 1 ? slotContent[0] : slotContent;\n}\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to display the current route the user is at.\n */\nconst RouterView = RouterViewImpl;\n// warn against deprecated usage with & \n// due to functional component being no longer eager in Vue 3\nfunction warnDeprecatedUsage() {\n const instance = getCurrentInstance();\n const parentName = instance.parent && instance.parent.type.name;\n const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n if (parentName &&\n (parentName === 'KeepAlive' || parentName.includes('Transition')) &&\n typeof parentSubTreeType === 'object' &&\n parentSubTreeType.name === 'RouterView') {\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\n warn(` can no longer be used directly inside or .\\n` +\n `Use slot props instead:\\n\\n` +\n `\\n` +\n ` <${comp}>\\n` +\n ` \\n` +\n ` \\n` +\n ``);\n }\n}\n\n/**\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\n *\n * @param routeLocation - routeLocation to format\n * @param tooltip - optional tooltip\n * @returns a copy of the routeLocation\n */\nfunction formatRouteLocation(routeLocation, tooltip) {\n const copy = assign({}, routeLocation, {\n // remove variables that can contain vue instances\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\n });\n return {\n _custom: {\n type: null,\n readOnly: true,\n display: routeLocation.fullPath,\n tooltip,\n value: copy,\n },\n };\n}\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\n// to support multiple router instances\nlet routerId = 0;\nfunction addDevtools(app, router, matcher) {\n // Take over router.beforeEach and afterEach\n // make sure we are not registering the devtool twice\n if (router.__hasDevtools)\n return;\n router.__hasDevtools = true;\n // increment to support multiple router instances\n const id = routerId++;\n setupDevtoolsPlugin({\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\n label: 'Vue Router',\n packageName: 'vue-router',\n homepage: 'https://router.vuejs.org',\n logo: 'https://router.vuejs.org/logo.png',\n componentStateTypes: ['Routing'],\n app,\n }, api => {\n if (typeof api.now !== 'function') {\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n // display state added by the router\n api.on.inspectComponent((payload, ctx) => {\n if (payload.instanceData) {\n payload.instanceData.state.push({\n type: 'Routing',\n key: '$route',\n editable: false,\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\n });\n }\n });\n // mark router-link as active and display tags on router views\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\n if (componentInstance.__vrv_devtools) {\n const info = componentInstance.__vrv_devtools;\n node.tags.push({\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\n textColor: 0,\n tooltip: 'This component is rendered by <router-view>',\n backgroundColor: PINK_500,\n });\n }\n // if multiple useLink are used\n if (isArray(componentInstance.__vrl_devtools)) {\n componentInstance.__devtoolsApi = api;\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\n let label = devtoolsData.route.path;\n let backgroundColor = ORANGE_400;\n let tooltip = '';\n let textColor = 0;\n if (devtoolsData.error) {\n label = devtoolsData.error;\n backgroundColor = RED_100;\n textColor = RED_700;\n }\n else if (devtoolsData.isExactActive) {\n backgroundColor = LIME_500;\n tooltip = 'This is exactly active';\n }\n else if (devtoolsData.isActive) {\n backgroundColor = BLUE_600;\n tooltip = 'This link is active';\n }\n node.tags.push({\n label,\n textColor,\n tooltip,\n backgroundColor,\n });\n });\n }\n });\n watch(router.currentRoute, () => {\n // refresh active state\n refreshRoutesView();\n api.notifyComponentUpdate();\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n const navigationsLayerId = 'router:navigations:' + id;\n api.addTimelineLayer({\n id: navigationsLayerId,\n label: `Router${id ? ' ' + id : ''} Navigations`,\n color: 0x40a8c4,\n });\n // const errorsLayerId = 'router:errors'\n // api.addTimelineLayer({\n // id: errorsLayerId,\n // label: 'Router Errors',\n // color: 0xea5455,\n // })\n router.onError((error, to) => {\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'Error during Navigation',\n subtitle: to.fullPath,\n logType: 'error',\n time: api.now(),\n data: { error },\n groupId: to.meta.__navigationId,\n },\n });\n });\n // attached to `meta` and used to group events\n let navigationId = 0;\n router.beforeEach((to, from) => {\n const data = {\n guard: formatDisplay('beforeEach'),\n from: formatRouteLocation(from, 'Current Location during this navigation'),\n to: formatRouteLocation(to, 'Target location'),\n };\n // Used to group navigations together, hide from devtools\n Object.defineProperty(to.meta, '__navigationId', {\n value: navigationId++,\n });\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n time: api.now(),\n title: 'Start of navigation',\n subtitle: to.fullPath,\n data,\n groupId: to.meta.__navigationId,\n },\n });\n });\n router.afterEach((to, from, failure) => {\n const data = {\n guard: formatDisplay('afterEach'),\n };\n if (failure) {\n data.failure = {\n _custom: {\n type: Error,\n readOnly: true,\n display: failure ? failure.message : '',\n tooltip: 'Navigation Failure',\n value: failure,\n },\n };\n data.status = formatDisplay('❌');\n }\n else {\n data.status = formatDisplay('✅');\n }\n // we set here to have the right order\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\n data.to = formatRouteLocation(to, 'Target location');\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'End of navigation',\n subtitle: to.fullPath,\n time: api.now(),\n data,\n logType: failure ? 'warning' : 'default',\n groupId: to.meta.__navigationId,\n },\n });\n });\n /**\n * Inspector of Existing routes\n */\n const routerInspectorId = 'router-inspector:' + id;\n api.addInspector({\n id: routerInspectorId,\n label: 'Routes' + (id ? ' ' + id : ''),\n icon: 'book',\n treeFilterPlaceholder: 'Search routes',\n });\n function refreshRoutesView() {\n // the routes view isn't active\n if (!activeRoutesPayload)\n return;\n const payload = activeRoutesPayload;\n // children routes will appear as nested\n let routes = matcher.getRoutes().filter(route => !route.parent ||\n // these routes have a parent with no component which will not appear in the view\n // therefore we still need to include them\n !route.parent.record.components);\n // reset match state to false\n routes.forEach(resetMatchStateOnRouteRecord);\n // apply a match state if there is a payload\n if (payload.filter) {\n routes = routes.filter(route => \n // save matches state based on the payload\n isRouteMatching(route, payload.filter.toLowerCase()));\n }\n // mark active routes\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\n }\n let activeRoutesPayload;\n api.on.getInspectorTree(payload => {\n activeRoutesPayload = payload;\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n refreshRoutesView();\n }\n });\n /**\n * Display information about the currently selected route record\n */\n api.on.getInspectorState(payload => {\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n const routes = matcher.getRoutes();\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\n if (route) {\n payload.state = {\n options: formatRouteRecordMatcherForStateInspector(route),\n };\n }\n }\n });\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n}\nfunction modifierForKey(key) {\n if (key.optional) {\n return key.repeatable ? '*' : '?';\n }\n else {\n return key.repeatable ? '+' : '';\n }\n}\nfunction formatRouteRecordMatcherForStateInspector(route) {\n const { record } = route;\n const fields = [\n { editable: false, key: 'path', value: record.path },\n ];\n if (record.name != null) {\n fields.push({\n editable: false,\n key: 'name',\n value: record.name,\n });\n }\n fields.push({ editable: false, key: 'regexp', value: route.re });\n if (route.keys.length) {\n fields.push({\n editable: false,\n key: 'keys',\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.keys\n .map(key => `${key.name}${modifierForKey(key)}`)\n .join(' '),\n tooltip: 'Param keys',\n value: route.keys,\n },\n },\n });\n }\n if (record.redirect != null) {\n fields.push({\n editable: false,\n key: 'redirect',\n value: record.redirect,\n });\n }\n if (route.alias.length) {\n fields.push({\n editable: false,\n key: 'aliases',\n value: route.alias.map(alias => alias.record.path),\n });\n }\n if (Object.keys(route.record.meta).length) {\n fields.push({\n editable: false,\n key: 'meta',\n value: route.record.meta,\n });\n }\n fields.push({\n key: 'score',\n editable: false,\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.score.map(score => score.join(', ')).join(' | '),\n tooltip: 'Score used to sort routes',\n value: route.score,\n },\n },\n });\n return fields;\n}\n/**\n * Extracted from tailwind palette\n */\nconst PINK_500 = 0xec4899;\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\n// const GRAY_100 = 0xf4f4f5\nconst DARK = 0x666666;\nconst RED_100 = 0xfee2e2;\nconst RED_700 = 0xb91c1c;\nfunction formatRouteRecordForInspector(route) {\n const tags = [];\n const { record } = route;\n if (record.name != null) {\n tags.push({\n label: String(record.name),\n textColor: 0,\n backgroundColor: CYAN_400,\n });\n }\n if (record.aliasOf) {\n tags.push({\n label: 'alias',\n textColor: 0,\n backgroundColor: ORANGE_400,\n });\n }\n if (route.__vd_match) {\n tags.push({\n label: 'matches',\n textColor: 0,\n backgroundColor: PINK_500,\n });\n }\n if (route.__vd_exactActive) {\n tags.push({\n label: 'exact',\n textColor: 0,\n backgroundColor: LIME_500,\n });\n }\n if (route.__vd_active) {\n tags.push({\n label: 'active',\n textColor: 0,\n backgroundColor: BLUE_600,\n });\n }\n if (record.redirect) {\n tags.push({\n label: typeof record.redirect === 'string'\n ? `redirect: ${record.redirect}`\n : 'redirects',\n textColor: 0xffffff,\n backgroundColor: DARK,\n });\n }\n // add an id to be able to select it. Using the `path` is not possible because\n // empty path children would collide with their parents\n let id = record.__vd_id;\n if (id == null) {\n id = String(routeRecordId++);\n record.__vd_id = id;\n }\n return {\n id,\n label: record.path,\n tags,\n children: route.children.map(formatRouteRecordForInspector),\n };\n}\n// incremental id for route records and inspector state\nlet routeRecordId = 0;\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\nfunction markRouteRecordActive(route, currentRoute) {\n // no route will be active if matched is empty\n // reset the matching state\n const isExactActive = currentRoute.matched.length &&\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\n route.__vd_exactActive = route.__vd_active = isExactActive;\n if (!isExactActive) {\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\n }\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\n}\nfunction resetMatchStateOnRouteRecord(route) {\n route.__vd_match = false;\n route.children.forEach(resetMatchStateOnRouteRecord);\n}\nfunction isRouteMatching(route, filter) {\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\n route.__vd_match = false;\n if (!found || found.length < 3) {\n return false;\n }\n // use a regexp without $ at the end to match nested routes better\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\n if (nonEndingRE.test(filter)) {\n // mark children as matches\n route.children.forEach(child => isRouteMatching(child, filter));\n // exception case: `/`\n if (route.record.path !== '/' || filter === '/') {\n route.__vd_match = route.re.test(filter);\n return true;\n }\n // hide the / route\n return false;\n }\n const path = route.record.path.toLowerCase();\n const decodedPath = decode(path);\n // also allow partial matching on the path\n if (!filter.startsWith('/') &&\n (decodedPath.includes(filter) || path.includes(filter)))\n return true;\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\n return true;\n if (route.record.name && String(route.record.name).includes(filter))\n return true;\n return route.children.some(child => isRouteMatching(child, filter));\n}\nfunction omit(obj, keys) {\n const ret = {};\n for (const key in obj) {\n if (!keys.includes(key)) {\n // @ts-expect-error\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n\n/**\n * Creates a Router instance that can be used by a Vue app.\n *\n * @param options - {@link RouterOptions}\n */\nfunction createRouter(options) {\n const matcher = createRouterMatcher(options.routes, options);\n const parseQuery$1 = options.parseQuery || parseQuery;\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n const routerHistory = options.history;\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\n ' https://router.vuejs.org/api/interfaces/RouterOptions.html#history');\n const beforeGuards = useCallbacks();\n const beforeResolveGuards = useCallbacks();\n const afterGuards = useCallbacks();\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\n let pendingLocation = START_LOCATION_NORMALIZED;\n // leave the scrollRestoration if no scrollBehavior is provided\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\n const encodeParams = applyToParams.bind(null, encodeParam);\n const decodeParams = \n // @ts-expect-error: intentionally avoid the type check\n applyToParams.bind(null, decode);\n function addRoute(parentOrRoute, route) {\n let parent;\n let record;\n if (isRouteName(parentOrRoute)) {\n parent = matcher.getRecordMatcher(parentOrRoute);\n if ((process.env.NODE_ENV !== 'production') && !parent) {\n warn(`Parent route \"${String(parentOrRoute)}\" not found when adding child route`, route);\n }\n record = route;\n }\n else {\n record = parentOrRoute;\n }\n return matcher.addRoute(record, parent);\n }\n function removeRoute(name) {\n const recordMatcher = matcher.getRecordMatcher(name);\n if (recordMatcher) {\n matcher.removeRoute(recordMatcher);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\n }\n }\n function getRoutes() {\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\n }\n function hasRoute(name) {\n return !!matcher.getRecordMatcher(name);\n }\n function resolve(rawLocation, currentLocation) {\n // const resolve: Router['resolve'] = (rawLocation: RouteLocationRaw, currentLocation) => {\n // const objectLocation = routerLocationAsObject(rawLocation)\n // we create a copy to modify it later\n currentLocation = assign({}, currentLocation || currentRoute.value);\n if (typeof rawLocation === 'string') {\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n const href = routerHistory.createHref(locationNormalized.fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//'))\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation}\"`);\n }\n }\n // locationNormalized is always a new object\n return assign(locationNormalized, matchedRoute, {\n params: decodeParams(matchedRoute.params),\n hash: decode(locationNormalized.hash),\n redirectedFrom: undefined,\n href,\n });\n }\n if ((process.env.NODE_ENV !== 'production') && !isRouteLocation(rawLocation)) {\n warn(`router.resolve() was passed an invalid location. This will fail in production.\\n- Location:`, rawLocation);\n return resolve({});\n }\n let matcherLocation;\n // path could be relative in object as well\n if (rawLocation.path != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n 'params' in rawLocation &&\n !('name' in rawLocation) &&\n // @ts-expect-error: the type is never\n Object.keys(rawLocation.params).length) {\n warn(`Path \"${rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\n }\n matcherLocation = assign({}, rawLocation, {\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\n });\n }\n else {\n // remove any nullish param\n const targetParams = assign({}, rawLocation.params);\n for (const key in targetParams) {\n if (targetParams[key] == null) {\n delete targetParams[key];\n }\n }\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\n matcherLocation = assign({}, rawLocation, {\n params: encodeParams(targetParams),\n });\n // current location params are decoded, we need to encode them in case the\n // matcher merges the params\n currentLocation.params = encodeParams(currentLocation.params);\n }\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n const hash = rawLocation.hash || '';\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\n }\n // the matcher might have merged current location params, so\n // we need to run the decoding again\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n hash: encodeHash(hash),\n path: matchedRoute.path,\n }));\n const href = routerHistory.createHref(fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//')) {\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n }\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation.path != null ? rawLocation.path : rawLocation}\"`);\n }\n }\n return assign({\n fullPath,\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\n // hash\n hash,\n query: \n // if the user is using a custom query lib like qs, we might have\n // nested objects, so we keep the query as is, meaning it can contain\n // numbers at `$route.query`, but at the point, the user will have to\n // use their own type anyway.\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\n stringifyQuery$1 === stringifyQuery\n ? normalizeQuery(rawLocation.query)\n : (rawLocation.query || {}),\n }, matchedRoute, {\n redirectedFrom: undefined,\n href,\n });\n }\n function locationAsObject(to) {\n return typeof to === 'string'\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\n : assign({}, to);\n }\n function checkCanceledNavigation(to, from) {\n if (pendingLocation !== to) {\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\n from,\n to,\n });\n }\n }\n function push(to) {\n return pushWithRedirect(to);\n }\n function replace(to) {\n return push(assign(locationAsObject(to), { replace: true }));\n }\n function handleRedirectRecord(to) {\n const lastMatched = to.matched[to.matched.length - 1];\n if (lastMatched && lastMatched.redirect) {\n const { redirect } = lastMatched;\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\n if (typeof newTargetLocation === 'string') {\n newTargetLocation =\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\n ? (newTargetLocation = locationAsObject(newTargetLocation))\n : // force empty params\n { path: newTargetLocation };\n // @ts-expect-error: force empty params when a string is passed to let\n // the router parse them again\n newTargetLocation.params = {};\n }\n if ((process.env.NODE_ENV !== 'production') &&\n newTargetLocation.path == null &&\n !('name' in newTargetLocation)) {\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\n throw new Error('Invalid redirect');\n }\n return assign({\n query: to.query,\n hash: to.hash,\n // avoid transferring params if the redirect has a path\n params: newTargetLocation.path != null ? {} : to.params,\n }, newTargetLocation);\n }\n }\n function pushWithRedirect(to, redirectedFrom) {\n const targetLocation = (pendingLocation = resolve(to));\n const from = currentRoute.value;\n const data = to.state;\n const force = to.force;\n // to could be a string where `replace` is a function\n const replace = to.replace === true;\n const shouldRedirect = handleRedirectRecord(targetLocation);\n if (shouldRedirect)\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n state: typeof shouldRedirect === 'object'\n ? assign({}, data, shouldRedirect.state)\n : data,\n force,\n replace,\n }), \n // keep original redirectedFrom if it exists\n redirectedFrom || targetLocation);\n // if it was a redirect we already called `pushWithRedirect` above\n const toLocation = targetLocation;\n toLocation.redirectedFrom = redirectedFrom;\n let failure;\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\n // trigger scroll to allow scrolling to the same anchor\n handleScroll(from, from, \n // this is a push, the only way for it to be triggered from a\n // history.listen is with a redirect, which makes it become a push\n true, \n // This cannot be the first navigation because the initial location\n // cannot be manually navigated to\n false);\n }\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\n .catch((error) => isNavigationFailure(error)\n ? // navigation redirects still mark the router as ready\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\n ? error\n : markAsReady(error) // also returns the error\n : // reject any unknown error\n triggerError(error, toLocation, from))\n .then((failure) => {\n if (failure) {\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n if ((process.env.NODE_ENV !== 'production') &&\n // we are redirecting to the same location we were already at\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\n // and we have done it a couple of times\n redirectedFrom &&\n // @ts-expect-error: added only in dev\n (redirectedFrom._count = redirectedFrom._count\n ? // @ts-expect-error\n redirectedFrom._count + 1\n : 1) > 30) {\n warn(`Detected a possibly infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow.\\n Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`);\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\n }\n return pushWithRedirect(\n // keep options\n assign({\n // preserve an existing replacement but allow the redirect to override it\n replace,\n }, locationAsObject(failure.to), {\n state: typeof failure.to === 'object'\n ? assign({}, data, failure.to.state)\n : data,\n force,\n }), \n // preserve the original redirectedFrom if any\n redirectedFrom || toLocation);\n }\n }\n else {\n // if we fail we don't finalize the navigation\n failure = finalizeNavigation(toLocation, from, true, replace, data);\n }\n triggerAfterEach(toLocation, from, failure);\n return failure;\n });\n }\n /**\n * Helper to reject and skip all navigation guards if a new navigation happened\n * @param to\n * @param from\n */\n function checkCanceledNavigationAndReject(to, from) {\n const error = checkCanceledNavigation(to, from);\n return error ? Promise.reject(error) : Promise.resolve();\n }\n function runWithContext(fn) {\n const app = installedApps.values().next().value;\n // support Vue < 3.3\n return app && typeof app.runWithContext === 'function'\n ? app.runWithContext(fn)\n : fn();\n }\n // TODO: refactor the whole before guards by internally using router.beforeEach\n function navigate(to, from) {\n let guards;\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n // all components here have been resolved once because we are leaving\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\n // leavingRecords is already reversed\n for (const record of leavingRecords) {\n record.leaveGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeRouteLeave guards\n return (runGuardQueue(guards)\n .then(() => {\n // check global guards beforeEach\n guards = [];\n for (const guard of beforeGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n .then(() => {\n // check in components beforeRouteUpdate\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\n for (const record of updatingRecords) {\n record.updateGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check the route beforeEnter\n guards = [];\n for (const record of enteringRecords) {\n // do not trigger beforeEnter on reused views\n if (record.beforeEnter) {\n if (isArray(record.beforeEnter)) {\n for (const beforeEnter of record.beforeEnter)\n guards.push(guardToPromiseFn(beforeEnter, to, from));\n }\n else {\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n }\n }\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise\n // clear existing enterCallbacks, these are added by extractComponentsGuards\n to.matched.forEach(record => (record.enterCallbacks = {}));\n // check in-component beforeRouteEnter\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from, runWithContext);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check global guards beforeResolve\n guards = [];\n for (const guard of beforeResolveGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n // catch any navigation canceled\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\n ? err\n : Promise.reject(err)));\n }\n function triggerAfterEach(to, from, failure) {\n // navigation is confirmed, call afterGuards\n // TODO: wrap with error handlers\n afterGuards\n .list()\n .forEach(guard => runWithContext(() => guard(to, from, failure)));\n }\n /**\n * - Cleans up any navigation guards\n * - Changes the url if necessary\n * - Calls the scrollBehavior\n */\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\n // a more recent navigation took place\n const error = checkCanceledNavigation(toLocation, from);\n if (error)\n return error;\n // only consider as push if it's not the first navigation\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\n const state = !isBrowser ? {} : history.state;\n // change URL only if the user did a push/replace and if it's not the initial navigation because\n // it's just reflecting the url\n if (isPush) {\n // on the initial navigation, we want to reuse the scroll position from\n // history state if it exists\n if (replace || isFirstNavigation)\n routerHistory.replace(toLocation.fullPath, assign({\n scroll: isFirstNavigation && state && state.scroll,\n }, data));\n else\n routerHistory.push(toLocation.fullPath, data);\n }\n // accept current navigation\n currentRoute.value = toLocation;\n handleScroll(toLocation, from, isPush, isFirstNavigation);\n markAsReady();\n }\n let removeHistoryListener;\n // attach listener to history to trigger navigations\n function setupListeners() {\n // avoid setting up listeners twice due to an invalid first navigation\n if (removeHistoryListener)\n return;\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\n if (!router.listening)\n return;\n // cannot be a redirect route because it was in history\n const toLocation = resolve(to);\n // due to dynamic routing, and to hash history with manual navigation\n // (manually changing the url or calling history.hash = '#/somewhere'),\n // there could be a redirect record in history\n const shouldRedirect = handleRedirectRecord(toLocation);\n if (shouldRedirect) {\n pushWithRedirect(assign(shouldRedirect, { replace: true, force: true }), toLocation).catch(noop);\n return;\n }\n pendingLocation = toLocation;\n const from = currentRoute.value;\n // TODO: should be moved to web history?\n if (isBrowser) {\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\n }\n navigate(toLocation, from)\n .catch((error) => {\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n return error;\n }\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\n // false) but this is bug prone as we have no way to wait the\n // navigation to be finished before calling pushWithRedirect. Using\n // a setTimeout of 16ms seems to work but there is no guarantee for\n // it to work on every browser. So instead we do not restore the\n // history entry and trigger a new navigation as requested by the\n // navigation guard.\n // the error is already handled by router.push we just want to avoid\n // logging the error\n pushWithRedirect(assign(locationAsObject(error.to), {\n force: true,\n }), toLocation\n // avoid an uncaught rejection, let push call triggerError\n )\n .then(failure => {\n // manual change in hash history #916 ending up in the URL not\n // changing, but it was changed by the manual url change, so we\n // need to manually change it ourselves\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\n !info.delta &&\n info.type === NavigationType.pop) {\n routerHistory.go(-1, false);\n }\n })\n .catch(noop);\n // avoid the then branch\n return Promise.reject();\n }\n // do not restore history on unknown direction\n if (info.delta) {\n routerHistory.go(-info.delta, false);\n }\n // unrecognized error, transfer to the global handler\n return triggerError(error, toLocation, from);\n })\n .then((failure) => {\n failure =\n failure ||\n finalizeNavigation(\n // after navigation, all matched components are resolved\n toLocation, from, false);\n // revert the navigation\n if (failure) {\n if (info.delta &&\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\n // entry while a different route is displayed\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n routerHistory.go(-info.delta, false);\n }\n else if (info.type === NavigationType.pop &&\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\n // manual change in hash history #916\n // it's like a push but lacks the information of the direction\n routerHistory.go(-1, false);\n }\n }\n triggerAfterEach(toLocation, from, failure);\n })\n // avoid warnings in the console about uncaught rejections, they are logged by triggerErrors\n .catch(noop);\n });\n }\n // Initialization and Errors\n let readyHandlers = useCallbacks();\n let errorListeners = useCallbacks();\n let ready;\n /**\n * Trigger errorListeners added via onError and throws the error as well\n *\n * @param error - error to throw\n * @param to - location we were navigating to when the error happened\n * @param from - location we were navigating from when the error happened\n * @returns the error as a rejected promise\n */\n function triggerError(error, to, from) {\n markAsReady(error);\n const list = errorListeners.list();\n if (list.length) {\n list.forEach(handler => handler(error, to, from));\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('uncaught error during route navigation:');\n }\n console.error(error);\n }\n // reject the error no matter there were error listeners or not\n return Promise.reject(error);\n }\n function isReady() {\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\n return Promise.resolve();\n return new Promise((resolve, reject) => {\n readyHandlers.add([resolve, reject]);\n });\n }\n function markAsReady(err) {\n if (!ready) {\n // still not ready if an error happened\n ready = !err;\n setupListeners();\n readyHandlers\n .list()\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\n readyHandlers.reset();\n }\n return err;\n }\n // Scroll behavior\n function handleScroll(to, from, isPush, isFirstNavigation) {\n const { scrollBehavior } = options;\n if (!isBrowser || !scrollBehavior)\n return Promise.resolve();\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\n ((isFirstNavigation || !isPush) &&\n history.state &&\n history.state.scroll) ||\n null;\n return nextTick()\n .then(() => scrollBehavior(to, from, scrollPosition))\n .then(position => position && scrollToPosition(position))\n .catch(err => triggerError(err, to, from));\n }\n const go = (delta) => routerHistory.go(delta);\n let started;\n const installedApps = new Set();\n const router = {\n currentRoute,\n listening: true,\n addRoute,\n removeRoute,\n clearRoutes: matcher.clearRoutes,\n hasRoute,\n getRoutes,\n resolve,\n options,\n push,\n replace,\n go,\n back: () => go(-1),\n forward: () => go(1),\n beforeEach: beforeGuards.add,\n beforeResolve: beforeResolveGuards.add,\n afterEach: afterGuards.add,\n onError: errorListeners.add,\n isReady,\n install(app) {\n const router = this;\n app.component('RouterLink', RouterLink);\n app.component('RouterView', RouterView);\n app.config.globalProperties.$router = router;\n Object.defineProperty(app.config.globalProperties, '$route', {\n enumerable: true,\n get: () => unref(currentRoute),\n });\n // this initial navigation is only necessary on client, on server it doesn't\n // make sense because it will create an extra unnecessary navigation and could\n // lead to problems\n if (isBrowser &&\n // used for the initial navigation client side to avoid pushing\n // multiple times when the router is used in multiple apps\n !started &&\n currentRoute.value === START_LOCATION_NORMALIZED) {\n // see above\n started = true;\n push(routerHistory.location).catch(err => {\n if ((process.env.NODE_ENV !== 'production'))\n warn('Unexpected error when starting the router:', err);\n });\n }\n const reactiveRoute = {};\n for (const key in START_LOCATION_NORMALIZED) {\n Object.defineProperty(reactiveRoute, key, {\n get: () => currentRoute.value[key],\n enumerable: true,\n });\n }\n app.provide(routerKey, router);\n app.provide(routeLocationKey, shallowReactive(reactiveRoute));\n app.provide(routerViewLocationKey, currentRoute);\n const unmountApp = app.unmount;\n installedApps.add(app);\n app.unmount = function () {\n installedApps.delete(app);\n // the router is not attached to an app anymore\n if (installedApps.size < 1) {\n // invalidate the current navigation\n pendingLocation = START_LOCATION_NORMALIZED;\n removeHistoryListener && removeHistoryListener();\n removeHistoryListener = null;\n currentRoute.value = START_LOCATION_NORMALIZED;\n started = false;\n ready = false;\n }\n unmountApp();\n };\n // TODO: this probably needs to be updated so it can be used by vue-termui\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n addDevtools(app, router, matcher);\n }\n },\n };\n // TODO: type this as NavigationGuardReturn or similar instead of any\n function runGuardQueue(guards) {\n return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n }\n return router;\n}\nfunction extractChangingRecords(to, from) {\n const leavingRecords = [];\n const updatingRecords = [];\n const enteringRecords = [];\n const len = Math.max(from.matched.length, to.matched.length);\n for (let i = 0; i < len; i++) {\n const recordFrom = from.matched[i];\n if (recordFrom) {\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\n updatingRecords.push(recordFrom);\n else\n leavingRecords.push(recordFrom);\n }\n const recordTo = to.matched[i];\n if (recordTo) {\n // the type doesn't matter because we are comparing per reference\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\n enteringRecords.push(recordTo);\n }\n }\n }\n return [leavingRecords, updatingRecords, enteringRecords];\n}\n\n/**\n * Returns the router instance. Equivalent to using `$router` inside\n * templates.\n */\nfunction useRouter() {\n return inject(routerKey);\n}\n/**\n * Returns the current route location. Equivalent to using `$route` inside\n * templates.\n */\nfunction useRoute(_name) {\n return inject(routeLocationKey);\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","// Types\n\nexport const VMenuSymbol = Symbol.for('vuetify:v-menu');\n//# sourceMappingURL=shared.mjs.map","// Types\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport(point, offset) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y\n };\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement(point, offset) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y\n };\n}\n\n/** Get the difference between two points */\nexport function getOffset(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint(anchor, box) {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const {\n side,\n align\n } = anchor;\n const x = align === 'left' ? 0 : align === 'center' ? box.width / 2 : align === 'right' ? box.width : align;\n const y = side === 'top' ? 0 : side === 'bottom' ? box.height : side;\n return elementToViewport({\n x,\n y\n }, box);\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const {\n side,\n align\n } = anchor;\n const x = side === 'left' ? 0 : side === 'right' ? box.width : side;\n const y = align === 'top' ? 0 : align === 'center' ? box.height / 2 : align === 'bottom' ? box.height : align;\n return elementToViewport({\n x,\n y\n }, box);\n }\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2\n }, box);\n}\n//# sourceMappingURL=point.mjs.map","export function isFixedPosition(el) {\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n return true;\n }\n el = el.offsetParent;\n }\n return false;\n}\n//# sourceMappingURL=isFixedPosition.mjs.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue';\nimport { anchorToPoint, getOffset } from \"./util/point.mjs\";\nimport { clamp, consoleError, convertToUnit, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from \"../../util/index.mjs\";\nimport { Box, getOverflow, getTargetBox } from \"../../util/box.mjs\"; // Types\nconst locationStrategies = {\n static: staticLocationStrategy,\n // specific viewport position, usually centered\n connected: connectedLocationStrategy // connected to a certain element\n};\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function],\n default: 'static',\n validator: val => typeof val === 'function' || val in locationStrategies\n },\n location: {\n type: String,\n default: 'bottom'\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: [Number, String, Array]\n}, 'VOverlay-location-strategies');\nexport function useLocationStrategies(props, data) {\n const contentStyles = ref({});\n const updateLocation = ref();\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset);\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n updateLocation.value = undefined;\n });\n window.addEventListener('resize', onResize, {\n passive: true\n });\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation;\n }\n });\n }\n function onResize(e) {\n updateLocation.value?.(e);\n }\n return {\n contentStyles,\n updateLocation\n };\n}\nfunction staticLocationStrategy() {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize(el, isRtl) {\n // const scrollables = new Map()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el);\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0);\n } else {\n contentBox.x -= parseFloat(el.style.left || 0);\n }\n contentBox.y -= parseFloat(el.style.top || 0);\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox;\n}\nfunction connectedLocationStrategy(data, props, contentStyles) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value);\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0\n });\n }\n const {\n preferredAnchor,\n preferredOrigin\n } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value);\n const parsedOrigin = props.origin === 'overlap' ? parsedAnchor : props.origin === 'auto' ? flipSide(parsedAnchor) : parseAnchor(props.origin, data.isRtl.value);\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin)\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin\n };\n }\n });\n const [minWidth, minHeight, maxWidth, maxHeight] = ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'].map(key => {\n return computed(() => {\n const val = parseFloat(props[key]);\n return isNaN(val) ? Infinity : val;\n });\n });\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];\n });\n let observe = false;\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation();\n });\n watch([data.target, data.contentEl], (_ref, _ref2) => {\n let [newTarget, newContentEl] = _ref;\n let [oldTarget, oldContentEl] = _ref2;\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget);\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget);\n if (oldContentEl) observer.unobserve(oldContentEl);\n if (newContentEl) observer.observe(newContentEl);\n }, {\n immediate: true\n });\n onScopeDispose(() => {\n observer.disconnect();\n });\n\n // eslint-disable-next-line max-statements\n function updateLocation() {\n observe = false;\n requestAnimationFrame(() => observe = true);\n if (!data.target.value || !data.contentEl.value) return;\n const targetBox = getTargetBox(data.target.value);\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);\n const scrollParents = getScrollParents(data.contentEl.value);\n const viewportMargin = 12;\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement);\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);\n }\n }\n const viewport = scrollParents.reduce((box, el) => {\n const rect = el.getBoundingClientRect();\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight\n });\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top)\n });\n }\n return scrollBox;\n }, undefined);\n viewport.x += viewportMargin;\n viewport.y += viewportMargin;\n viewport.width -= viewportMargin * 2;\n viewport.height -= viewportMargin * 2;\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value\n };\n function checkOverflow(_placement) {\n const box = new Box(contentBox);\n const targetPoint = anchorToPoint(_placement.anchor, targetBox);\n const contentPoint = anchorToPoint(_placement.origin, box);\n let {\n x,\n y\n } = getOffset(targetPoint, contentPoint);\n switch (_placement.anchor.side) {\n case 'top':\n y -= offset.value[0];\n break;\n case 'bottom':\n y += offset.value[0];\n break;\n case 'left':\n x -= offset.value[0];\n break;\n case 'right':\n x += offset.value[0];\n break;\n }\n switch (_placement.anchor.align) {\n case 'top':\n y -= offset.value[1];\n break;\n case 'bottom':\n y += offset.value[1];\n break;\n case 'left':\n x -= offset.value[1];\n break;\n case 'right':\n x += offset.value[1];\n break;\n }\n box.x += x;\n box.y += y;\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n const overflows = getOverflow(box, viewport);\n return {\n overflows,\n x,\n y\n };\n }\n let x = 0;\n let y = 0;\n const available = {\n x: 0,\n y: 0\n };\n const flipped = {\n x: false,\n y: false\n };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy');\n break;\n }\n const {\n x: _x,\n y: _y,\n overflows\n } = checkOverflow(placement);\n x += _x;\n y += _y;\n contentBox.x += _x;\n contentBox.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n let reset = false;\n ['x', 'y'].forEach(key => {\n if (key === 'x' && hasOverflowX && !flipped.x || key === 'y' && hasOverflowY && !flipped.y) {\n const newPlacement = {\n anchor: {\n ...placement.anchor\n },\n origin: {\n ...placement.origin\n }\n };\n const flip = key === 'x' ? axis === 'y' ? flipAlign : flipSide : axis === 'y' ? flipSide : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const {\n overflows: newOverflows\n } = checkOverflow(newPlacement);\n if (newOverflows[key].before <= overflows[key].before && newOverflows[key].after <= overflows[key].after || newOverflows[key].before + newOverflows[key].after < (overflows[key].before + overflows[key].after) / 2) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentBox.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentBox.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n break;\n }\n const axis = getAxis(placement.anchor);\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))\n });\n return {\n available,\n contentBox\n };\n }\n watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());\n nextTick(() => {\n const result = updateLocation();\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return;\n const {\n available,\n contentBox\n } = result;\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation();\n requestAnimationFrame(() => {\n updateLocation();\n });\n });\n }\n });\n return {\n updateLocation\n };\n}\nfunction pixelRound(val) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio;\n}\nfunction pixelCeil(val) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio;\n}\n//# sourceMappingURL=locationStrategies.mjs.map","let clean = true;\nconst frames = [];\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame(cb) {\n if (!clean || frames.length) {\n frames.push(cb);\n run();\n } else {\n clean = false;\n cb();\n run();\n }\n}\nlet raf = -1;\nfunction run() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n const frame = frames.shift();\n if (frame) frame();\n if (frames.length) run();else clean = true;\n });\n}\n//# sourceMappingURL=requestNewFrame.mjs.map","// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue';\nimport { requestNewFrame } from \"./requestNewFrame.mjs\";\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from \"../../util/index.mjs\"; // Types\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy\n};\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function],\n default: 'block',\n validator: val => typeof val === 'function' || val in scrollStrategies\n }\n}, 'VOverlay-scroll-strategies');\nexport function useScrollStrategies(props, data) {\n if (!IN_BROWSER) return;\n let scope;\n watchEffect(async () => {\n scope?.stop();\n if (!(data.isActive.value && props.scrollStrategy)) return;\n scope = effectScope();\n await new Promise(resolve => setTimeout(resolve));\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope);\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope);\n }\n });\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n}\nfunction closeScrollStrategy(data) {\n function onScroll(e) {\n data.isActive.value = false;\n }\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll);\n}\nfunction blockScrollStrategy(data, props) {\n const offsetParent = data.root.value?.offsetParent;\n const scrollElements = [...new Set([...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);\n if (scrollableParent) {\n data.root.value.classList.add('v-overlay--scroll-blocked');\n }\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft));\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop));\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));\n }\n el.classList.add('v-overlay-scroll-blocked');\n });\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));\n const scrollBehavior = el.style.scrollBehavior;\n el.style.scrollBehavior = 'auto';\n el.style.removeProperty('--v-body-scroll-x');\n el.style.removeProperty('--v-body-scroll-y');\n el.style.removeProperty('--v-scrollbar-offset');\n el.classList.remove('v-overlay-scroll-blocked');\n el.scrollLeft = -x;\n el.scrollTop = -y;\n el.style.scrollBehavior = scrollBehavior;\n });\n if (scrollableParent) {\n data.root.value.classList.remove('v-overlay--scroll-blocked');\n }\n });\n}\nfunction repositionScrollStrategy(data, props, scope) {\n let slow = false;\n let raf = -1;\n let ric = -1;\n function update(e) {\n requestNewFrame(() => {\n const start = performance.now();\n data.updateLocation.value?.(e);\n const time = performance.now() - start;\n slow = time / (1000 / 60) > 2;\n });\n }\n ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e);\n });\n });\n } else {\n update(e);\n }\n });\n });\n });\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\n cancelAnimationFrame(raf);\n });\n}\n\n/** @private */\nfunction bindScroll(el, onScroll) {\n const scrollElements = [document, ...getScrollParents(el)];\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll);\n });\n });\n}\n//# sourceMappingURL=scrollStrategies.mjs.map","// Utilities\nimport { eventName, isOn } from \"./helpers.mjs\";\nconst handlers = new WeakMap();\nexport function bindProps(el, props) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k);\n const handler = handlers.get(el);\n if (props[k] == null) {\n handler?.forEach(v => {\n const [n, fn] = v;\n if (n === name) {\n el.removeEventListener(name, fn);\n handler.delete(v);\n }\n });\n } else if (!handler || ![...handler]?.some(v => v[0] === name && v[1] === props[k])) {\n el.addEventListener(name, props[k]);\n const _handler = handler || new Set();\n _handler.add([name, props[k]]);\n if (!handlers.has(el)) handlers.set(el, _handler);\n }\n } else {\n if (props[k] == null) {\n el.removeAttribute(k);\n } else {\n el.setAttribute(k, props[k]);\n }\n }\n });\n}\nexport function unbindProps(el, props) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k);\n const handler = handlers.get(el);\n handler?.forEach(v => {\n const [n, fn] = v;\n if (n === name) {\n el.removeEventListener(name, fn);\n handler.delete(v);\n }\n });\n } else {\n el.removeAttribute(k);\n }\n });\n}\n//# sourceMappingURL=bindProps.mjs.map","// Components\nimport { VMenuSymbol } from \"../VMenu/shared.mjs\"; // Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\"; // Utilities\nimport { computed, effectScope, inject, mergeProps, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';\nimport { bindProps, getCurrentInstance, IN_BROWSER, matchesSelector, propsFactory, templateRef, unbindProps } from \"../../util/index.mjs\"; // Types\nexport const makeActivatorProps = propsFactory({\n target: [String, Object],\n activator: [String, Object],\n activatorProps: {\n type: Object,\n default: () => ({})\n },\n openOnClick: {\n type: Boolean,\n default: undefined\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined\n },\n closeOnContentClick: Boolean,\n ...makeDelayProps()\n}, 'VOverlay-activator');\nexport function useActivator(props, _ref) {\n let {\n isActive,\n isTop,\n contentEl\n } = _ref;\n const vm = getCurrentInstance('useActivator');\n const activatorEl = ref();\n let isHovered = false;\n let isFocused = false;\n let firstEnter = true;\n const openOnFocus = computed(() => props.openOnFocus || props.openOnFocus == null && props.openOnHover);\n const openOnClick = computed(() => props.openOnClick || props.openOnClick == null && !props.openOnHover && !openOnFocus.value);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {\n if (isActive.value !== value) {\n firstEnter = true;\n }\n isActive.value = value;\n }\n });\n const cursorTarget = ref();\n const availableEvents = {\n onClick: e => {\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY];\n }\n isActive.value = !isActive.value;\n },\n onMouseenter: e => {\n if (e.sourceCapabilities?.firesTouchEvents) return;\n isHovered = true;\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onMouseleave: e => {\n isHovered = false;\n runCloseDelay();\n },\n onFocus: e => {\n if (matchesSelector(e.target, ':focus-visible') === false) return;\n isFocused = true;\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onBlur: e => {\n isFocused = false;\n e.stopPropagation();\n runCloseDelay();\n }\n };\n const activatorEvents = computed(() => {\n const events = {};\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick;\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter;\n events.onMouseleave = availableEvents.onMouseleave;\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus;\n events.onBlur = availableEvents.onBlur;\n }\n return events;\n });\n const contentEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true;\n runOpenDelay();\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true;\n runOpenDelay();\n };\n events.onFocusout = () => {\n isFocused = false;\n runCloseDelay();\n };\n }\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null);\n events.onClick = () => {\n isActive.value = false;\n menu?.closeParents();\n };\n }\n return events;\n });\n const scrimEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true;\n firstEnter = false;\n runOpenDelay();\n }\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n return events;\n });\n watch(isTop, val => {\n if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false;\n }\n });\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined;\n });\n }\n }, {\n flush: 'post'\n });\n const activatorRef = templateRef();\n watchEffect(() => {\n if (!activatorRef.value) return;\n nextTick(() => {\n activatorEl.value = activatorRef.el;\n });\n });\n const targetRef = templateRef();\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;\n if (targetRef.value) return targetRef.el;\n return getTarget(props.target, vm) || activatorEl.value;\n });\n const targetEl = computed(() => {\n return Array.isArray(target.value) ? undefined : target.value;\n });\n let scope;\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope();\n scope.run(() => {\n _useActivator(props, vm, {\n activatorEl,\n activatorEvents\n });\n });\n } else if (scope) {\n scope.stop();\n }\n }, {\n flush: 'post',\n immediate: true\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n return {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n };\n}\nfunction _useActivator(props, vm, _ref2) {\n let {\n activatorEl,\n activatorEvents\n } = _ref2;\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal);\n activator && unbindActivatorProps(activator);\n }\n if (val) {\n nextTick(() => bindActivatorProps());\n }\n }, {\n immediate: true\n });\n watch(() => props.activatorProps, () => {\n bindActivatorProps();\n });\n onScopeDispose(() => {\n unbindActivatorProps();\n });\n function bindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n bindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function unbindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n unbindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function getActivator() {\n let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;\n const activator = getTarget(selector, vm);\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined;\n return activatorEl.value;\n }\n}\nfunction getTarget(selector, vm) {\n if (!selector) return;\n let target;\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode;\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode;\n }\n target = el;\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector);\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el;\n } else {\n // HTMLElement | Element | [x, y]\n target = selector;\n }\n return target;\n}\n//# sourceMappingURL=useActivator.mjs.map","// Composables\nimport { useToggleScope } from \"./toggleScope.mjs\"; // Utilities\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, watchEffect } from 'vue';\nimport { getCurrentInstance } from \"../util/index.mjs\"; // Types\nconst StackSymbol = Symbol.for('vuetify:stack');\nconst globalStack = reactive([]);\nexport function useStack(isActive, zIndex, disableGlobalStack) {\n const vm = getCurrentInstance('useStack');\n const createStackEntry = !disableGlobalStack;\n const parent = inject(StackSymbol, undefined);\n const stack = reactive({\n activeChildren: new Set()\n });\n provide(StackSymbol, stack);\n const _zIndex = shallowRef(+zIndex.value);\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1];\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value]);\n }\n parent?.activeChildren.add(vm.uid);\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid);\n globalStack.splice(idx, 1);\n }\n parent?.activeChildren.delete(vm.uid);\n });\n });\n const globalTop = shallowRef(true);\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid;\n setTimeout(() => globalTop.value = _isTop);\n });\n }\n const localTop = computed(() => !stack.activeChildren.size);\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({\n zIndex: _zIndex.value\n }))\n };\n}\n//# sourceMappingURL=stack.mjs.map","// Utilities\nimport { computed, warn } from 'vue';\nimport { IN_BROWSER } from \"../util/index.mjs\";\nexport function useTeleport(target) {\n const teleportTarget = computed(() => {\n const _target = target();\n if (_target === true || !IN_BROWSER) return undefined;\n const targetElement = _target === false ? document.body : typeof _target === 'string' ? document.querySelector(_target) : _target;\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`);\n return undefined;\n }\n let container = [...targetElement.children].find(el => el.matches('.v-overlay-container'));\n if (!container) {\n container = document.createElement('div');\n container.className = 'v-overlay-container';\n targetElement.appendChild(container);\n }\n return container;\n });\n return {\n teleportTarget\n };\n}\n//# sourceMappingURL=teleport.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, vShow as _vShow, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VOverlay.css\";\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from \"./locationStrategies.mjs\";\nimport { makeScrollStrategyProps, useScrollStrategies } from \"./scrollStrategies.mjs\";\nimport { makeActivatorProps, useActivator } from \"./useActivator.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useHydration } from \"../../composables/hydration.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useBackButton, useRouter } from \"../../composables/router.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { useStack } from \"../../composables/stack.mjs\";\nimport { useTeleport } from \"../../composables/teleport.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport { ClickOutside } from \"../../directives/click-outside/index.mjs\"; // Utilities\nimport { computed, mergeProps, onBeforeUnmount, ref, Teleport, toRef, Transition, watch } from 'vue';\nimport { animate, convertToUnit, genericComponent, getCurrentInstance, getScrollParent, IN_BROWSER, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nfunction Scrim(props) {\n const {\n modelValue,\n color,\n ...rest\n } = props;\n return _createVNode(Transition, {\n \"name\": \"fade-transition\",\n \"appear\": true\n }, {\n default: () => [props.modelValue && _createVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay__scrim', props.color.backgroundColorClasses.value],\n \"style\": props.color.backgroundColorStyles.value\n }, rest), null)]\n });\n}\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object],\n closeOnBack: {\n type: Boolean,\n default: true\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true\n },\n zIndex: {\n type: [Number, String],\n default: 2000\n },\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps()\n}, 'VOverlay');\nexport const VOverlay = genericComponent()({\n name: 'VOverlay',\n directives: {\n ClickOutside\n },\n inheritAttrs: false,\n props: {\n _disableGlobalStack: Boolean,\n ...makeVOverlayProps()\n },\n emits: {\n 'click:outside': e => true,\n 'update:modelValue': value => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n slots,\n attrs,\n emit\n } = _ref;\n const vm = getCurrentInstance('VOverlay');\n const root = ref();\n const scrimEl = ref();\n const contentEl = ref();\n const model = useProxiedModel(props, 'modelValue');\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v;\n }\n });\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses,\n isRtl\n } = useRtl();\n const {\n hasContent,\n onAfterLeave: _onAfterLeave\n } = useLazy(props, isActive);\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n }));\n const {\n globalTop,\n localTop,\n stackStyles\n } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack);\n const {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n } = useActivator(props, {\n isActive,\n isTop: localTop,\n contentEl\n });\n const {\n teleportTarget\n } = useTeleport(() => {\n const target = props.attach || props.contained;\n if (target) return target;\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode();\n if (rootNode instanceof ShadowRoot) return rootNode;\n return false;\n });\n const {\n dimensionStyles\n } = useDimension(props);\n const isMounted = useHydration();\n const {\n scopeId\n } = useScopeId();\n watch(() => props.disabled, v => {\n if (v) isActive.value = false;\n });\n const {\n contentStyles,\n updateLocation\n } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive\n });\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation\n });\n function onClickOutside(e) {\n emit('click:outside', e);\n if (!props.persistent) isActive.value = false;else animateClick();\n }\n function closeConditional(e) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || e instanceof MouseEvent && e.shadowTarget === scrimEl.value);\n }\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown);\n } else {\n window.removeEventListener('keydown', onKeydown);\n }\n }, {\n immediate: true\n });\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return;\n window.removeEventListener('keydown', onKeydown);\n });\n function onKeydown(e) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false;\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus();\n }\n } else animateClick();\n }\n }\n const router = useRouter();\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false);\n if (!props.persistent) isActive.value = false;else animateClick();\n } else {\n next();\n }\n });\n });\n const top = ref();\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value);\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop;\n }\n }\n });\n\n // Add a quick \"bounce\" animation to the content\n function animateClick() {\n if (props.noClickAnimation) return;\n contentEl.value && animate(contentEl.value, [{\n transformOrigin: 'center'\n }, {\n transform: 'scale(1.03)'\n }, {\n transformOrigin: 'center'\n }], {\n duration: 150,\n easing: standardEasing\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n }\n function onAfterLeave() {\n _onAfterLeave();\n emit('afterLeave');\n }\n useRender(() => _createVNode(_Fragment, null, [slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef\n }, activatorEvents.value, props.activatorProps)\n }), isMounted.value && hasContent.value && _createVNode(Teleport, {\n \"disabled\": !teleportTarget.value,\n \"to\": teleportTarget.value\n }, {\n default: () => [_createVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay', {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained\n }, themeClasses.value, rtlClasses.value, props.class],\n \"style\": [stackStyles.value, {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value)\n }, props.style],\n \"ref\": root\n }, scopeId, attrs), [_createVNode(Scrim, _mergeProps({\n \"color\": scrimColor,\n \"modelValue\": isActive.value && !!props.scrim,\n \"ref\": scrimEl\n }, scrimEvents.value), null), _createVNode(MaybeTransition, {\n \"appear\": true,\n \"persisted\": true,\n \"transition\": props.transition,\n \"target\": target.value,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", _mergeProps({\n \"ref\": contentEl,\n \"class\": ['v-overlay__content', props.contentClass],\n \"style\": [dimensionStyles.value, contentStyles.value]\n }, contentEvents.value, props.contentProps), [slots.default?.({\n isActive\n })]), [[_vShow, isActive.value], [_resolveDirective(\"click-outside\"), {\n handler: onClickOutside,\n closeConditional,\n include: () => [activatorEl.value]\n }]])]\n })])]\n })]));\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation\n };\n }\n});\n//# sourceMappingURL=VOverlay.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VTooltip.css\";\n\n// Components\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { computed, mergeProps, ref } from 'vue';\nimport { genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTooltipProps = propsFactory({\n id: String,\n text: String,\n ...omit(makeVOverlayProps({\n closeOnBack: false,\n location: 'end',\n locationStrategy: 'connected',\n eager: true,\n minWidth: 0,\n offset: 10,\n openOnClick: false,\n openOnHover: true,\n origin: 'auto',\n scrim: false,\n scrollStrategy: 'reposition',\n transition: false\n }), ['absolute', 'persistent'])\n}, 'VTooltip');\nexport const VTooltip = genericComponent()({\n name: 'VTooltip',\n props: makeVTooltipProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const uid = getUid();\n const id = computed(() => props.id || `v-tooltip-${uid}`);\n const overlay = ref();\n const location = computed(() => {\n return props.location.split(' ').length > 1 ? props.location : props.location + ' center';\n });\n const origin = computed(() => {\n return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';\n });\n const transition = computed(() => {\n if (props.transition) return props.transition;\n return isActive.value ? 'scale-transition' : 'fade-transition';\n });\n const activatorProps = computed(() => mergeProps({\n 'aria-describedby': id.value\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-tooltip', props.class],\n \"style\": props.style,\n \"id\": id.value\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"transition\": transition.value,\n \"absolute\": true,\n \"location\": location.value,\n \"origin\": origin.value,\n \"persistent\": true,\n \"role\": \"tooltip\",\n \"activatorProps\": activatorProps.value,\n \"_disableGlobalStack\": true\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return slots.default?.(...args) ?? props.text;\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VTooltip.mjs.map","// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue';\nimport { templateRef } from \"../util/index.mjs\";\nimport { IN_BROWSER } from \"../util/globals.mjs\"; // Types\nexport function useResizeObserver(callback) {\n let box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'content';\n const resizeRef = templateRef();\n const contentRect = ref();\n if (IN_BROWSER) {\n const observer = new ResizeObserver(entries => {\n callback?.(entries, observer);\n if (!entries.length) return;\n if (box === 'content') {\n contentRect.value = entries[0].contentRect;\n } else {\n contentRect.value = entries[0].target.getBoundingClientRect();\n }\n });\n onBeforeUnmount(() => {\n observer.disconnect();\n });\n watch(() => resizeRef.el, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue);\n contentRect.value = undefined;\n }\n if (newValue) observer.observe(newValue);\n }, {\n flush: 'post'\n });\n }\n return {\n resizeRef,\n contentRect: readonly(contentRect)\n };\n}\n//# sourceMappingURL=resizeObserver.mjs.map","// Composables\nimport { useResizeObserver } from \"./resizeObserver.mjs\"; // Utilities\nimport { computed, inject, onActivated, onBeforeUnmount, onDeactivated, onMounted, provide, reactive, ref, shallowRef } from 'vue';\nimport { convertToUnit, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory } from \"../util/index.mjs\"; // Types\nexport const VuetifyLayoutKey = Symbol.for('vuetify:layout');\nexport const VuetifyLayoutItemKey = Symbol.for('vuetify:layout-item');\nconst ROOT_ZINDEX = 1000;\nexport const makeLayoutProps = propsFactory({\n overlaps: {\n type: Array,\n default: () => []\n },\n fullHeight: Boolean\n}, 'layout');\n\n// Composables\nexport const makeLayoutItemProps = propsFactory({\n name: {\n type: String\n },\n order: {\n type: [Number, String],\n default: 0\n },\n absolute: Boolean\n}, 'layout-item');\nexport function useLayout() {\n const layout = inject(VuetifyLayoutKey);\n if (!layout) throw new Error('[Vuetify] Could not find injected layout');\n return {\n getLayoutItem: layout.getLayoutItem,\n mainRect: layout.mainRect,\n mainStyles: layout.mainStyles\n };\n}\nexport function useLayoutItem(options) {\n const layout = inject(VuetifyLayoutKey);\n if (!layout) throw new Error('[Vuetify] Could not find injected layout');\n const id = options.id ?? `layout-item-${getUid()}`;\n const vm = getCurrentInstance('useLayoutItem');\n provide(VuetifyLayoutItemKey, {\n id\n });\n const isKeptAlive = shallowRef(false);\n onDeactivated(() => isKeptAlive.value = true);\n onActivated(() => isKeptAlive.value = false);\n const {\n layoutItemStyles,\n layoutItemScrimStyles\n } = layout.register(vm, {\n ...options,\n active: computed(() => isKeptAlive.value ? false : options.active.value),\n id\n });\n onBeforeUnmount(() => layout.unregister(id));\n return {\n layoutItemStyles,\n layoutRect: layout.layoutRect,\n layoutItemScrimStyles\n };\n}\nconst generateLayers = (layout, positions, layoutSizes, activeItems) => {\n let previousLayer = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n };\n const layers = [{\n id: '',\n layer: {\n ...previousLayer\n }\n }];\n for (const id of layout) {\n const position = positions.get(id);\n const amount = layoutSizes.get(id);\n const active = activeItems.get(id);\n if (!position || !amount || !active) continue;\n const layer = {\n ...previousLayer,\n [position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0)\n };\n layers.push({\n id,\n layer\n });\n previousLayer = layer;\n }\n return layers;\n};\nexport function createLayout(props) {\n const parentLayout = inject(VuetifyLayoutKey, null);\n const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX);\n const registered = ref([]);\n const positions = reactive(new Map());\n const layoutSizes = reactive(new Map());\n const priorities = reactive(new Map());\n const activeItems = reactive(new Map());\n const disabledTransitions = reactive(new Map());\n const {\n resizeRef,\n contentRect: layoutRect\n } = useResizeObserver();\n const computedOverlaps = computed(() => {\n const map = new Map();\n const overlaps = props.overlaps ?? [];\n for (const overlap of overlaps.filter(item => item.includes(':'))) {\n const [top, bottom] = overlap.split(':');\n if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;\n const topPosition = positions.get(top);\n const bottomPosition = positions.get(bottom);\n const topAmount = layoutSizes.get(top);\n const bottomAmount = layoutSizes.get(bottom);\n if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;\n map.set(bottom, {\n position: topPosition.value,\n amount: parseInt(topAmount.value, 10)\n });\n map.set(top, {\n position: bottomPosition.value,\n amount: -parseInt(bottomAmount.value, 10)\n });\n }\n return map;\n });\n const layers = computed(() => {\n const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b);\n const layout = [];\n for (const p of uniquePriorities) {\n const items = registered.value.filter(id => priorities.get(id)?.value === p);\n layout.push(...items);\n }\n return generateLayers(layout, positions, layoutSizes, activeItems);\n });\n const transitionsEnabled = computed(() => {\n return !Array.from(disabledTransitions.values()).some(ref => ref.value);\n });\n const mainRect = computed(() => {\n return layers.value[layers.value.length - 1].layer;\n });\n const mainStyles = computed(() => {\n return {\n '--v-layout-left': convertToUnit(mainRect.value.left),\n '--v-layout-right': convertToUnit(mainRect.value.right),\n '--v-layout-top': convertToUnit(mainRect.value.top),\n '--v-layout-bottom': convertToUnit(mainRect.value.bottom),\n ...(transitionsEnabled.value ? undefined : {\n transition: 'none'\n })\n };\n });\n const items = computed(() => {\n return layers.value.slice(1).map((_ref, index) => {\n let {\n id\n } = _ref;\n const {\n layer\n } = layers.value[index];\n const size = layoutSizes.get(id);\n const position = positions.get(id);\n return {\n id,\n ...layer,\n size: Number(size.value),\n position: position.value\n };\n });\n });\n const getLayoutItem = id => {\n return items.value.find(item => item.id === id);\n };\n const rootVm = getCurrentInstance('createLayout');\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n provide(VuetifyLayoutKey, {\n register: (vm, _ref2) => {\n let {\n id,\n order,\n position,\n layoutSize,\n elementSize,\n active,\n disableTransitions,\n absolute\n } = _ref2;\n priorities.set(id, order);\n positions.set(id, position);\n layoutSizes.set(id, layoutSize);\n activeItems.set(id, active);\n disableTransitions && disabledTransitions.set(id, disableTransitions);\n const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode);\n const instanceIndex = instances.indexOf(vm);\n if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id);else registered.value.push(id);\n const index = computed(() => items.value.findIndex(i => i.id === id));\n const zIndex = computed(() => rootZIndex.value + layers.value.length * 2 - index.value * 2);\n const layoutItemStyles = computed(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right';\n const isOppositeHorizontal = position.value === 'right';\n const isOppositeVertical = position.value === 'bottom';\n const size = elementSize.value ?? layoutSize.value;\n const unit = size === 0 ? '%' : 'px';\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -(size === 0 ? 100 : size)) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}${unit})`,\n position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',\n ...(transitionsEnabled.value ? undefined : {\n transition: 'none'\n })\n };\n if (!isMounted.value) return styles;\n const item = items.value[index.value];\n if (!item) throw new Error(`[Vuetify] Could not find layout item \"${id}\"`);\n const overlap = computedOverlaps.value.get(id);\n if (overlap) {\n item[overlap.position] += overlap.amount;\n }\n return {\n ...styles,\n height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,\n left: isOppositeHorizontal ? undefined : `${item.left}px`,\n right: isOppositeHorizontal ? `${item.right}px` : undefined,\n top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n width: !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)` : elementSize.value ? `${elementSize.value}px` : undefined\n };\n });\n const layoutItemScrimStyles = computed(() => ({\n zIndex: zIndex.value - 1\n }));\n return {\n layoutItemStyles,\n layoutItemScrimStyles,\n zIndex\n };\n },\n unregister: id => {\n priorities.delete(id);\n positions.delete(id);\n layoutSizes.delete(id);\n activeItems.delete(id);\n disabledTransitions.delete(id);\n registered.value = registered.value.filter(v => v !== id);\n },\n mainRect,\n mainStyles,\n getLayoutItem,\n items,\n layoutRect,\n rootZIndex\n });\n const layoutClasses = computed(() => ['v-layout', {\n 'v-layout--full-height': props.fullHeight\n }]);\n const layoutStyles = computed(() => ({\n zIndex: parentLayout ? rootZIndex.value : undefined,\n position: parentLayout ? 'relative' : undefined,\n overflow: parentLayout ? 'hidden' : undefined\n }));\n return {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRect,\n layoutRef: resizeRef\n };\n}\n//# sourceMappingURL=layout.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VApp.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { createLayout, makeLayoutProps } from \"../../composables/layout.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVAppProps = propsFactory({\n ...makeComponentProps(),\n ...makeLayoutProps({\n fullHeight: true\n }),\n ...makeThemeProps()\n}, 'VApp');\nexport const VApp = genericComponent()({\n name: 'VApp',\n props: makeVAppProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const theme = provideTheme(props);\n const {\n layoutClasses,\n getLayoutItem,\n items,\n layoutRef\n } = createLayout(props);\n const {\n rtlClasses\n } = useRtl();\n useRender(() => _createVNode(\"div\", {\n \"ref\": layoutRef,\n \"class\": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],\n \"style\": [props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-application__wrap\"\n }, [slots.default?.()])]));\n return {\n getLayoutItem,\n items,\n theme\n };\n }\n});\n//# sourceMappingURL=VApp.mjs.map","// Utilities\nimport { propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeTagProps = propsFactory({\n tag: {\n type: String,\n default: 'div'\n }\n}, 'tag');\n//# sourceMappingURL=tag.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVToolbarTitleProps = propsFactory({\n text: String,\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VToolbarTitle');\nexport const VToolbarTitle = genericComponent()({\n name: 'VToolbarTitle',\n props: makeVToolbarTitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const hasText = !!(slots.default || slots.text || props.text);\n return _createVNode(props.tag, {\n \"class\": ['v-toolbar-title', props.class],\n \"style\": props.style\n }, {\n default: () => [hasText && _createVNode(\"div\", {\n \"class\": \"v-toolbar-title__placeholder\"\n }, [slots.text ? slots.text() : props.text, slots.default?.()])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VToolbarTitle.mjs.map","// Utilities\nimport { h, Transition, TransitionGroup } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeTransitionProps = propsFactory({\n disabled: Boolean,\n group: Boolean,\n hideOnLeave: Boolean,\n leaveAbsolute: Boolean,\n mode: String,\n origin: String\n}, 'transition');\nexport function createCssTransition(name, origin, mode) {\n return genericComponent()({\n name,\n props: makeTransitionProps({\n mode,\n origin\n }),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const functions = {\n onBeforeEnter(el) {\n if (props.origin) {\n el.style.transformOrigin = props.origin;\n }\n },\n onLeave(el) {\n if (props.leaveAbsolute) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = el;\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height\n };\n el.style.position = 'absolute';\n el.style.top = `${offsetTop}px`;\n el.style.left = `${offsetLeft}px`;\n el.style.width = `${offsetWidth}px`;\n el.style.height = `${offsetHeight}px`;\n }\n if (props.hideOnLeave) {\n el.style.setProperty('display', 'none', 'important');\n }\n },\n onAfterLeave(el) {\n if (props.leaveAbsolute && el?._transitionInitialStyles) {\n const {\n position,\n top,\n left,\n width,\n height\n } = el._transitionInitialStyles;\n delete el._transitionInitialStyles;\n el.style.position = position || '';\n el.style.top = top || '';\n el.style.left = left || '';\n el.style.width = width || '';\n el.style.height = height || '';\n }\n }\n };\n return () => {\n const tag = props.group ? TransitionGroup : Transition;\n return h(tag, {\n name: props.disabled ? '' : name,\n css: !props.disabled,\n ...(props.group ? undefined : {\n mode: props.mode\n }),\n ...(props.disabled ? {} : functions)\n }, slots.default);\n };\n }\n });\n}\nexport function createJavascriptTransition(name, functions) {\n let mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'in-out';\n return genericComponent()({\n name,\n props: {\n mode: {\n type: String,\n default: mode\n },\n disabled: Boolean,\n group: Boolean\n },\n setup(props, _ref2) {\n let {\n slots\n } = _ref2;\n const tag = props.group ? TransitionGroup : Transition;\n return () => {\n return h(tag, {\n name: props.disabled ? '' : name,\n css: !props.disabled,\n // mode: props.mode, // TODO: vuejs/vue-next#3104\n ...(props.disabled ? {} : functions)\n }, slots.default);\n };\n }\n });\n}\n//# sourceMappingURL=createTransition.mjs.map","// Utilities\nimport { camelize } from 'vue';\nexport default function () {\n let expandedParentClass = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const sizeProperty = x ? 'width' : 'height';\n const offsetProperty = camelize(`offset-${sizeProperty}`);\n return {\n onBeforeEnter(el) {\n el._parent = el.parentNode;\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty]\n };\n },\n onEnter(el) {\n const initialStyle = el._initialStyle;\n el.style.setProperty('transition', 'none', 'important');\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden';\n const offset = `${el[offsetProperty]}px`;\n el.style[sizeProperty] = '0';\n void el.offsetHeight; // force reflow\n\n el.style.transition = initialStyle.transition;\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass);\n }\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset;\n });\n },\n onAfterEnter: resetStyles,\n onEnterCancelled: resetStyles,\n onLeave(el) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty]\n };\n el.style.overflow = 'hidden';\n el.style[sizeProperty] = `${el[offsetProperty]}px`;\n void el.offsetHeight; // force reflow\n\n requestAnimationFrame(() => el.style[sizeProperty] = '0');\n },\n onAfterLeave,\n onLeaveCancelled: onAfterLeave\n };\n function onAfterLeave(el) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass);\n }\n resetStyles(el);\n }\n function resetStyles(el) {\n const size = el._initialStyle[sizeProperty];\n el.style.overflow = el._initialStyle.overflow;\n if (size != null) el.style[sizeProperty] = size;\n delete el._initialStyle;\n }\n}\n//# sourceMappingURL=expand-transition.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Utilities\nimport { Transition } from 'vue';\nimport { acceleratedEasing, animate, deceleratedEasing, genericComponent, nullifyTransforms, propsFactory, standardEasing } from \"../../util/index.mjs\";\nimport { getTargetBox } from \"../../util/box.mjs\"; // Types\nexport const makeVDialogTransitionProps = propsFactory({\n target: [Object, Array]\n}, 'v-dialog-transition');\nexport const VDialogTransition = genericComponent()({\n name: 'VDialogTransition',\n props: makeVDialogTransitionProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const functions = {\n onBeforeEnter(el) {\n el.style.pointerEvents = 'none';\n el.style.visibility = 'hidden';\n },\n async onEnter(el, done) {\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => requestAnimationFrame(resolve));\n el.style.visibility = '';\n const {\n x,\n y,\n sx,\n sy,\n speed\n } = getDimensions(props.target, el);\n const animation = animate(el, [{\n transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,\n opacity: 0\n }, {}], {\n duration: 225 * speed,\n easing: deceleratedEasing\n });\n getChildren(el)?.forEach(el => {\n animate(el, [{\n opacity: 0\n }, {\n opacity: 0,\n offset: 0.33\n }, {}], {\n duration: 225 * 2 * speed,\n easing: standardEasing\n });\n });\n animation.finished.then(() => done());\n },\n onAfterEnter(el) {\n el.style.removeProperty('pointer-events');\n },\n onBeforeLeave(el) {\n el.style.pointerEvents = 'none';\n },\n async onLeave(el, done) {\n await new Promise(resolve => requestAnimationFrame(resolve));\n const {\n x,\n y,\n sx,\n sy,\n speed\n } = getDimensions(props.target, el);\n const animation = animate(el, [{}, {\n transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,\n opacity: 0\n }], {\n duration: 125 * speed,\n easing: acceleratedEasing\n });\n animation.finished.then(() => done());\n getChildren(el)?.forEach(el => {\n animate(el, [{}, {\n opacity: 0,\n offset: 0.2\n }, {\n opacity: 0\n }], {\n duration: 125 * 2 * speed,\n easing: standardEasing\n });\n });\n },\n onAfterLeave(el) {\n el.style.removeProperty('pointer-events');\n }\n };\n return () => {\n return props.target ? _createVNode(Transition, _mergeProps({\n \"name\": \"dialog-transition\"\n }, functions, {\n \"css\": false\n }), slots) : _createVNode(Transition, {\n \"name\": \"dialog-transition\"\n }, slots);\n };\n }\n});\n\n/** Animatable children (card, sheet, list) */\nfunction getChildren(el) {\n const els = el.querySelector(':scope > .v-card, :scope > .v-sheet, :scope > .v-list')?.children;\n return els && [...els];\n}\nfunction getDimensions(target, el) {\n const targetBox = getTargetBox(target);\n const elBox = nullifyTransforms(el);\n const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v));\n const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ');\n let offsetX = targetBox.left + targetBox.width / 2;\n if (anchorSide === 'left' || anchorOffset === 'left') {\n offsetX -= targetBox.width / 2;\n } else if (anchorSide === 'right' || anchorOffset === 'right') {\n offsetX += targetBox.width / 2;\n }\n let offsetY = targetBox.top + targetBox.height / 2;\n if (anchorSide === 'top' || anchorOffset === 'top') {\n offsetY -= targetBox.height / 2;\n } else if (anchorSide === 'bottom' || anchorOffset === 'bottom') {\n offsetY += targetBox.height / 2;\n }\n const tsx = targetBox.width / elBox.width;\n const tsy = targetBox.height / elBox.height;\n const maxs = Math.max(1, tsx, tsy);\n const sx = tsx / maxs || 0;\n const sy = tsy / maxs || 0;\n\n // Animate elements larger than 12% of the screen area up to 1.5x slower\n const asa = elBox.width * elBox.height / (window.innerWidth * window.innerHeight);\n const speed = asa > 0.12 ? Math.min(1.5, (asa - 0.12) * 10 + 1) : 1;\n return {\n x: offsetX - (originX + elBox.left),\n y: offsetY - (originY + elBox.top),\n sx,\n sy,\n speed\n };\n}\n//# sourceMappingURL=dialog-transition.mjs.map","import { createCssTransition, createJavascriptTransition } from \"./createTransition.mjs\";\nimport ExpandTransitionGenerator from \"./expand-transition.mjs\"; // Component specific transitions\nexport const VFabTransition = createCssTransition('fab-transition', 'center center', 'out-in');\n\n// Generic transitions\nexport const VDialogBottomTransition = createCssTransition('dialog-bottom-transition');\nexport const VDialogTopTransition = createCssTransition('dialog-top-transition');\nexport const VFadeTransition = createCssTransition('fade-transition');\nexport const VScaleTransition = createCssTransition('scale-transition');\nexport const VScrollXTransition = createCssTransition('scroll-x-transition');\nexport const VScrollXReverseTransition = createCssTransition('scroll-x-reverse-transition');\nexport const VScrollYTransition = createCssTransition('scroll-y-transition');\nexport const VScrollYReverseTransition = createCssTransition('scroll-y-reverse-transition');\nexport const VSlideXTransition = createCssTransition('slide-x-transition');\nexport const VSlideXReverseTransition = createCssTransition('slide-x-reverse-transition');\nexport const VSlideYTransition = createCssTransition('slide-y-transition');\nexport const VSlideYReverseTransition = createCssTransition('slide-y-reverse-transition');\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator());\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true));\nexport { VDialogTransition } from \"./dialog-transition.mjs\";\n//# sourceMappingURL=index.mjs.map","// Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { toRefs } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVDefaultsProviderProps = propsFactory({\n defaults: Object,\n disabled: Boolean,\n reset: [Number, String],\n root: [Boolean, String],\n scoped: Boolean\n}, 'VDefaultsProvider');\nexport const VDefaultsProvider = genericComponent(false)({\n name: 'VDefaultsProvider',\n props: makeVDefaultsProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n defaults,\n disabled,\n reset,\n root,\n scoped\n } = toRefs(props);\n provideDefaults(defaults, {\n reset,\n root,\n scoped,\n disabled\n });\n return () => slots.default?.();\n }\n});\n//# sourceMappingURL=VDefaultsProvider.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VResponsive.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport function useAspectStyles(props) {\n return {\n aspectStyles: computed(() => {\n const ratio = Number(props.aspectRatio);\n return ratio ? {\n paddingBottom: String(1 / ratio * 100) + '%'\n } : undefined;\n })\n };\n}\nexport const makeVResponsiveProps = propsFactory({\n aspectRatio: [String, Number],\n contentClass: null,\n inline: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VResponsive');\nexport const VResponsive = genericComponent()({\n name: 'VResponsive',\n props: makeVResponsiveProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n aspectStyles\n } = useAspectStyles(props);\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-responsive', {\n 'v-responsive--inline': props.inline\n }, props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-responsive__sizer\",\n \"style\": aspectStyles.value\n }, null), slots.additional?.(), slots.default && _createVNode(\"div\", {\n \"class\": ['v-responsive__content', props.contentClass]\n }, [slots.default()])]));\n return {};\n }\n});\n//# sourceMappingURL=VResponsive.mjs.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined\n },\n tile: Boolean\n}, 'rounded');\nexport function useRounded(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded;\n const tile = isRef(props) ? props.value : props.tile;\n const classes = [];\n if (rounded === true || rounded === '') {\n classes.push(`${name}--rounded`);\n } else if (typeof rounded === 'string' || rounded === 0) {\n for (const value of String(rounded).split(' ')) {\n classes.push(`rounded-${value}`);\n }\n } else if (tile || rounded === false) {\n classes.push('rounded-0');\n }\n return classes;\n });\n return {\n roundedClasses\n };\n}\n//# sourceMappingURL=rounded.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VImg.css\";\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from \"../VResponsive/VResponsive.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, ref, shallowRef, toRef, vShow, watch, withDirectives } from 'vue';\nimport { convertToUnit, genericComponent, getCurrentInstance, propsFactory, SUPPORTS_INTERSECTION, useRender } from \"../../util/index.mjs\"; // Types\n// not intended for public use, this is passed in by vuetify-loader\nexport const makeVImgProps = propsFactory({\n absolute: Boolean,\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String],\n default: undefined\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined\n })\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: ''\n },\n crossorigin: String,\n referrerpolicy: String,\n srcset: String,\n position: String,\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps()\n}, 'VImg');\nexport const VImg = genericComponent()({\n name: 'VImg',\n directives: {\n intersect\n },\n props: makeVImgProps(),\n emits: {\n loadstart: value => true,\n load: value => true,\n error: value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n roundedClasses\n } = useRounded(props);\n const vm = getCurrentInstance('VImg');\n const currentSrc = shallowRef(''); // Set from srcset\n const image = ref();\n const state = shallowRef(props.eager ? 'loading' : 'idle');\n const naturalWidth = shallowRef();\n const naturalHeight = shallowRef();\n const normalisedSrc = computed(() => {\n return props.src && typeof props.src === 'object' ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0)\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0)\n };\n });\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value / naturalHeight.value || 0;\n });\n watch(() => props.src, () => {\n init(state.value !== 'idle');\n });\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value);\n }\n });\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init());\n function init(isIntersecting) {\n if (props.eager && isIntersecting) return;\n if (SUPPORTS_INTERSECTION && !isIntersecting && !props.eager) return;\n state.value = 'loading';\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image();\n lazyImg.src = normalisedSrc.value.lazySrc;\n pollForSize(lazyImg, null);\n }\n if (!normalisedSrc.value.src) return;\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src);\n setTimeout(() => {\n if (vm.isUnmounted) return;\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError();\n }\n if (state.value === 'error') return;\n if (!aspectRatio.value) pollForSize(image.value, null);\n if (state.value === 'loading') onLoad();\n } else {\n if (!aspectRatio.value) pollForSize(image.value);\n getSrc();\n }\n });\n });\n }\n function onLoad() {\n if (vm.isUnmounted) return;\n getSrc();\n pollForSize(image.value);\n state.value = 'loaded';\n emit('load', image.value?.currentSrc || normalisedSrc.value.src);\n }\n function onError() {\n if (vm.isUnmounted) return;\n state.value = 'error';\n emit('error', image.value?.currentSrc || normalisedSrc.value.src);\n }\n function getSrc() {\n const img = image.value;\n if (img) currentSrc.value = img.currentSrc || img.src;\n }\n let timer = -1;\n onBeforeUnmount(() => {\n clearTimeout(timer);\n });\n function pollForSize(img) {\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n const poll = () => {\n clearTimeout(timer);\n if (vm.isUnmounted) return;\n const {\n naturalHeight: imgHeight,\n naturalWidth: imgWidth\n } = img;\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth;\n naturalHeight.value = imgHeight;\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout);\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1;\n naturalHeight.value = 1;\n }\n };\n poll();\n }\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover\n }));\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null;\n const img = _createVNode(\"img\", {\n \"class\": ['v-img__img', containClasses.value],\n \"style\": {\n objectPosition: props.position\n },\n \"src\": normalisedSrc.value.src,\n \"srcset\": normalisedSrc.value.srcset,\n \"alt\": props.alt,\n \"crossorigin\": props.crossorigin,\n \"referrerpolicy\": props.referrerpolicy,\n \"draggable\": props.draggable,\n \"sizes\": props.sizes,\n \"ref\": image,\n \"onLoad\": onLoad,\n \"onError\": onError\n }, null);\n const sources = slots.sources?.();\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [withDirectives(sources ? _createVNode(\"picture\", {\n \"class\": \"v-img__picture\"\n }, [sources, img]) : img, [[vShow, state.value === 'loaded']])]\n });\n };\n const __preloadImage = () => _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && _createVNode(\"img\", {\n \"class\": ['v-img__img', 'v-img__img--preload', containClasses.value],\n \"style\": {\n objectPosition: props.position\n },\n \"src\": normalisedSrc.value.lazySrc,\n \"alt\": props.alt,\n \"crossorigin\": props.crossorigin,\n \"referrerpolicy\": props.referrerpolicy,\n \"draggable\": props.draggable\n }, null)]\n });\n const __placeholder = () => {\n if (!slots.placeholder) return null;\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && _createVNode(\"div\", {\n \"class\": \"v-img__placeholder\"\n }, [slots.placeholder()])]\n });\n };\n const __error = () => {\n if (!slots.error) return null;\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [state.value === 'error' && _createVNode(\"div\", {\n \"class\": \"v-img__error\"\n }, [slots.error()])]\n });\n };\n const __gradient = () => {\n if (!props.gradient) return null;\n return _createVNode(\"div\", {\n \"class\": \"v-img__gradient\",\n \"style\": {\n backgroundImage: `linear-gradient(${props.gradient})`\n }\n }, null);\n };\n const isBooted = shallowRef(false);\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true;\n });\n });\n stop();\n }\n });\n }\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props);\n return _withDirectives(_createVNode(VResponsive, _mergeProps({\n \"class\": ['v-img', {\n 'v-img--absolute': props.absolute,\n 'v-img--booting': !isBooted.value\n }, backgroundColorClasses.value, roundedClasses.value, props.class],\n \"style\": [{\n width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)\n }, backgroundColorStyles.value, props.style]\n }, responsiveProps, {\n \"aspectRatio\": aspectRatio.value,\n \"aria-label\": props.alt,\n \"role\": props.alt ? 'img' : undefined\n }), {\n additional: () => _createVNode(_Fragment, null, [_createVNode(__image, null, null), _createVNode(__preloadImage, null, null), _createVNode(__gradient, null, null), _createVNode(__placeholder, null, null), _createVNode(__error, null, null)]),\n default: slots.default\n }), [[_resolveDirective(\"intersect\"), {\n handler: init,\n options: props.options\n }, null, {\n once: true\n }]]);\n });\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight\n };\n }\n});\n//# sourceMappingURL=VImg.mjs.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeBorderProps = propsFactory({\n border: [Boolean, Number, String]\n}, 'border');\nexport function useBorder(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const borderClasses = computed(() => {\n const border = isRef(props) ? props.value : props.border;\n const classes = [];\n if (border === true || border === '') {\n classes.push(`${name}--border`);\n } else if (typeof border === 'string' || border === 0) {\n for (const value of String(border).split(' ')) {\n classes.push(`border-${value}`);\n }\n }\n return classes;\n });\n return {\n borderClasses\n };\n}\n//# sourceMappingURL=border.mjs.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeElevationProps = propsFactory({\n elevation: {\n type: [Number, String],\n validator(v) {\n const value = parseInt(v);\n return !isNaN(value) && value >= 0 &&\n // Material Design has a maximum elevation of 24\n // https://material.io/design/environment/elevation.html#default-elevations\n value <= 24;\n }\n }\n}, 'elevation');\nexport function useElevation(props) {\n const elevationClasses = computed(() => {\n const elevation = isRef(props) ? props.value : props.elevation;\n const classes = [];\n if (elevation == null) return classes;\n classes.push(`elevation-${elevation}`);\n return classes;\n });\n return {\n elevationClasses\n };\n}\n//# sourceMappingURL=elevation.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VToolbar.css\";\n\n// Components\nimport { VToolbarTitle } from \"./VToolbarTitle.mjs\";\nimport { VExpandTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, shallowRef, toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst allowedDensities = [null, 'prominent', 'default', 'comfortable', 'compact'];\nexport const makeVToolbarProps = propsFactory({\n absolute: Boolean,\n collapse: Boolean,\n color: String,\n density: {\n type: String,\n default: 'default',\n validator: v => allowedDensities.includes(v)\n },\n extended: Boolean,\n extensionHeight: {\n type: [Number, String],\n default: 48\n },\n flat: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default: 64\n },\n image: String,\n title: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'header'\n }),\n ...makeThemeProps()\n}, 'VToolbar');\nexport const VToolbar = genericComponent()({\n name: 'VToolbar',\n props: makeVToolbarProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n borderClasses\n } = useBorder(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses\n } = useRtl();\n const isExtended = shallowRef(!!(props.extended || slots.extension?.()));\n const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));\n const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);\n provideDefaults({\n VBtn: {\n variant: 'text'\n }\n });\n useRender(() => {\n const hasTitle = !!(props.title || slots.title);\n const hasImage = !!(slots.image || props.image);\n const extension = slots.extension?.();\n isExtended.value = !!(props.extended || extension);\n return _createVNode(props.tag, {\n \"class\": ['v-toolbar', {\n 'v-toolbar--absolute': props.absolute,\n 'v-toolbar--collapse': props.collapse,\n 'v-toolbar--flat': props.flat,\n 'v-toolbar--floating': props.floating,\n [`v-toolbar--density-${props.density}`]: true\n }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style]\n }, {\n default: () => [hasImage && _createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-toolbar__image\"\n }, [!slots.image ? _createVNode(VImg, {\n \"key\": \"image-img\",\n \"cover\": true,\n \"src\": props.image\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n cover: true,\n src: props.image\n }\n }\n }, slots.image)]), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VTabs: {\n height: convertToUnit(contentHeight.value)\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-toolbar__content\",\n \"style\": {\n height: convertToUnit(contentHeight.value)\n }\n }, [slots.prepend && _createVNode(\"div\", {\n \"class\": \"v-toolbar__prepend\"\n }, [slots.prepend?.()]), hasTitle && _createVNode(VToolbarTitle, {\n \"key\": \"title\",\n \"text\": props.title\n }, {\n text: slots.title\n }), slots.default?.(), slots.append && _createVNode(\"div\", {\n \"class\": \"v-toolbar__append\"\n }, [slots.append?.()])])]\n }), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VTabs: {\n height: convertToUnit(extensionHeight.value)\n }\n }\n }, {\n default: () => [_createVNode(VExpandTransition, null, {\n default: () => [isExtended.value && _createVNode(\"div\", {\n \"class\": \"v-toolbar__extension\",\n \"style\": {\n height: convertToUnit(extensionHeight.value)\n }\n }, [extension])]\n })]\n })]\n });\n });\n return {\n contentHeight,\n extensionHeight\n };\n }\n});\n//# sourceMappingURL=VToolbar.mjs.map","// Utilities\nimport { computed, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue';\nimport { clamp, consoleWarn, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeScrollProps = propsFactory({\n scrollTarget: {\n type: String\n },\n scrollThreshold: {\n type: [String, Number],\n default: 300\n }\n}, 'scroll');\nexport function useScroll(props) {\n let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n canScroll\n } = args;\n let previousScroll = 0;\n let previousScrollHeight = 0;\n const target = ref(null);\n const currentScroll = shallowRef(0);\n const savedScroll = shallowRef(0);\n const currentThreshold = shallowRef(0);\n const isScrollActive = shallowRef(false);\n const isScrollingUp = shallowRef(false);\n const scrollThreshold = computed(() => {\n return Number(props.scrollThreshold);\n });\n\n /**\n * 1: at top\n * 0: at threshold\n */\n const scrollRatio = computed(() => {\n return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);\n });\n const onScroll = () => {\n const targetEl = target.value;\n if (!targetEl || canScroll && !canScroll.value) return;\n previousScroll = currentScroll.value;\n currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;\n const currentScrollHeight = targetEl instanceof Window ? document.documentElement.scrollHeight : targetEl.scrollHeight;\n if (previousScrollHeight !== currentScrollHeight) {\n previousScrollHeight = currentScrollHeight;\n return;\n }\n isScrollingUp.value = currentScroll.value < previousScroll;\n currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);\n };\n watch(isScrollingUp, () => {\n savedScroll.value = savedScroll.value || currentScroll.value;\n });\n watch(isScrollActive, () => {\n savedScroll.value = 0;\n });\n onMounted(() => {\n watch(() => props.scrollTarget, scrollTarget => {\n const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;\n if (!newTarget) {\n consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);\n return;\n }\n if (newTarget === target.value) return;\n target.value?.removeEventListener('scroll', onScroll);\n target.value = newTarget;\n target.value.addEventListener('scroll', onScroll, {\n passive: true\n });\n }, {\n immediate: true\n });\n });\n onBeforeUnmount(() => {\n target.value?.removeEventListener('scroll', onScroll);\n });\n\n // Do we need this? If yes - seems that\n // there's no need to expose onScroll\n canScroll && watch(canScroll, onScroll, {\n immediate: true\n });\n return {\n scrollThreshold,\n currentScroll,\n currentThreshold,\n isScrollActive,\n scrollRatio,\n // required only for testing\n // probably can be removed\n // later (2 chars chlng)\n isScrollingUp,\n savedScroll\n };\n}\n//# sourceMappingURL=scroll.mjs.map","// Utilities\nimport { computed, onMounted, readonly, shallowRef } from 'vue';\n\n// Composables\nexport function useSsrBoot() {\n const isBooted = shallowRef(false);\n onMounted(() => {\n window.requestAnimationFrame(() => {\n isBooted.value = true;\n });\n });\n const ssrBootStyles = computed(() => !isBooted.value ? {\n transition: 'none !important'\n } : undefined);\n return {\n ssrBootStyles,\n isBooted: readonly(isBooted)\n };\n}\n//# sourceMappingURL=ssrBoot.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VAppBar.css\";\n\n// Components\nimport { makeVToolbarProps, VToolbar } from \"../VToolbar/VToolbar.mjs\"; // Composables\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeScrollProps, useScroll } from \"../../composables/scroll.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVAppBarProps = propsFactory({\n scrollBehavior: String,\n modelValue: {\n type: Boolean,\n default: true\n },\n location: {\n type: String,\n default: 'top',\n validator: value => ['top', 'bottom'].includes(value)\n },\n ...makeVToolbarProps(),\n ...makeLayoutItemProps(),\n ...makeScrollProps(),\n height: {\n type: [Number, String],\n default: 64\n }\n}, 'VAppBar');\nexport const VAppBar = genericComponent()({\n name: 'VAppBar',\n props: makeVAppBarProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const vToolbarRef = ref();\n const isActive = useProxiedModel(props, 'modelValue');\n const scrollBehavior = computed(() => {\n const behavior = new Set(props.scrollBehavior?.split(' ') ?? []);\n return {\n hide: behavior.has('hide'),\n fullyHide: behavior.has('fully-hide'),\n inverted: behavior.has('inverted'),\n collapse: behavior.has('collapse'),\n elevate: behavior.has('elevate'),\n fadeImage: behavior.has('fade-image')\n // shrink: behavior.has('shrink'),\n };\n });\n const canScroll = computed(() => {\n const behavior = scrollBehavior.value;\n return behavior.hide || behavior.fullyHide || behavior.inverted || behavior.collapse || behavior.elevate || behavior.fadeImage ||\n // behavior.shrink ||\n !isActive.value;\n });\n const {\n currentScroll,\n scrollThreshold,\n isScrollingUp,\n scrollRatio\n } = useScroll(props, {\n canScroll\n });\n const canHide = computed(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);\n const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));\n const isFlat = computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));\n const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);\n const height = computed(() => {\n if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;\n const height = vToolbarRef.value?.contentHeight ?? 0;\n const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;\n if (!canHide.value) return height + extensionHeight;\n return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;\n });\n useToggleScope(computed(() => !!props.scrollBehavior), () => {\n watchEffect(() => {\n if (canHide.value) {\n if (scrollBehavior.value.inverted) {\n isActive.value = currentScroll.value > scrollThreshold.value;\n } else {\n isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;\n }\n } else {\n isActive.value = true;\n }\n });\n });\n const {\n ssrBootStyles\n } = useSsrBoot();\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize: height,\n elementSize: shallowRef(undefined),\n active: isActive,\n absolute: toRef(props, 'absolute')\n });\n useRender(() => {\n const toolbarProps = VToolbar.filterProps(props);\n return _createVNode(VToolbar, _mergeProps({\n \"ref\": vToolbarRef,\n \"class\": ['v-app-bar', {\n 'v-app-bar--bottom': props.location === 'bottom'\n }, props.class],\n \"style\": [{\n ...layoutItemStyles.value,\n '--v-toolbar-image-opacity': opacity.value,\n height: undefined,\n ...ssrBootStyles.value\n }, props.style]\n }, toolbarProps, {\n \"collapse\": isCollapsed.value,\n \"flat\": isFlat.value\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VAppBar.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\nconst allowedDensities = [null, 'default', 'comfortable', 'compact'];\n\n// typeof allowedDensities[number] evalutes to any\n// when generating api types for whatever reason.\n\n// Composables\nexport const makeDensityProps = propsFactory({\n density: {\n type: String,\n default: 'default',\n validator: v => allowedDensities.includes(v)\n }\n}, 'density');\nexport function useDensity(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const densityClasses = computed(() => {\n return `${name}--density-${props.density}`;\n });\n return {\n densityClasses\n };\n}\n//# sourceMappingURL=density.mjs.map","import { createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Composables\nimport { useColor } from \"./color.mjs\"; // Utilities\nimport { computed, unref } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\nexport const allowedVariants = ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'];\nexport function genOverlays(isClickable, name) {\n return _createVNode(_Fragment, null, [isClickable && _createVNode(\"span\", {\n \"key\": \"overlay\",\n \"class\": `${name}__overlay`\n }, null), _createVNode(\"span\", {\n \"key\": \"underlay\",\n \"class\": `${name}__underlay`\n }, null)]);\n}\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String,\n default: 'elevated',\n validator: v => allowedVariants.includes(v)\n }\n}, 'variant');\nexport function useVariant(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const variantClasses = computed(() => {\n const {\n variant\n } = unref(props);\n return `${name}--variant-${variant}`;\n });\n const {\n colorClasses,\n colorStyles\n } = useColor(computed(() => {\n const {\n variant,\n color\n } = unref(props);\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color\n };\n }));\n return {\n colorClasses,\n colorStyles,\n variantClasses\n };\n}\n//# sourceMappingURL=variant.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VBtnGroup.css\";\n\n// Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBtnGroupProps = propsFactory({\n baseColor: String,\n divided: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps()\n}, 'VBtnGroup');\nexport const VBtnGroup = genericComponent()({\n name: 'VBtnGroup',\n props: makeVBtnGroupProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n provideDefaults({\n VBtn: {\n height: 'auto',\n baseColor: toRef(props, 'baseColor'),\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n flat: true,\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-btn-group', {\n 'v-btn-group--divided': props.divided\n }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": props.style\n }, slots);\n });\n }\n});\n//# sourceMappingURL=VBtnGroup.mjs.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, watch } from 'vue';\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined\n },\n multiple: Boolean,\n mandatory: [Boolean, String],\n max: Number,\n selectedClass: String,\n disabled: Boolean\n}, 'group');\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String\n}, 'group-item');\n\n// Composables\n\nexport function useGroupItem(props, injectKey) {\n let required = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const vm = getCurrentInstance('useGroupItem');\n if (!vm) {\n throw new Error('[Vuetify] useGroupItem composable must be used inside a component setup function');\n }\n const id = getUid();\n provide(Symbol.for(`${injectKey.description}:id`), id);\n const group = inject(injectKey, null);\n if (!group) {\n if (!required) return group;\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`);\n }\n const value = toRef(props, 'value');\n const disabled = computed(() => !!(group.disabled.value || props.disabled));\n group.register({\n id,\n value,\n disabled\n }, vm);\n onBeforeUnmount(() => {\n group.unregister(id);\n });\n const isSelected = computed(() => {\n return group.isSelected(id);\n });\n const isFirst = computed(() => {\n return group.items.value[0].id === id;\n });\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id;\n });\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass]);\n watch(isSelected, value => {\n vm.emit('group:selected', {\n value\n });\n }, {\n flush: 'sync'\n });\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: value => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group\n };\n}\nexport function useGroup(props, injectKey) {\n let isUnmounted = false;\n const items = reactive([]);\n const selected = useProxiedModel(props, 'modelValue', [], v => {\n if (v == null) return [];\n return getIds(items, wrapInArray(v));\n }, v => {\n const arr = getValues(items, v);\n return props.multiple ? arr : arr[0];\n });\n const groupVm = getCurrentInstance('useGroup');\n function register(item, vm) {\n // Is there a better way to fix this typing?\n const unwrapped = item;\n const key = Symbol.for(`${injectKey.description}:id`);\n const children = findChildrenWithProvide(key, groupVm?.vnode);\n const index = children.indexOf(vm);\n if (unref(unwrapped.value) == null) {\n unwrapped.value = index;\n unwrapped.useIndexAsValue = true;\n }\n if (index > -1) {\n items.splice(index, 0, unwrapped);\n } else {\n items.push(unwrapped);\n }\n }\n function unregister(id) {\n if (isUnmounted) return;\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue();\n const index = items.findIndex(item => item.id === id);\n items.splice(index, 1);\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue() {\n const item = items.find(item => !item.disabled);\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id];\n }\n }\n onMounted(() => {\n forceMandatoryValue();\n });\n onBeforeUnmount(() => {\n isUnmounted = true;\n });\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i;\n }\n }\n });\n function select(id, value) {\n const item = items.find(item => item.id === id);\n if (value && item?.disabled) return;\n if (props.multiple) {\n const internalValue = selected.value.slice();\n const index = internalValue.findIndex(v => v === id);\n const isSelected = ~index;\n value = value ?? !isSelected;\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (isSelected && props.mandatory && internalValue.length <= 1) return;\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (!isSelected && props.max != null && internalValue.length + 1 > props.max) return;\n if (index < 0 && value) internalValue.push(id);else if (index >= 0 && !value) internalValue.splice(index, 1);\n selected.value = internalValue;\n } else {\n const isSelected = selected.value.includes(id);\n if (props.mandatory && isSelected) return;\n selected.value = value ?? !isSelected ? [id] : [];\n }\n }\n function step(offset) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop');\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled);\n item && (selected.value = [item.id]);\n } else {\n const currentId = selected.value[0];\n const currentIndex = items.findIndex(i => i.id === currentId);\n let newIndex = (currentIndex + offset) % items.length;\n let newItem = items[newIndex];\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length;\n newItem = items[newIndex];\n }\n if (newItem.disabled) return;\n selected.value = [items[newIndex].id];\n }\n }\n const state = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(props, 'disabled'),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: id => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => items),\n getItemIndex: value => getItemIndex(items, value)\n };\n provide(injectKey, state);\n return state;\n}\nfunction getItemIndex(items, value) {\n const ids = getIds(items, [value]);\n if (!ids.length) return -1;\n return items.findIndex(item => item.id === ids[0]);\n}\nfunction getIds(items, modelValue) {\n const ids = [];\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value));\n const itemByIndex = items[value];\n if (item?.value != null) {\n ids.push(item.id);\n } else if (itemByIndex != null) {\n ids.push(itemByIndex.id);\n }\n });\n return ids;\n}\nfunction getValues(items, ids) {\n const values = [];\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id);\n if (~itemIndex) {\n const item = items[itemIndex];\n values.push(item.value != null ? item.value : itemIndex);\n }\n });\n return values;\n}\n//# sourceMappingURL=group.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VBtnToggle.css\";\n\n// Components\nimport { makeVBtnGroupProps, VBtnGroup } from \"../VBtnGroup/VBtnGroup.mjs\"; // Composables\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VBtnToggleSymbol = Symbol.for('vuetify:v-btn-toggle');\nexport const makeVBtnToggleProps = propsFactory({\n ...makeVBtnGroupProps(),\n ...makeGroupProps()\n}, 'VBtnToggle');\nexport const VBtnToggle = genericComponent()({\n name: 'VBtnToggle',\n props: makeVBtnToggleProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isSelected,\n next,\n prev,\n select,\n selected\n } = useGroup(props, VBtnToggleSymbol);\n useRender(() => {\n const btnGroupProps = VBtnGroup.filterProps(props);\n return _createVNode(VBtnGroup, _mergeProps({\n \"class\": ['v-btn-toggle', props.class]\n }, btnGroupProps, {\n \"style\": props.style\n }), {\n default: () => [slots.default?.({\n isSelected,\n next,\n prev,\n select,\n selected\n })]\n });\n });\n return {\n next,\n prev,\n select\n };\n }\n});\n//# sourceMappingURL=VBtnToggle.mjs.map","// Utilities\nimport { convertToUnit, destructComputed, getCurrentInstanceName, includes, propsFactory } from \"../util/index.mjs\"; // Types\nconst predefinedSizes = ['x-small', 'small', 'default', 'large', 'x-large'];\n// Composables\nexport const makeSizeProps = propsFactory({\n size: {\n type: [String, Number],\n default: 'default'\n }\n}, 'size');\nexport function useSize(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n return destructComputed(() => {\n let sizeClasses;\n let sizeStyles;\n if (includes(predefinedSizes, props.size)) {\n sizeClasses = `${name}--size-${props.size}`;\n } else if (props.size) {\n sizeStyles = {\n width: convertToUnit(props.size),\n height: convertToUnit(props.size)\n };\n }\n return {\n sizeClasses,\n sizeStyles\n };\n });\n}\n//# sourceMappingURL=size.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VIcon.css\";\n\n// Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { IconValue, useIcon } from \"../../composables/icons.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, ref, Text, toRef } from 'vue';\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVIconProps = propsFactory({\n color: String,\n disabled: Boolean,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'i'\n }),\n ...makeThemeProps()\n}, 'VIcon');\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n props: makeVIconProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const slotIcon = ref();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n iconData\n } = useIcon(computed(() => slotIcon.value || props.icon));\n const {\n sizeClasses\n } = useSize(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n useRender(() => {\n const slotValue = slots.default?.();\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;\n }\n const hasClick = !!(attrs.onClick || attrs.onClickOnce);\n return _createVNode(iconData.value.component, {\n \"tag\": props.tag,\n \"icon\": iconData.value.icon,\n \"class\": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {\n 'v-icon--clickable': hasClick,\n 'v-icon--disabled': props.disabled,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end\n }, props.class],\n \"style\": [!sizeClasses.value ? {\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size)\n } : undefined, textColorStyles.value, props.style],\n \"role\": hasClick ? 'button' : undefined,\n \"aria-hidden\": !hasClick,\n \"tabindex\": hasClick ? props.disabled ? -1 : 0 : undefined\n }, {\n default: () => [slotValue]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VIcon.mjs.map","// Utilities\nimport { onBeforeUnmount, ref, shallowRef, watch } from 'vue';\nimport { SUPPORTS_INTERSECTION } from \"../util/index.mjs\";\nexport function useIntersectionObserver(callback, options) {\n const intersectionRef = ref();\n const isIntersecting = shallowRef(false);\n if (SUPPORTS_INTERSECTION) {\n const observer = new IntersectionObserver(entries => {\n callback?.(entries, observer);\n isIntersecting.value = !!entries.find(entry => entry.isIntersecting);\n }, options);\n onBeforeUnmount(() => {\n observer.disconnect();\n });\n watch(intersectionRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue);\n isIntersecting.value = false;\n }\n if (newValue) observer.observe(newValue);\n }, {\n flush: 'post'\n });\n }\n return {\n intersectionRef,\n isIntersecting\n };\n}\n//# sourceMappingURL=intersectionObserver.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VProgressCircular.css\";\n\n// Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, ref, toRef, watchEffect } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVProgressCircularProps = propsFactory({\n bgColor: String,\n color: String,\n indeterminate: [Boolean, String],\n modelValue: {\n type: [Number, String],\n default: 0\n },\n rotate: {\n type: [Number, String],\n default: 0\n },\n width: {\n type: [Number, String],\n default: 4\n },\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'div'\n }),\n ...makeThemeProps()\n}, 'VProgressCircular');\nexport const VProgressCircular = genericComponent()({\n name: 'VProgressCircular',\n props: makeVProgressCircularProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const MAGIC_RADIUS_CONSTANT = 20;\n const CIRCUMFERENCE = 2 * Math.PI * MAGIC_RADIUS_CONSTANT;\n const root = ref();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n const {\n textColorClasses: underlayColorClasses,\n textColorStyles: underlayColorStyles\n } = useTextColor(toRef(props, 'bgColor'));\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n const normalizedValue = computed(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));\n const width = computed(() => Number(props.width));\n const size = computed(() => {\n // Get size from element if size prop value is small, large etc\n return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);\n });\n const diameter = computed(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);\n const strokeWidth = computed(() => width.value / size.value * diameter.value);\n const strokeDashOffset = computed(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));\n watchEffect(() => {\n intersectionRef.value = root.value;\n resizeRef.value = root.value;\n });\n useRender(() => _createVNode(props.tag, {\n \"ref\": root,\n \"class\": ['v-progress-circular', {\n 'v-progress-circular--indeterminate': !!props.indeterminate,\n 'v-progress-circular--visible': isIntersecting.value,\n 'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'\n }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],\n \"style\": [sizeStyles.value, textColorStyles.value, props.style],\n \"role\": \"progressbar\",\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\",\n \"aria-valuenow\": props.indeterminate ? undefined : normalizedValue.value\n }, {\n default: () => [_createVNode(\"svg\", {\n \"style\": {\n transform: `rotate(calc(-90deg + ${Number(props.rotate)}deg))`\n },\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": `0 0 ${diameter.value} ${diameter.value}`\n }, [_createVNode(\"circle\", {\n \"class\": ['v-progress-circular__underlay', underlayColorClasses.value],\n \"style\": underlayColorStyles.value,\n \"fill\": \"transparent\",\n \"cx\": \"50%\",\n \"cy\": \"50%\",\n \"r\": MAGIC_RADIUS_CONSTANT,\n \"stroke-width\": strokeWidth.value,\n \"stroke-dasharray\": CIRCUMFERENCE,\n \"stroke-dashoffset\": 0\n }, null), _createVNode(\"circle\", {\n \"class\": \"v-progress-circular__overlay\",\n \"fill\": \"transparent\",\n \"cx\": \"50%\",\n \"cy\": \"50%\",\n \"r\": MAGIC_RADIUS_CONSTANT,\n \"stroke-width\": strokeWidth.value,\n \"stroke-dasharray\": CIRCUMFERENCE,\n \"stroke-dashoffset\": strokeDashOffset.value\n }, null)]), slots.default && _createVNode(\"div\", {\n \"class\": \"v-progress-circular__content\"\n }, [slots.default({\n value: normalizedValue.value\n })])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VProgressCircular.mjs.map","// Composables\nimport { useRtl } from \"./locale.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { parseAnchor, propsFactory } from \"../util/index.mjs\"; // Types\nconst oppositeMap = {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\nexport const makeLocationProps = propsFactory({\n location: String\n}, 'location');\nexport function useLocation(props) {\n let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let offset = arguments.length > 2 ? arguments[2] : undefined;\n const {\n isRtl\n } = useRtl();\n const locationStyles = computed(() => {\n if (!props.location) return {};\n const {\n side,\n align\n } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);\n function getOffset(side) {\n return offset ? offset(side) : 0;\n }\n const styles = {};\n if (side !== 'center') {\n if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;\n }\n if (align !== 'center') {\n if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;\n } else {\n if (side === 'center') styles.top = styles.left = '50%';else {\n styles[{\n top: 'left',\n bottom: 'left',\n left: 'top',\n right: 'top'\n }[side]] = '50%';\n }\n styles.transform = {\n top: 'translateX(-50%)',\n bottom: 'translateX(-50%)',\n left: 'translateY(-50%)',\n right: 'translateY(-50%)',\n center: 'translate(-50%, -50%)'\n }[side];\n }\n return styles;\n });\n return {\n locationStyles\n };\n}\n//# sourceMappingURL=location.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VProgressLinear.css\";\n\n// Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, Transition } from 'vue';\nimport { clamp, convertToUnit, genericComponent, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVProgressLinearProps = propsFactory({\n absolute: Boolean,\n active: {\n type: Boolean,\n default: true\n },\n bgColor: String,\n bgOpacity: [Number, String],\n bufferValue: {\n type: [Number, String],\n default: 0\n },\n bufferColor: String,\n bufferOpacity: [Number, String],\n clickable: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 4\n },\n indeterminate: Boolean,\n max: {\n type: [Number, String],\n default: 100\n },\n modelValue: {\n type: [Number, String],\n default: 0\n },\n opacity: [Number, String],\n reverse: Boolean,\n stream: Boolean,\n striped: Boolean,\n roundedBar: Boolean,\n ...makeComponentProps(),\n ...makeLocationProps({\n location: 'top'\n }),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VProgressLinear');\nexport const VProgressLinear = genericComponent()({\n name: 'VProgressLinear',\n props: makeVProgressLinearProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const progress = useProxiedModel(props, 'modelValue');\n const {\n isRtl,\n rtlClasses\n } = useRtl();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(props, 'color');\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(computed(() => props.bgColor || props.color));\n const {\n backgroundColorClasses: bufferColorClasses,\n backgroundColorStyles: bufferColorStyles\n } = useBackgroundColor(computed(() => props.bufferColor || props.bgColor || props.color));\n const {\n backgroundColorClasses: barColorClasses,\n backgroundColorStyles: barColorStyles\n } = useBackgroundColor(props, 'color');\n const {\n roundedClasses\n } = useRounded(props);\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n const max = computed(() => parseFloat(props.max));\n const height = computed(() => parseFloat(props.height));\n const normalizedBuffer = computed(() => clamp(parseFloat(props.bufferValue) / max.value * 100, 0, 100));\n const normalizedValue = computed(() => clamp(parseFloat(progress.value) / max.value * 100, 0, 100));\n const isReversed = computed(() => isRtl.value !== props.reverse);\n const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');\n const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;\n function handleClick(e) {\n if (!intersectionRef.value) return;\n const {\n left,\n right,\n width\n } = intersectionRef.value.getBoundingClientRect();\n const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;\n progress.value = Math.round(value / width * max.value);\n }\n useRender(() => _createVNode(props.tag, {\n \"ref\": intersectionRef,\n \"class\": ['v-progress-linear', {\n 'v-progress-linear--absolute': props.absolute,\n 'v-progress-linear--active': props.active && isIntersecting.value,\n 'v-progress-linear--reverse': isReversed.value,\n 'v-progress-linear--rounded': props.rounded,\n 'v-progress-linear--rounded-bar': props.roundedBar,\n 'v-progress-linear--striped': props.striped\n }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],\n \"style\": [{\n bottom: props.location === 'bottom' ? 0 : undefined,\n top: props.location === 'top' ? 0 : undefined,\n height: props.active ? convertToUnit(height.value) : 0,\n '--v-progress-linear-height': convertToUnit(height.value),\n ...(props.absolute ? locationStyles.value : {})\n }, props.style],\n \"role\": \"progressbar\",\n \"aria-hidden\": props.active ? 'false' : 'true',\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": props.max,\n \"aria-valuenow\": props.indeterminate ? undefined : normalizedValue.value,\n \"onClick\": props.clickable && handleClick\n }, {\n default: () => [props.stream && _createVNode(\"div\", {\n \"key\": \"stream\",\n \"class\": ['v-progress-linear__stream', textColorClasses.value],\n \"style\": {\n ...textColorStyles.value,\n [isReversed.value ? 'left' : 'right']: convertToUnit(-height.value),\n borderTop: `${convertToUnit(height.value / 2)} dotted`,\n opacity: parseFloat(props.bufferOpacity),\n top: `calc(50% - ${convertToUnit(height.value / 4)})`,\n width: convertToUnit(100 - normalizedBuffer.value, '%'),\n '--v-progress-linear-stream-to': convertToUnit(height.value * (isReversed.value ? 1 : -1))\n }\n }, null), _createVNode(\"div\", {\n \"class\": ['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],\n \"style\": [backgroundColorStyles.value, {\n opacity: parseFloat(props.bgOpacity),\n width: props.stream ? 0 : undefined\n }]\n }, null), _createVNode(\"div\", {\n \"class\": ['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined],\n \"style\": [bufferColorStyles.value, {\n opacity: parseFloat(props.bufferOpacity),\n width: convertToUnit(normalizedBuffer.value, '%')\n }]\n }, null), _createVNode(Transition, {\n \"name\": transition.value\n }, {\n default: () => [!props.indeterminate ? _createVNode(\"div\", {\n \"class\": ['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined],\n \"style\": [barColorStyles.value, {\n width: convertToUnit(normalizedValue.value, '%')\n }]\n }, null) : _createVNode(\"div\", {\n \"class\": \"v-progress-linear__indeterminate\"\n }, [['long', 'short'].map(bar => _createVNode(\"div\", {\n \"key\": bar,\n \"class\": ['v-progress-linear__indeterminate', bar, !isForcedColorsModeActive ? barColorClasses.value : undefined],\n \"style\": barColorStyles.value\n }, null))])]\n }), slots.default && _createVNode(\"div\", {\n \"class\": \"v-progress-linear__content\"\n }, [slots.default({\n value: normalizedValue.value,\n buffer: normalizedBuffer.value\n })])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VProgressLinear.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VProgressLinear } from \"../components/VProgressLinear/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeLoaderProps = propsFactory({\n loading: [Boolean, String]\n}, 'loader');\nexport function useLoader(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const loaderClasses = computed(() => ({\n [`${name}--loading`]: props.loading\n }));\n return {\n loaderClasses\n };\n}\nexport function LoaderSlot(props, _ref) {\n let {\n slots\n } = _ref;\n return _createVNode(\"div\", {\n \"class\": `${props.name}__loader`\n }, [slots.default?.({\n color: props.color,\n isActive: props.active\n }) || _createVNode(VProgressLinear, {\n \"absolute\": props.absolute,\n \"active\": props.active,\n \"color\": props.color,\n \"height\": \"2\",\n \"indeterminate\": true\n }, null)]);\n}\n//# sourceMappingURL=loader.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\nconst positionValues = ['static', 'relative', 'fixed', 'absolute', 'sticky'];\n// Composables\nexport const makePositionProps = propsFactory({\n position: {\n type: String,\n validator: /* istanbul ignore next */v => positionValues.includes(v)\n }\n}, 'position');\nexport function usePosition(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const positionClasses = computed(() => {\n return props.position ? `${name}--${props.position}` : undefined;\n });\n return {\n positionClasses\n };\n}\n//# sourceMappingURL=position.mjs.map","// Utilities\nimport { nextTick, watch } from 'vue';\n\n// Types\n\nexport function useSelectLink(link, select) {\n watch(() => link.isActive?.value, isActive => {\n if (link.isLink.value && isActive && select) {\n nextTick(() => {\n select(true);\n });\n }\n }, {\n immediate: true\n });\n}\n//# sourceMappingURL=selectLink.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBtn.css\";\n\n// Components\nimport { VBtnToggleSymbol } from \"../VBtnToggle/VBtnToggle.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { useSelectLink } from \"../../composables/selectLink.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, withDirectives } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBtnProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined\n },\n activeColor: String,\n baseColor: String,\n symbol: {\n type: null,\n default: VBtnToggleSymbol\n },\n flat: Boolean,\n icon: [Boolean, String, Function, Object],\n prependIcon: IconValue,\n appendIcon: IconValue,\n block: Boolean,\n readonly: Boolean,\n slim: Boolean,\n stacked: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n text: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'button'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'elevated'\n })\n}, 'VBtn');\nexport const VBtn = genericComponent()({\n name: 'VBtn',\n props: makeVBtnProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props);\n const group = useGroupItem(props, props.symbol, false);\n const link = useLink(props, attrs);\n const isActive = computed(() => {\n if (props.active !== undefined) {\n return props.active;\n }\n if (link.isLink.value) {\n return link.isActive?.value;\n }\n return group?.isSelected.value;\n });\n const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color);\n const variantProps = computed(() => {\n const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;\n return {\n color: showColor ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant\n };\n });\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(variantProps);\n const isDisabled = computed(() => group?.disabled.value || props.disabled);\n const isElevated = computed(() => {\n return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);\n });\n const valueAttr = computed(() => {\n if (props.value === undefined || typeof props.value === 'symbol') return undefined;\n return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;\n });\n function onClick(e) {\n if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === '_blank')) return;\n link.navigate?.(e);\n group?.toggle();\n }\n useSelectLink(link, group?.select);\n useRender(() => {\n const Tag = link.isLink.value ? 'a' : props.tag;\n const hasPrepend = !!(props.prependIcon || slots.prepend);\n const hasAppend = !!(props.appendIcon || slots.append);\n const hasIcon = !!(props.icon && props.icon !== true);\n return withDirectives(_createVNode(Tag, _mergeProps({\n \"type\": Tag === 'a' ? undefined : 'button',\n \"class\": ['v-btn', group?.selectedClass.value, {\n 'v-btn--active': isActive.value,\n 'v-btn--block': props.block,\n 'v-btn--disabled': isDisabled.value,\n 'v-btn--elevated': isElevated.value,\n 'v-btn--flat': props.flat,\n 'v-btn--icon': !!props.icon,\n 'v-btn--loading': props.loading,\n 'v-btn--readonly': props.readonly,\n 'v-btn--slim': props.slim,\n 'v-btn--stacked': props.stacked\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],\n \"aria-busy\": props.loading ? true : undefined,\n \"disabled\": isDisabled.value || undefined,\n \"tabindex\": props.loading || props.readonly ? -1 : undefined,\n \"onClick\": onClick,\n \"value\": valueAttr.value\n }, link.linkProps), {\n default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && _createVNode(\"span\", {\n \"key\": \"prepend\",\n \"class\": \"v-btn__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"icon\": props.prependIcon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !props.prependIcon,\n \"defaults\": {\n VIcon: {\n icon: props.prependIcon\n }\n }\n }, slots.prepend)]), _createVNode(\"span\", {\n \"class\": \"v-btn__content\",\n \"data-no-activator\": \"\"\n }, [!slots.default && hasIcon ? _createVNode(VIcon, {\n \"key\": \"content-icon\",\n \"icon\": props.icon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"content-defaults\",\n \"disabled\": !hasIcon,\n \"defaults\": {\n VIcon: {\n icon: props.icon\n }\n }\n }, {\n default: () => [slots.default?.() ?? props.text]\n })]), !props.icon && hasAppend && _createVNode(\"span\", {\n \"key\": \"append\",\n \"class\": \"v-btn__append\"\n }, [!slots.append ? _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"icon\": props.appendIcon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !props.appendIcon,\n \"defaults\": {\n VIcon: {\n icon: props.appendIcon\n }\n }\n }, slots.append)]), !!props.loading && _createVNode(\"span\", {\n \"key\": \"loader\",\n \"class\": \"v-btn__loader\"\n }, [slots.loader?.() ?? _createVNode(VProgressCircular, {\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true,\n \"width\": \"2\"\n }, null)])]\n }), [[Ripple, !isDisabled.value && props.ripple, '', {\n center: !!props.icon\n }]]);\n });\n return {\n group\n };\n }\n});\n//# sourceMappingURL=VBtn.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVAppBarNavIconProps = propsFactory({\n ...makeVBtnProps({\n icon: '$menu',\n variant: 'text'\n })\n}, 'VAppBarNavIcon');\nexport const VAppBarNavIcon = genericComponent()({\n name: 'VAppBarNavIcon',\n props: makeVAppBarNavIconProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(VBtn, _mergeProps(props, {\n \"class\": ['v-app-bar-nav-icon']\n }), slots));\n return {};\n }\n});\n//# sourceMappingURL=VAppBarNavIcon.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVToolbarTitleProps, VToolbarTitle } from \"../VToolbar/VToolbarTitle.mjs\"; // Utilities\nimport { genericComponent, useRender } from \"../../util/index.mjs\"; // Types\nexport const VAppBarTitle = genericComponent()({\n name: 'VAppBarTitle',\n props: makeVToolbarTitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(VToolbarTitle, _mergeProps(props, {\n \"class\": \"v-app-bar-title\"\n }), slots));\n return {};\n }\n});\n//# sourceMappingURL=VAppBarTitle.mjs.map","// Composables\nimport { makeComponentProps } from \"../composables/component.mjs\"; // Utilities\nimport { camelize, capitalize, h } from 'vue';\nimport { genericComponent } from \"./defineComponent.mjs\";\nexport function createSimpleFunctional(klass) {\n let tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'div';\n let name = arguments.length > 2 ? arguments[2] : undefined;\n return genericComponent()({\n name: name ?? capitalize(camelize(klass.replace(/__/g, '-'))),\n props: {\n tag: {\n type: String,\n default: tag\n },\n ...makeComponentProps()\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n return () => {\n return h(props.tag, {\n class: [klass, props.class],\n style: props.style\n }, slots.default?.());\n };\n }\n });\n}\n//# sourceMappingURL=createSimpleFunctional.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VAlertTitle = createSimpleFunctional('v-alert-title');\n//# sourceMappingURL=VAlertTitle.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VAlert.css\";\n\n// Components\nimport { VAlertTitle } from \"./VAlertTitle.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nconst allowedTypes = ['success', 'info', 'warning', 'error'];\nexport const makeVAlertProps = propsFactory({\n border: {\n type: [Boolean, String],\n validator: val => {\n return typeof val === 'boolean' || ['top', 'end', 'bottom', 'start'].includes(val);\n }\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close'\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close'\n },\n icon: {\n type: [Boolean, String, Function, Object],\n default: null\n },\n modelValue: {\n type: Boolean,\n default: true\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String,\n validator: val => allowedTypes.includes(val)\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'flat'\n })\n}, 'VAlert');\nexport const VAlert = genericComponent()({\n name: 'VAlert',\n props: makeVAlertProps(),\n emits: {\n 'click:close': e => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const icon = computed(() => {\n if (props.icon === false) return undefined;\n if (!props.type) return props.icon;\n return props.icon ?? `$${props.type}`;\n });\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant\n }));\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(variantProps);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'borderColor'));\n const {\n t\n } = useLocale();\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick(e) {\n isActive.value = false;\n emit('click:close', e);\n }\n }));\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value);\n const hasTitle = !!(slots.title || props.title);\n const hasClose = !!(slots.close || props.closable);\n return isActive.value && _createVNode(props.tag, {\n \"class\": ['v-alert', props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true\n }, {\n 'v-alert--prominent': props.prominent\n }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"role\": \"alert\"\n }, {\n default: () => [genOverlays(false, 'v-alert'), props.border && _createVNode(\"div\", {\n \"key\": \"border\",\n \"class\": ['v-alert__border', textColorClasses.value],\n \"style\": textColorStyles.value\n }, null), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-alert__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": icon.value,\n \"size\": props.prominent ? 44 : 28\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !icon.value,\n \"defaults\": {\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-alert__content\"\n }, [hasTitle && _createVNode(VAlertTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-alert__append\"\n }, [slots.append()]), hasClose && _createVNode(\"div\", {\n \"key\": \"close\",\n \"class\": \"v-alert__close\"\n }, [!slots.close ? _createVNode(VBtn, _mergeProps({\n \"key\": \"close-btn\",\n \"icon\": props.closeIcon,\n \"size\": \"x-small\",\n \"variant\": \"text\"\n }, closeProps.value), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"close-defaults\",\n \"defaults\": {\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.close?.({\n props: closeProps.value\n })]\n })])]\n });\n };\n }\n});\n//# sourceMappingURL=VAlert.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VAvatar.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVAvatarProps = propsFactory({\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n image: String,\n text: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'flat'\n })\n}, 'VAvatar');\nexport const VAvatar = genericComponent()({\n name: 'VAvatar',\n props: makeVAvatarProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-avatar', {\n 'v-avatar--start': props.start,\n 'v-avatar--end': props.end\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, sizeStyles.value, props.style]\n }, {\n default: () => [!slots.default ? props.image ? _createVNode(VImg, {\n \"key\": \"image\",\n \"src\": props.image,\n \"alt\": \"\",\n \"cover\": true\n }, null) : props.icon ? _createVNode(VIcon, {\n \"key\": \"icon\",\n \"icon\": props.icon\n }, null) : props.text : _createVNode(VDefaultsProvider, {\n \"key\": \"content-defaults\",\n \"defaults\": {\n VImg: {\n cover: true,\n src: props.image\n },\n VIcon: {\n icon: props.icon\n }\n }\n }, {\n default: () => [slots.default()]\n }), genOverlays(false, 'v-avatar')]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VAvatar.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLabel.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeThemeProps } from \"../../composables/theme.mjs\"; // Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLabelProps = propsFactory({\n text: String,\n onClick: EventProp(),\n ...makeComponentProps(),\n ...makeThemeProps()\n}, 'VLabel');\nexport const VLabel = genericComponent()({\n name: 'VLabel',\n props: makeVLabelProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(\"label\", {\n \"class\": ['v-label', {\n 'v-label--clickable': !!props.onClick\n }, props.class],\n \"style\": props.style,\n \"onClick\": props.onClick\n }, [props.text, slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VLabel.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSelectionControlGroup.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeThemeProps } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue';\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VSelectionControlGroupSymbol = Symbol.for('vuetify:selection-control-group');\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: {\n type: Boolean,\n default: null\n },\n defaultsTarget: String,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n multiple: {\n type: Boolean,\n default: null\n },\n name: String,\n readonly: {\n type: Boolean,\n default: null\n },\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function,\n default: deepEqual\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeThemeProps()\n}, 'SelectionControlGroup');\nexport const makeVSelectionControlGroupProps = propsFactory({\n ...makeSelectionControlGroupProps({\n defaultsTarget: 'VSelectionControl'\n })\n}, 'VSelectionControlGroup');\nexport const VSelectionControlGroup = genericComponent()({\n name: 'VSelectionControlGroup',\n props: makeVSelectionControlGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const modelValue = useProxiedModel(props, 'modelValue');\n const uid = getUid();\n const id = computed(() => props.id || `v-selection-control-group-${uid}`);\n const name = computed(() => props.name || id.value);\n const updateHandlers = new Set();\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn());\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb);\n onScopeDispose(() => {\n updateHandlers.delete(cb);\n });\n }\n });\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator')\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-selection-control-group', {\n 'v-selection-control-group--inline': props.inline\n }, props.class],\n \"style\": props.style,\n \"role\": props.type === 'radio' ? 'radiogroup' : undefined\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VSelectionControlGroup.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VSelectionControl.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from \"../VSelectionControlGroup/VSelectionControlGroup.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useDensity } from \"../../composables/density.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, matchesSelector, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps()\n}, 'VSelectionControl');\nexport function useSelectionControl(props) {\n const group = inject(VSelectionControlGroupSymbol, undefined);\n const {\n densityClasses\n } = useDensity(props);\n const modelValue = useProxiedModel(props, 'modelValue');\n const trueValue = computed(() => props.trueValue !== undefined ? props.trueValue : props.value !== undefined ? props.value : true);\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false);\n const isMultiple = computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value));\n const model = computed({\n get() {\n const val = group ? group.modelValue.value : modelValue.value;\n return isMultiple.value ? wrapInArray(val).some(v => props.valueComparator(v, trueValue.value)) : props.valueComparator(val, trueValue.value);\n },\n set(val) {\n if (props.readonly) return;\n const currentValue = val ? trueValue.value : falseValue.value;\n let newVal = currentValue;\n if (isMultiple.value) {\n newVal = val ? [...wrapInArray(modelValue.value), currentValue] : wrapInArray(modelValue.value).filter(item => !props.valueComparator(item, trueValue.value));\n }\n if (group) {\n group.modelValue.value = newVal;\n } else {\n modelValue.value = newVal;\n }\n }\n });\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => {\n if (props.error || props.disabled) return undefined;\n return model.value ? props.color : props.baseColor;\n }));\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(computed(() => {\n return model.value && !props.error && !props.disabled ? props.color : props.baseColor;\n }));\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon);\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon\n };\n}\nexport const VSelectionControl = genericComponent()({\n name: 'VSelectionControl',\n directives: {\n Ripple\n },\n inheritAttrs: false,\n props: makeVSelectionControlProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue\n } = useSelectionControl(props);\n const uid = getUid();\n const isFocused = shallowRef(false);\n const isFocusVisible = shallowRef(false);\n const input = ref();\n const id = computed(() => props.id || `input-${uid}`);\n const isInteractive = computed(() => !props.disabled && !props.readonly);\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value;\n }\n });\n function onFocus(e) {\n if (!isInteractive.value) return;\n isFocused.value = true;\n if (matchesSelector(e.target, ':focus-visible') !== false) {\n isFocusVisible.value = true;\n }\n }\n function onBlur() {\n isFocused.value = false;\n isFocusVisible.value = false;\n }\n function onClickLabel(e) {\n e.stopPropagation();\n }\n function onInput(e) {\n if (!isInteractive.value) {\n if (input.value) {\n // model value is not updated when input is not interactive\n // but the internal checked state of the input is still updated,\n // so here it's value is restored\n input.value.checked = model.value;\n }\n return;\n }\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate());\n }\n model.value = e.target.checked;\n }\n useRender(() => {\n const label = slots.label ? slots.label({\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const inputNode = _createVNode(\"input\", _mergeProps({\n \"ref\": input,\n \"checked\": model.value,\n \"disabled\": !!props.disabled,\n \"id\": id.value,\n \"onBlur\": onBlur,\n \"onFocus\": onFocus,\n \"onInput\": onInput,\n \"aria-disabled\": !!props.disabled,\n \"aria-label\": props.label,\n \"type\": props.type,\n \"value\": trueValue.value,\n \"name\": props.name,\n \"aria-checked\": props.type === 'checkbox' ? model.value : undefined\n }, inputAttrs), null);\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-selection-control', {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline\n }, densityClasses.value, props.class]\n }, rootAttrs, {\n \"style\": props.style\n }), [_createVNode(\"div\", {\n \"class\": ['v-selection-control__wrapper', textColorClasses.value],\n \"style\": textColorStyles.value\n }, [slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles\n }), _withDirectives(_createVNode(\"div\", {\n \"class\": ['v-selection-control__input']\n }, [slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value\n }\n }) ?? _createVNode(_Fragment, null, [icon.value && _createVNode(VIcon, {\n \"key\": \"icon\",\n \"icon\": icon.value\n }, null), inputNode])]), [[_resolveDirective(\"ripple\"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {\n \"for\": id.value,\n \"onClick\": onClickLabel\n }, {\n default: () => [label]\n })]);\n });\n return {\n isFocused,\n input\n };\n }\n});\n//# sourceMappingURL=VSelectionControl.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCheckboxBtnProps = propsFactory({\n indeterminate: Boolean,\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate'\n },\n ...makeVSelectionControlProps({\n falseIcon: '$checkboxOff',\n trueIcon: '$checkboxOn'\n })\n}, 'VCheckboxBtn');\nexport const VCheckboxBtn = genericComponent()({\n name: 'VCheckboxBtn',\n props: makeVCheckboxBtnProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n function onChange(v) {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n const falseIcon = computed(() => {\n return indeterminate.value ? props.indeterminateIcon : props.falseIcon;\n });\n const trueIcon = computed(() => {\n return indeterminate.value ? props.indeterminateIcon : props.trueIcon;\n });\n useRender(() => {\n const controlProps = omit(VSelectionControl.filterProps(props), ['modelValue']);\n return _createVNode(VSelectionControl, _mergeProps(controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"class\": ['v-checkbox-btn', props.class],\n \"style\": props.style,\n \"type\": \"checkbox\",\n \"falseIcon\": falseIcon.value,\n \"trueIcon\": trueIcon.value,\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCheckboxBtn.mjs.map","export function calculateUpdatedTarget(_ref) {\n let {\n selectedElement,\n containerElement,\n isRtl,\n isHorizontal\n } = _ref;\n const containerSize = getOffsetSize(isHorizontal, containerElement);\n const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement);\n const childrenSize = getOffsetSize(isHorizontal, selectedElement);\n const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement);\n const additionalOffset = childrenSize * 0.4;\n if (scrollPosition > childrenStartPosition) {\n return childrenStartPosition - additionalOffset;\n } else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) {\n return childrenStartPosition - containerSize + childrenSize + additionalOffset;\n }\n return scrollPosition;\n}\nexport function calculateCenteredTarget(_ref2) {\n let {\n selectedElement,\n containerElement,\n isHorizontal\n } = _ref2;\n const containerOffsetSize = getOffsetSize(isHorizontal, containerElement);\n const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement);\n const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement);\n return childrenOffsetPosition - containerOffsetSize / 2 + childrenOffsetSize / 2;\n}\nexport function getScrollSize(isHorizontal, element) {\n const key = isHorizontal ? 'scrollWidth' : 'scrollHeight';\n return element?.[key] || 0;\n}\nexport function getClientSize(isHorizontal, element) {\n const key = isHorizontal ? 'clientWidth' : 'clientHeight';\n return element?.[key] || 0;\n}\nexport function getScrollPosition(isHorizontal, rtl, element) {\n if (!element) {\n return 0;\n }\n const {\n scrollLeft,\n offsetWidth,\n scrollWidth\n } = element;\n if (isHorizontal) {\n return rtl ? scrollWidth - offsetWidth + scrollLeft : scrollLeft;\n }\n return element.scrollTop;\n}\nexport function getOffsetSize(isHorizontal, element) {\n const key = isHorizontal ? 'offsetWidth' : 'offsetHeight';\n return element?.[key] || 0;\n}\nexport function getOffsetPosition(isHorizontal, element) {\n const key = isHorizontal ? 'offsetLeft' : 'offsetTop';\n return element?.[key] || 0;\n}\n//# sourceMappingURL=helpers.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSlideGroup.css\";\n\n// Components\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { useGoTo } from \"../../composables/goto.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, shallowRef, watch } from 'vue';\nimport { calculateCenteredTarget, calculateUpdatedTarget, getClientSize, getOffsetSize, getScrollPosition, getScrollSize } from \"./helpers.mjs\";\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)\n },\n ...makeComponentProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active'\n })\n}, 'VSlideGroup');\nexport const VSlideGroup = genericComponent()({\n name: 'VSlideGroup',\n props: makeVSlideGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const group = useGroup(props, props.symbol);\n const isOverflowing = shallowRef(false);\n const scrollOffset = shallowRef(0);\n const containerSize = shallowRef(0);\n const contentSize = shallowRef(0);\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const {\n resizeRef: containerRef,\n contentRect: containerRect\n } = useResizeObserver();\n const {\n resizeRef: contentRef,\n contentRect\n } = useResizeObserver();\n const goTo = useGoTo();\n const goToOptions = computed(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart'\n };\n });\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1;\n return group.items.value.findIndex(item => item.id === group.selected.value[0]);\n });\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1;\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1]);\n });\n if (IN_BROWSER) {\n let frame = -1;\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height';\n containerSize.value = containerRect.value[sizeProperty];\n contentSize.value = contentRect.value[sizeProperty];\n isOverflowing.value = containerSize.value + 1 < contentSize.value;\n }\n if (firstSelectedIndex.value >= 0 && contentRef.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value];\n scrollToChildren(selectedElement, props.centerActive);\n }\n });\n });\n }\n const isFocused = shallowRef(false);\n function scrollToChildren(children, center) {\n let target = 0;\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el,\n isHorizontal: isHorizontal.value,\n selectedElement: children\n });\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children\n });\n }\n scrollToPosition(target);\n }\n function scrollToPosition(newPosition) {\n if (!IN_BROWSER || !containerRef.el) return;\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);\n if (scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16) return;\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const {\n scrollWidth,\n offsetWidth: containerWidth\n } = containerRef.el;\n newPosition = scrollWidth - containerWidth - newPosition;\n }\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value);\n } else {\n goTo(newPosition, goToOptions.value);\n }\n }\n function onScroll(e) {\n const {\n scrollTop,\n scrollLeft\n } = e.target;\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop;\n }\n function onFocusin(e) {\n isFocused.value = true;\n if (!isOverflowing.value || !contentRef.el) return;\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.el.children) {\n if (item === el) {\n scrollToChildren(item);\n return;\n }\n }\n }\n }\n function onFocusout(e) {\n isFocused.value = false;\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false;\n function onFocus(e) {\n if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();\n ignoreFocusEvent = false;\n }\n function onFocusAffixes() {\n ignoreFocusEvent = true;\n }\n function onKeydown(e) {\n if (!contentRef.el) return;\n function toFocus(location) {\n e.preventDefault();\n focus(location);\n }\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next');\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev');\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next');\n } else if (e.key === 'ArrowUp') {\n toFocus('prev');\n }\n }\n if (e.key === 'Home') {\n toFocus('first');\n } else if (e.key === 'End') {\n toFocus('last');\n }\n }\n function focus(location) {\n if (!contentRef.el) return;\n let el;\n if (!location) {\n const focusable = focusableChildren(contentRef.el);\n el = focusable[0];\n } else if (location === 'next') {\n el = contentRef.el.querySelector(':focus')?.nextElementSibling;\n if (!el) return focus('first');\n } else if (location === 'prev') {\n el = contentRef.el.querySelector(':focus')?.previousElementSibling;\n if (!el) return focus('last');\n } else if (location === 'first') {\n el = contentRef.el.firstElementChild;\n } else if (location === 'last') {\n el = contentRef.el.lastElementChild;\n }\n if (el) {\n el.focus({\n preventScroll: true\n });\n }\n }\n function scrollTo(location) {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1;\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value;\n let newPosition = scrollOffset.value + offsetStep;\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const {\n scrollWidth,\n offsetWidth: containerWidth\n } = containerRef.el;\n newPosition += scrollWidth - containerWidth;\n }\n scrollToPosition(newPosition);\n }\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected\n }));\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always':\n return true;\n\n // Always show arrows on desktop\n case 'desktop':\n return !mobile.value;\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true:\n return isOverflowing.value || Math.abs(scrollOffset.value) > 0;\n\n // Always show on mobile\n case 'mobile':\n return mobile.value || isOverflowing.value || Math.abs(scrollOffset.value) > 0;\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default:\n return !mobile.value && (isOverflowing.value || Math.abs(scrollOffset.value) > 0);\n }\n });\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1;\n });\n const hasNext = computed(() => {\n if (!containerRef.value) return false;\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);\n const clientSize = getClientSize(isHorizontal.value, containerRef.el);\n const scrollSizeMax = scrollSize - clientSize;\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1;\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-slide-group', {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value\n }, displayClasses.value, props.class],\n \"style\": props.style,\n \"tabindex\": isFocused.value || group.selected.value.length ? -1 : 0,\n \"onFocus\": onFocus\n }, {\n default: () => [hasAffixes.value && _createVNode(\"div\", {\n \"key\": \"prev\",\n \"class\": ['v-slide-group__prev', {\n 'v-slide-group__prev--disabled': !hasPrev.value\n }],\n \"onMousedown\": onFocusAffixes,\n \"onClick\": () => hasPrev.value && scrollTo('prev')\n }, [slots.prev?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {\n default: () => [_createVNode(VIcon, {\n \"icon\": isRtl.value ? props.nextIcon : props.prevIcon\n }, null)]\n })]), _createVNode(\"div\", {\n \"key\": \"container\",\n \"ref\": containerRef,\n \"class\": \"v-slide-group__container\",\n \"onScroll\": onScroll\n }, [_createVNode(\"div\", {\n \"ref\": contentRef,\n \"class\": \"v-slide-group__content\",\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"onKeydown\": onKeydown\n }, [slots.default?.(slotProps.value)])]), hasAffixes.value && _createVNode(\"div\", {\n \"key\": \"next\",\n \"class\": ['v-slide-group__next', {\n 'v-slide-group__next--disabled': !hasNext.value\n }],\n \"onMousedown\": onFocusAffixes,\n \"onClick\": () => hasNext.value && scrollTo('next')\n }, [slots.next?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {\n default: () => [_createVNode(VIcon, {\n \"icon\": isRtl.value ? props.prevIcon : props.nextIcon\n }, null)]\n })])]\n }));\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n hasPrev,\n hasNext\n };\n }\n});\n//# sourceMappingURL=VSlideGroup.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VChipGroup.css\";\n\n// Components\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { deepEqual, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VChipGroupSymbol = Symbol.for('vuetify:v-chip-group');\nexport const makeVChipGroupProps = propsFactory({\n column: Boolean,\n filter: Boolean,\n valueComparator: {\n type: Function,\n default: deepEqual\n },\n ...makeVSlideGroupProps(),\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-chip--selected'\n }),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'tonal'\n })\n}, 'VChipGroup');\nexport const VChipGroup = genericComponent()({\n name: 'VChipGroup',\n props: makeVChipGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isSelected,\n select,\n next,\n prev,\n selected\n } = useGroup(props, VChipGroupSymbol);\n provideDefaults({\n VChip: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n filter: toRef(props, 'filter'),\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n return _createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"class\": ['v-chip-group', {\n 'v-chip-group--column': props.column\n }, themeClasses.value, props.class],\n \"style\": props.style\n }), {\n default: () => [slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value\n })]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VChipGroup.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, withDirectives as _withDirectives, vShow as _vShow, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n/* eslint-disable complexity */\n// Styles\nimport \"./VChip.css\";\n\n// Components\nimport { VExpandXTransition } from \"../transitions/index.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VChipGroupSymbol } from \"../VChipGroup/VChipGroup.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVChipProps = propsFactory({\n activeClass: String,\n appendAvatar: String,\n appendIcon: IconValue,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$delete'\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close'\n },\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete'\n },\n label: Boolean,\n link: {\n type: Boolean,\n default: undefined\n },\n pill: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n text: String,\n modelValue: {\n type: Boolean,\n default: true\n },\n onClick: EventProp(),\n onClickOnce: EventProp(),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'span'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'tonal'\n })\n}, 'VChip');\nexport const VChip = genericComponent()({\n name: 'VChip',\n directives: {\n Ripple\n },\n props: makeVChipProps(),\n emits: {\n 'click:close': e => true,\n 'update:modelValue': value => true,\n 'group:selected': val => true,\n click: e => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n sizeClasses\n } = useSize(props);\n const {\n themeClasses\n } = provideTheme(props);\n const isActive = useProxiedModel(props, 'modelValue');\n const group = useGroupItem(props, VChipGroupSymbol, false);\n const link = useLink(props, attrs);\n const isLink = computed(() => props.link !== false && link.isLink.value);\n const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n isActive.value = false;\n emit('click:close', e);\n }\n }));\n function onClick(e) {\n emit('click', e);\n if (!isClickable.value) return;\n link.navigate?.(e);\n group?.toggle();\n }\n function onKeyDown(e) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick(e);\n }\n }\n return () => {\n const Tag = link.isLink.value ? 'a' : props.tag;\n const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasClose = !!(slots.close || props.closable);\n const hasFilter = !!(slots.filter || props.filter) && group;\n const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasColor = !group || group.isSelected.value;\n return isActive.value && _withDirectives(_createVNode(Tag, _mergeProps({\n \"class\": ['v-chip', {\n 'v-chip--disabled': props.disabled,\n 'v-chip--label': props.label,\n 'v-chip--link': isClickable.value,\n 'v-chip--filter': hasFilter,\n 'v-chip--pill': props.pill\n }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],\n \"style\": [hasColor ? colorStyles.value : undefined, props.style],\n \"disabled\": props.disabled || undefined,\n \"draggable\": props.draggable,\n \"tabindex\": isClickable.value ? 0 : undefined,\n \"onClick\": onClick,\n \"onKeydown\": isClickable.value && !isLink.value && onKeyDown\n }, link.linkProps), {\n default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && _createVNode(VExpandXTransition, {\n \"key\": \"filter\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-chip__filter\"\n }, [!slots.filter ? _createVNode(VIcon, {\n \"key\": \"filter-icon\",\n \"icon\": props.filterIcon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"filter-defaults\",\n \"disabled\": !props.filterIcon,\n \"defaults\": {\n VIcon: {\n icon: props.filterIcon\n }\n }\n }, slots.filter)]), [[_vShow, group.isSelected.value]])]\n }), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-chip__prepend\"\n }, [!slots.prepend ? _createVNode(_Fragment, null, [props.prependIcon && _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"icon\": props.prependIcon,\n \"start\": true\n }, null), props.prependAvatar && _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"image\": props.prependAvatar,\n \"start\": true\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n image: props.prependAvatar,\n start: true\n },\n VIcon: {\n icon: props.prependIcon,\n start: true\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-chip__content\",\n \"data-no-activator\": \"\"\n }, [slots.default?.({\n isSelected: group?.isSelected.value,\n selectedClass: group?.selectedClass.value,\n select: group?.select,\n toggle: group?.toggle,\n value: group?.value.value,\n disabled: props.disabled\n }) ?? props.text]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-chip__append\"\n }, [!slots.append ? _createVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"end\": true,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && _createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"end\": true,\n \"image\": props.appendAvatar\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n end: true,\n image: props.appendAvatar\n },\n VIcon: {\n end: true,\n icon: props.appendIcon\n }\n }\n }, slots.append)]), hasClose && _createVNode(\"button\", _mergeProps({\n \"key\": \"close\",\n \"class\": \"v-chip__close\",\n \"type\": \"button\",\n \"data-testid\": \"close-chip\"\n }, closeProps.value), [!slots.close ? _createVNode(VIcon, {\n \"key\": \"close-icon\",\n \"icon\": props.closeIcon,\n \"size\": \"x-small\"\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"close-defaults\",\n \"defaults\": {\n VIcon: {\n icon: props.closeIcon,\n size: 'x-small'\n }\n }\n }, slots.close)])]\n }), [[_resolveDirective(\"ripple\"), isClickable.value && props.ripple, null]]);\n };\n }\n});\n//# sourceMappingURL=VChip.mjs.map","// Utilities\nimport { computed, inject, provide, shallowRef } from 'vue';\n\n// Types\n\n// Depth\nexport const DepthKey = Symbol.for('vuetify:depth');\nexport function useDepth(hasPrepend) {\n const parent = inject(DepthKey, shallowRef(-1));\n const depth = computed(() => parent.value + 1 + (hasPrepend?.value ? 1 : 0));\n provide(DepthKey, depth);\n return depth;\n}\n\n// List\nexport const ListKey = Symbol.for('vuetify:list');\nexport function createList() {\n const parent = inject(ListKey, {\n hasPrepend: shallowRef(false),\n updateHasPrepend: () => null\n });\n const data = {\n hasPrepend: shallowRef(false),\n updateHasPrepend: value => {\n if (value) data.hasPrepend.value = value;\n }\n };\n provide(ListKey, data);\n return parent;\n}\nexport function useList() {\n return inject(ListKey, null);\n}\n//# sourceMappingURL=list.mjs.map","/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue';\nimport { wrapInArray } from \"../../util/index.mjs\";\nexport const independentActiveStrategy = mandatory => {\n const strategy = {\n activate: _ref => {\n let {\n id,\n value,\n activated\n } = _ref;\n id = toRaw(id);\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated;\n if (value) {\n activated.add(id);\n } else {\n activated.delete(id);\n }\n return activated;\n },\n in: (v, children, parents) => {\n let set = new Set();\n if (v != null) {\n for (const id of wrapInArray(v)) {\n set = strategy.activate({\n id,\n value: true,\n activated: new Set(set),\n children,\n parents\n });\n }\n }\n return set;\n },\n out: v => {\n return Array.from(v);\n }\n };\n return strategy;\n};\nexport const independentSingleActiveStrategy = mandatory => {\n const parentStrategy = independentActiveStrategy(mandatory);\n const strategy = {\n activate: _ref2 => {\n let {\n activated,\n id,\n ...rest\n } = _ref2;\n id = toRaw(id);\n const singleSelected = activated.has(id) ? new Set([id]) : new Set();\n return parentStrategy.activate({\n ...rest,\n id,\n activated: singleSelected\n });\n },\n in: (v, children, parents) => {\n let set = new Set();\n if (v != null) {\n const arr = wrapInArray(v);\n if (arr.length) {\n set = parentStrategy.in(arr.slice(0, 1), children, parents);\n }\n }\n return set;\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents);\n }\n };\n return strategy;\n};\nexport const leafActiveStrategy = mandatory => {\n const parentStrategy = independentActiveStrategy(mandatory);\n const strategy = {\n activate: _ref3 => {\n let {\n id,\n activated,\n children,\n ...rest\n } = _ref3;\n id = toRaw(id);\n if (children.has(id)) return activated;\n return parentStrategy.activate({\n id,\n activated,\n children,\n ...rest\n });\n },\n in: parentStrategy.in,\n out: parentStrategy.out\n };\n return strategy;\n};\nexport const leafSingleActiveStrategy = mandatory => {\n const parentStrategy = independentSingleActiveStrategy(mandatory);\n const strategy = {\n activate: _ref4 => {\n let {\n id,\n activated,\n children,\n ...rest\n } = _ref4;\n id = toRaw(id);\n if (children.has(id)) return activated;\n return parentStrategy.activate({\n id,\n activated,\n children,\n ...rest\n });\n },\n in: parentStrategy.in,\n out: parentStrategy.out\n };\n return strategy;\n};\n//# sourceMappingURL=activeStrategies.mjs.map","export const singleOpenStrategy = {\n open: _ref => {\n let {\n id,\n value,\n opened,\n parents\n } = _ref;\n if (value) {\n const newOpened = new Set();\n newOpened.add(id);\n let parent = parents.get(id);\n while (parent != null) {\n newOpened.add(parent);\n parent = parents.get(parent);\n }\n return newOpened;\n } else {\n opened.delete(id);\n return opened;\n }\n },\n select: () => null\n};\nexport const multipleOpenStrategy = {\n open: _ref2 => {\n let {\n id,\n value,\n opened,\n parents\n } = _ref2;\n if (value) {\n let parent = parents.get(id);\n opened.add(id);\n while (parent != null && parent !== id) {\n opened.add(parent);\n parent = parents.get(parent);\n }\n return opened;\n } else {\n opened.delete(id);\n }\n return opened;\n },\n select: () => null\n};\nexport const listOpenStrategy = {\n open: multipleOpenStrategy.open,\n select: _ref3 => {\n let {\n id,\n value,\n opened,\n parents\n } = _ref3;\n if (!value) return opened;\n const path = [];\n let parent = parents.get(id);\n while (parent != null) {\n path.push(parent);\n parent = parents.get(parent);\n }\n return new Set(path);\n }\n};\n//# sourceMappingURL=openStrategies.mjs.map","/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue';\nexport const independentSelectStrategy = mandatory => {\n const strategy = {\n select: _ref => {\n let {\n id,\n value,\n selected\n } = _ref;\n id = toRaw(id);\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, _ref2) => {\n let [key, value] = _ref2;\n if (value === 'on') arr.push(key);\n return arr;\n }, []);\n if (on.length === 1 && on[0] === id) return selected;\n }\n selected.set(id, value ? 'on' : 'off');\n return selected;\n },\n in: (v, children, parents) => {\n let map = new Map();\n for (const id of v || []) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents\n });\n }\n return map;\n },\n out: v => {\n const arr = [];\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key);\n }\n return arr;\n }\n };\n return strategy;\n};\nexport const independentSingleSelectStrategy = mandatory => {\n const parentStrategy = independentSelectStrategy(mandatory);\n const strategy = {\n select: _ref3 => {\n let {\n selected,\n id,\n ...rest\n } = _ref3;\n id = toRaw(id);\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();\n return parentStrategy.select({\n ...rest,\n id,\n selected: singleSelected\n });\n },\n in: (v, children, parents) => {\n let map = new Map();\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents);\n }\n return map;\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents);\n }\n };\n return strategy;\n};\nexport const leafSelectStrategy = mandatory => {\n const parentStrategy = independentSelectStrategy(mandatory);\n const strategy = {\n select: _ref4 => {\n let {\n id,\n selected,\n children,\n ...rest\n } = _ref4;\n id = toRaw(id);\n if (children.has(id)) return selected;\n return parentStrategy.select({\n id,\n selected,\n children,\n ...rest\n });\n },\n in: parentStrategy.in,\n out: parentStrategy.out\n };\n return strategy;\n};\nexport const leafSingleSelectStrategy = mandatory => {\n const parentStrategy = independentSingleSelectStrategy(mandatory);\n const strategy = {\n select: _ref5 => {\n let {\n id,\n selected,\n children,\n ...rest\n } = _ref5;\n id = toRaw(id);\n if (children.has(id)) return selected;\n return parentStrategy.select({\n id,\n selected,\n children,\n ...rest\n });\n },\n in: parentStrategy.in,\n out: parentStrategy.out\n };\n return strategy;\n};\nexport const classicSelectStrategy = mandatory => {\n const strategy = {\n select: _ref6 => {\n let {\n id,\n value,\n selected,\n children,\n parents\n } = _ref6;\n id = toRaw(id);\n const original = new Map(selected);\n const items = [id];\n while (items.length) {\n const item = items.shift();\n selected.set(toRaw(item), value ? 'on' : 'off');\n if (children.has(item)) {\n items.push(...children.get(item));\n }\n }\n let parent = toRaw(parents.get(id));\n while (parent) {\n const childrenIds = children.get(parent);\n const everySelected = childrenIds.every(cid => selected.get(toRaw(cid)) === 'on');\n const noneSelected = childrenIds.every(cid => !selected.has(toRaw(cid)) || selected.get(toRaw(cid)) === 'off');\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');\n parent = toRaw(parents.get(parent));\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, _ref7) => {\n let [key, value] = _ref7;\n if (value === 'on') arr.push(key);\n return arr;\n }, []);\n if (on.length === 0) return original;\n }\n return selected;\n },\n in: (v, children, parents) => {\n let map = new Map();\n for (const id of v || []) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents\n });\n }\n return map;\n },\n out: (v, children) => {\n const arr = [];\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key);\n }\n return arr;\n }\n };\n return strategy;\n};\n//# sourceMappingURL=selectStrategies.mjs.map","// Composables\nimport { useProxiedModel } from \"../proxiedModel.mjs\"; // Utilities\nimport { computed, inject, onBeforeUnmount, provide, ref, shallowRef, toRaw, toRef } from 'vue';\nimport { independentActiveStrategy, independentSingleActiveStrategy, leafActiveStrategy, leafSingleActiveStrategy } from \"./activeStrategies.mjs\";\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from \"./openStrategies.mjs\";\nimport { classicSelectStrategy, independentSelectStrategy, independentSingleSelectStrategy, leafSelectStrategy, leafSingleSelectStrategy } from \"./selectStrategies.mjs\";\nimport { consoleError, getCurrentInstance, getUid, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const VNestedSymbol = Symbol.for('vuetify:nested');\nexport const emptyNested = {\n id: shallowRef(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => []\n }\n};\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object],\n selectStrategy: [String, Function, Object],\n openStrategy: [String, Object],\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean\n}, 'nested');\nexport const useNested = props => {\n let isUnmounted = false;\n const children = ref(new Map());\n const parents = ref(new Map());\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy;\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);\n switch (props.activeStrategy) {\n case 'leaf':\n return leafActiveStrategy(props.mandatory);\n case 'single-leaf':\n return leafSingleActiveStrategy(props.mandatory);\n case 'independent':\n return independentActiveStrategy(props.mandatory);\n case 'single-independent':\n default:\n return independentSingleActiveStrategy(props.mandatory);\n }\n });\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy;\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory);\n switch (props.selectStrategy) {\n case 'single-leaf':\n return leafSingleSelectStrategy(props.mandatory);\n case 'leaf':\n return leafSelectStrategy(props.mandatory);\n case 'independent':\n return independentSelectStrategy(props.mandatory);\n case 'single-independent':\n return independentSingleSelectStrategy(props.mandatory);\n case 'classic':\n default:\n return classicSelectStrategy(props.mandatory);\n }\n });\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy;\n switch (props.openStrategy) {\n case 'list':\n return listOpenStrategy;\n case 'single':\n return singleOpenStrategy;\n case 'multiple':\n default:\n return multipleOpenStrategy;\n }\n });\n const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));\n const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));\n onBeforeUnmount(() => {\n isUnmounted = true;\n });\n function getPath(id) {\n const path = [];\n let parent = id;\n while (parent != null) {\n path.unshift(parent);\n parent = parents.value.get(parent);\n }\n return path;\n }\n const vm = getCurrentInstance('nested');\n const nodeIds = new Set();\n const nested = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(props, 'activatable'),\n selectable: toRef(props, 'selectable'),\n activated,\n selected,\n selectedValues: computed(() => {\n const arr = [];\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key);\n }\n return arr;\n }),\n register: (id, parentId, isGroup) => {\n if (nodeIds.has(id)) {\n const path = getPath(id).map(String).join(' -> ');\n const newPath = getPath(parentId).concat(id).map(String).join(' -> ');\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`);\n return;\n } else {\n nodeIds.add(id);\n }\n parentId && id !== parentId && parents.value.set(id, parentId);\n isGroup && children.value.set(id, []);\n if (parentId != null) {\n children.value.set(parentId, [...(children.value.get(parentId) || []), id]);\n }\n },\n unregister: id => {\n if (isUnmounted) return;\n nodeIds.delete(id);\n children.value.delete(id);\n const parent = parents.value.get(id);\n if (parent) {\n const list = children.value.get(parent) ?? [];\n children.value.set(parent, list.filter(child => child !== id));\n }\n parents.value.delete(id);\n },\n open: (id, value, event) => {\n vm.emit('click:open', {\n id,\n value,\n path: getPath(id),\n event\n });\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event\n });\n newOpened && (opened.value = newOpened);\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event\n });\n newOpened && (opened.value = newOpened);\n },\n select: (id, value, event) => {\n vm.emit('click:select', {\n id,\n value,\n path: getPath(id),\n event\n });\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event\n });\n newSelected && (selected.value = newSelected);\n nested.root.openOnSelect(id, value, event);\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event);\n }\n vm.emit('click:activate', {\n id,\n value,\n path: getPath(id),\n event\n });\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event\n });\n newActivated && (activated.value = newActivated);\n },\n children,\n parents,\n getPath\n }\n };\n provide(VNestedSymbol, nested);\n return nested.root;\n};\nexport const useNestedItem = (id, isGroup) => {\n const parent = inject(VNestedSymbol, emptyNested);\n const uidSymbol = Symbol(getUid());\n const computedId = computed(() => id.value !== undefined ? id.value : uidSymbol);\n const item = {\n ...parent,\n id: computedId,\n open: (open, e) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n activate: (activated, e) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),\n select: (selected, e) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator\n };\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup);\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value);\n });\n isGroup && provide(VNestedSymbol, item);\n return item;\n};\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested);\n provide(VNestedSymbol, {\n ...parent,\n isGroupActivator: true\n });\n};\n//# sourceMappingURL=nested.mjs.map","import { withDirectives as _withDirectives, vShow as _vShow, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpandTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { useList } from \"./list.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useNestedGroupActivator, useNestedItem } from \"../../composables/nested/nested.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { defineComponent, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nconst VListGroupActivator = defineComponent({\n name: 'VListGroupActivator',\n setup(_, _ref) {\n let {\n slots\n } = _ref;\n useNestedGroupActivator();\n return () => slots.default?.();\n }\n});\nexport const makeVListGroupProps = propsFactory({\n /* @deprecated */\n activeColor: String,\n baseColor: String,\n color: String,\n collapseIcon: {\n type: IconValue,\n default: '$collapse'\n },\n expandIcon: {\n type: IconValue,\n default: '$expand'\n },\n prependIcon: IconValue,\n appendIcon: IconValue,\n fluid: Boolean,\n subgroup: Boolean,\n title: String,\n value: null,\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VListGroup');\nexport const VListGroup = genericComponent()({\n name: 'VListGroup',\n props: makeVListGroupProps(),\n setup(props, _ref2) {\n let {\n slots\n } = _ref2;\n const {\n isOpen,\n open,\n id: _id\n } = useNestedItem(toRef(props, 'value'), true);\n const id = computed(() => `v-list-group--id-${String(_id.value)}`);\n const list = useList();\n const {\n isBooted\n } = useSsrBoot();\n function onClick(e) {\n e.stopPropagation();\n open(!isOpen.value, e);\n }\n const activatorProps = computed(() => ({\n onClick,\n class: 'v-list-group__header',\n id: id.value\n }));\n const toggleIcon = computed(() => isOpen.value ? props.collapseIcon : props.expandIcon);\n const activatorDefaults = computed(() => ({\n VListItem: {\n active: isOpen.value,\n activeColor: props.activeColor,\n baseColor: props.baseColor,\n color: props.color,\n prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,\n appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,\n title: props.title,\n value: props.value\n }\n }));\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-list-group', {\n 'v-list-group--prepend': list?.hasPrepend.value,\n 'v-list-group--fluid': props.fluid,\n 'v-list-group--subgroup': props.subgroup,\n 'v-list-group--open': isOpen.value\n }, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.activator && _createVNode(VDefaultsProvider, {\n \"defaults\": activatorDefaults.value\n }, {\n default: () => [_createVNode(VListGroupActivator, null, {\n default: () => [slots.activator({\n props: activatorProps.value,\n isOpen: isOpen.value\n })]\n })]\n }), _createVNode(MaybeTransition, {\n \"transition\": {\n component: VExpandTransition\n },\n \"disabled\": !isBooted.value\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-list-group__items\",\n \"role\": \"group\",\n \"aria-labelledby\": id.value\n }, [slots.default?.()]), [[_vShow, isOpen.value]])]\n })]\n }));\n return {\n isOpen\n };\n }\n});\n//# sourceMappingURL=VListGroup.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVListItemSubtitleProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VListItemSubtitle');\nexport const VListItemSubtitle = genericComponent()({\n name: 'VListItemSubtitle',\n props: makeVListItemSubtitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-list-item-subtitle', props.class],\n \"style\": [{\n '--v-list-item-subtitle-opacity': props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VListItemSubtitle.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VListItemTitle = createSimpleFunctional('v-list-item-title');\n//# sourceMappingURL=VListItemTitle.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VListItem.css\";\n\n// Components\nimport { VListItemSubtitle } from \"./VListItemSubtitle.mjs\";\nimport { VListItemTitle } from \"./VListItemTitle.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useList } from \"./list.mjs\";\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useNestedItem } from \"../../composables/nested/nested.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, watch } from 'vue';\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String],\n link: {\n type: Boolean,\n default: undefined\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n slim: Boolean,\n subtitle: [String, Number],\n title: [String, Number],\n value: null,\n onClick: EventProp(),\n onClickOnce: EventProp(),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VListItem');\nexport const VListItem = genericComponent()({\n name: 'VListItem',\n directives: {\n Ripple\n },\n props: makeVListItemProps(),\n emits: {\n click: e => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots,\n emit\n } = _ref;\n const link = useLink(props, attrs);\n const id = computed(() => props.value === undefined ? link.href.value : props.value);\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid\n } = useNestedItem(id, false);\n const list = useList();\n const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));\n const isLink = computed(() => props.link !== false && link.isLink.value);\n const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));\n const roundedProps = computed(() => props.rounded || props.nav);\n const color = computed(() => props.color ?? props.activeColor);\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant\n }));\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true);\n }\n if (val) {\n openOnSelect(val);\n }\n }, {\n immediate: true\n });\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(variantProps);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(roundedProps);\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value\n }));\n function onClick(e) {\n emit('click', e);\n if (!isClickable.value) return;\n link.navigate?.(e);\n if (isGroupActivator) return;\n if (root.activatable.value) {\n activate(!isActivated.value, e);\n } else if (root.selectable.value) {\n select(!isSelected.value, e);\n } else if (props.value != null) {\n select(!isSelected.value, e);\n }\n }\n function onKeyDown(e) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.target.dispatchEvent(new MouseEvent('click', e));\n }\n }\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag;\n const hasTitle = slots.title || props.title != null;\n const hasSubtitle = slots.subtitle || props.subtitle != null;\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n list?.updateHasPrepend(hasPrepend);\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color']);\n }\n return _withDirectives(_createVNode(Tag, _mergeProps({\n \"class\": ['v-list-item', {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, props.style],\n \"tabindex\": isClickable.value ? list ? -2 : 0 : undefined,\n \"aria-selected\": root.activatable.value ? isActivated.value : isSelected.value,\n \"onClick\": onClick,\n \"onKeydown\": isClickable.value && !isLink.value && onKeyDown\n }, link.linkProps), {\n default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-list-item__prepend\"\n }, [!slots.prepend ? _createVNode(_Fragment, null, [props.prependAvatar && _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"density\": props.density,\n \"image\": props.prependAvatar\n }, null), props.prependIcon && _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": props.prependIcon\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.prependAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon\n },\n VListItemAction: {\n start: true\n }\n }\n }, {\n default: () => [slots.prepend?.(slotProps.value)]\n }), _createVNode(\"div\", {\n \"class\": \"v-list-item__spacer\"\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-list-item__content\",\n \"data-no-activator\": \"\"\n }, [hasTitle && _createVNode(VListItemTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title?.({\n title: props.title\n }) ?? props.title]\n }), hasSubtitle && _createVNode(VListItemSubtitle, {\n \"key\": \"subtitle\"\n }, {\n default: () => [slots.subtitle?.({\n subtitle: props.subtitle\n }) ?? props.subtitle]\n }), slots.default?.(slotProps.value)]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-list-item__append\"\n }, [!slots.append ? _createVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"density\": props.density,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && _createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"density\": props.density,\n \"image\": props.appendAvatar\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.appendAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon\n },\n VListItemAction: {\n end: true\n }\n }\n }, {\n default: () => [slots.append?.(slotProps.value)]\n }), _createVNode(\"div\", {\n \"class\": \"v-list-item__spacer\"\n }, null)])]\n }), [[_resolveDirective(\"ripple\"), isClickable.value && props.ripple]]);\n });\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid\n };\n }\n});\n//# sourceMappingURL=VListItem.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVListSubheaderProps = propsFactory({\n color: String,\n inset: Boolean,\n sticky: Boolean,\n title: String,\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VListSubheader');\nexport const VListSubheader = genericComponent()({\n name: 'VListSubheader',\n props: makeVListSubheaderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n useRender(() => {\n const hasText = !!(slots.default || props.title);\n return _createVNode(props.tag, {\n \"class\": ['v-list-subheader', {\n 'v-list-subheader--inset': props.inset,\n 'v-list-subheader--sticky': props.sticky\n }, textColorClasses.value, props.class],\n \"style\": [{\n textColorStyles\n }, props.style]\n }, {\n default: () => [hasText && _createVNode(\"div\", {\n \"class\": \"v-list-subheader__text\"\n }, [slots.default?.() ?? props.title])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VListSubheader.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDivider.css\";\n\n// Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVDividerProps = propsFactory({\n color: String,\n inset: Boolean,\n length: [Number, String],\n opacity: [Number, String],\n thickness: [Number, String],\n vertical: Boolean,\n ...makeComponentProps(),\n ...makeThemeProps()\n}, 'VDivider');\nexport const VDivider = genericComponent()({\n name: 'VDivider',\n props: makeVDividerProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n const dividerStyles = computed(() => {\n const styles = {};\n if (props.length) {\n styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);\n }\n if (props.thickness) {\n styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);\n }\n return styles;\n });\n useRender(() => {\n const divider = _createVNode(\"hr\", {\n \"class\": [{\n 'v-divider': true,\n 'v-divider--inset': props.inset,\n 'v-divider--vertical': props.vertical\n }, themeClasses.value, textColorClasses.value, props.class],\n \"style\": [dividerStyles.value, textColorStyles.value, {\n '--v-border-opacity': props.opacity\n }, props.style],\n \"aria-orientation\": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,\n \"role\": `${attrs.role || 'separator'}`\n }, null);\n if (!slots.default) return divider;\n return _createVNode(\"div\", {\n \"class\": ['v-divider__wrapper', {\n 'v-divider__wrapper--vertical': props.vertical,\n 'v-divider__wrapper--inset': props.inset\n }]\n }, [divider, _createVNode(\"div\", {\n \"class\": \"v-divider__content\"\n }, [slots.default()]), divider]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDivider.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VListGroup } from \"./VListGroup.mjs\";\nimport { VListItem } from \"./VListItem.mjs\";\nimport { VListSubheader } from \"./VListSubheader.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\"; // Utilities\nimport { createList } from \"./list.mjs\";\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVListChildrenProps = propsFactory({\n items: Array,\n returnObject: Boolean\n}, 'VListChildren');\nexport const VListChildren = genericComponent()({\n name: 'VListChildren',\n props: makeVListChildrenProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n createList();\n return () => slots.default?.() ?? props.items?.map(_ref2 => {\n let {\n children,\n props: itemProps,\n type,\n raw: item\n } = _ref2;\n if (type === 'divider') {\n return slots.divider?.({\n props: itemProps\n }) ?? _createVNode(VDivider, itemProps, null);\n }\n if (type === 'subheader') {\n return slots.subheader?.({\n props: itemProps\n }) ?? _createVNode(VListSubheader, itemProps, null);\n }\n const slotsWithItem = {\n subtitle: slots.subtitle ? slotProps => slots.subtitle?.({\n ...slotProps,\n item\n }) : undefined,\n prepend: slots.prepend ? slotProps => slots.prepend?.({\n ...slotProps,\n item\n }) : undefined,\n append: slots.append ? slotProps => slots.append?.({\n ...slotProps,\n item\n }) : undefined,\n title: slots.title ? slotProps => slots.title?.({\n ...slotProps,\n item\n }) : undefined\n };\n const listGroupProps = VListGroup.filterProps(itemProps);\n return children ? _createVNode(VListGroup, _mergeProps({\n \"value\": itemProps?.value\n }, listGroupProps), {\n activator: _ref3 => {\n let {\n props: activatorProps\n } = _ref3;\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: props.returnObject ? item : itemProps.value\n };\n return slots.header ? slots.header({\n props: listItemProps\n }) : _createVNode(VListItem, listItemProps, slotsWithItem);\n },\n default: () => _createVNode(VListChildren, {\n \"items\": children,\n \"returnObject\": props.returnObject\n }, slots)\n }) : slots.item ? slots.item({\n props: itemProps\n }) : _createVNode(VListItem, _mergeProps(itemProps, {\n \"value\": props.returnObject ? item : itemProps.value\n }), slotsWithItem);\n });\n }\n});\n//# sourceMappingURL=VListChildren.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { deepEqual, getPropertyFromItem, omit, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeItemsProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n itemTitle: {\n type: [String, Array, Function],\n default: 'title'\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'value'\n },\n itemChildren: {\n type: [Boolean, String, Array, Function],\n default: 'children'\n },\n itemProps: {\n type: [Boolean, String, Array, Function],\n default: 'props'\n },\n returnObject: Boolean,\n valueComparator: {\n type: Function,\n default: deepEqual\n }\n}, 'list-items');\nexport function transformItem(props, item) {\n const title = getPropertyFromItem(item, props.itemTitle, item);\n const value = getPropertyFromItem(item, props.itemValue, title);\n const children = getPropertyFromItem(item, props.itemChildren);\n const itemProps = props.itemProps === true ? typeof item === 'object' && item != null && !Array.isArray(item) ? 'children' in item ? omit(item, ['children']) : item : undefined : getPropertyFromItem(item, props.itemProps);\n const _props = {\n title,\n value,\n ...itemProps\n };\n return {\n title: String(_props.title ?? ''),\n value: _props.value,\n props: _props,\n children: Array.isArray(children) ? transformItems(props, children) : undefined,\n raw: item\n };\n}\nexport function transformItems(props, items) {\n const array = [];\n for (const item of items) {\n array.push(transformItem(props, item));\n }\n return array;\n}\nexport function useItems(props) {\n const items = computed(() => transformItems(props, props.items));\n const hasNullItem = computed(() => items.value.some(item => item.value === null));\n function transformIn(value) {\n if (!hasNullItem.value) {\n // When the model value is null, return an InternalItem\n // based on null only if null is one of the items\n value = value.filter(v => v !== null);\n }\n return value.map(v => {\n if (props.returnObject && typeof v === 'string') {\n // String model value means value is a custom input value from combobox\n // Don't look up existing items if the model value is a string\n return transformItem(props, v);\n }\n return items.value.find(item => props.valueComparator(v, item.value)) || transformItem(props, v);\n });\n }\n function transformOut(value) {\n return props.returnObject ? value.map(_ref => {\n let {\n raw\n } = _ref;\n return raw;\n }) : value.map(_ref2 => {\n let {\n value\n } = _ref2;\n return value;\n });\n }\n return {\n items,\n transformIn,\n transformOut\n };\n}\n//# sourceMappingURL=list-items.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VList.css\";\n\n// Components\nimport { VListChildren } from \"./VListChildren.mjs\"; // Composables\nimport { createList } from \"./list.mjs\";\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeItemsProps } from \"../../composables/list-items.mjs\";\nimport { makeNestedProps, useNested } from \"../../composables/nested/nested.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, ref, shallowRef, toRef } from 'vue';\nimport { EventProp, focusChild, genericComponent, getPropertyFromItem, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nfunction isPrimitive(value) {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\nfunction transformItem(props, item) {\n const type = getPropertyFromItem(item, props.itemType, 'item');\n const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);\n const value = getPropertyFromItem(item, props.itemValue, undefined);\n const children = getPropertyFromItem(item, props.itemChildren);\n const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);\n const _props = {\n title,\n value,\n ...itemProps\n };\n return {\n type,\n title: _props.title,\n value: _props.value,\n props: _props,\n children: type === 'item' && children ? transformItems(props, children) : undefined,\n raw: item\n };\n}\nfunction transformItems(props, items) {\n const array = [];\n for (const item of items) {\n array.push(transformItem(props, item));\n }\n return array;\n}\nexport function useListItems(props) {\n const items = computed(() => transformItems(props, props.items));\n return {\n items\n };\n}\nexport const makeVListProps = propsFactory({\n baseColor: String,\n /* @deprecated */\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n expandIcon: String,\n collapseIcon: String,\n lines: {\n type: [Boolean, String],\n default: 'one'\n },\n slim: Boolean,\n nav: Boolean,\n 'onClick:open': EventProp(),\n 'onClick:select': EventProp(),\n 'onUpdate:opened': EventProp(),\n ...makeNestedProps({\n selectStrategy: 'single-leaf',\n openStrategy: 'list'\n }),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n itemType: {\n type: String,\n default: 'type'\n },\n ...makeItemsProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VList');\nexport const VList = genericComponent()({\n name: 'VList',\n props: makeVListProps(),\n emits: {\n 'update:selected': value => true,\n 'update:activated': value => true,\n 'update:opened': value => true,\n 'click:open': value => true,\n 'click:activate': value => true,\n 'click:select': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n items\n } = useListItems(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n borderClasses\n } = useBorder(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n children,\n open,\n parents,\n select,\n getPath\n } = useNested(props);\n const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);\n const activeColor = toRef(props, 'activeColor');\n const baseColor = toRef(props, 'baseColor');\n const color = toRef(props, 'color');\n createList();\n provideDefaults({\n VListGroup: {\n activeColor,\n baseColor,\n color,\n expandIcon: toRef(props, 'expandIcon'),\n collapseIcon: toRef(props, 'collapseIcon')\n },\n VListItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n nav: toRef(props, 'nav'),\n slim: toRef(props, 'slim'),\n variant: toRef(props, 'variant')\n }\n });\n const isFocused = shallowRef(false);\n const contentRef = ref();\n function onFocusin(e) {\n isFocused.value = true;\n }\n function onFocusout(e) {\n isFocused.value = false;\n }\n function onFocus(e) {\n if (!isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();\n }\n function onKeydown(e) {\n const target = e.target;\n if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) return;\n if (e.key === 'ArrowDown') {\n focus('next');\n } else if (e.key === 'ArrowUp') {\n focus('prev');\n } else if (e.key === 'Home') {\n focus('first');\n } else if (e.key === 'End') {\n focus('last');\n } else {\n return;\n }\n e.preventDefault();\n }\n function onMousedown(e) {\n isFocused.value = true;\n }\n function focus(location) {\n if (contentRef.value) {\n return focusChild(contentRef.value, location);\n }\n }\n useRender(() => {\n return _createVNode(props.tag, {\n \"ref\": contentRef,\n \"class\": ['v-list', {\n 'v-list--disabled': props.disabled,\n 'v-list--nav': props.nav,\n 'v-list--slim': props.slim\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, props.style],\n \"tabindex\": props.disabled || isFocused.value ? -1 : 0,\n \"role\": \"listbox\",\n \"aria-activedescendant\": undefined,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"onFocus\": onFocus,\n \"onKeydown\": onKeydown,\n \"onMousedown\": onMousedown\n }, {\n default: () => [_createVNode(VListChildren, {\n \"items\": items.value,\n \"returnObject\": props.returnObject\n }, slots)]\n });\n });\n return {\n open,\n select,\n focus,\n children,\n parents,\n getPath\n };\n }\n});\n//# sourceMappingURL=VList.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMenu.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onBeforeUnmount, onDeactivated, provide, ref, shallowRef, watch } from 'vue';\nimport { VMenuSymbol } from \"./shared.mjs\";\nimport { focusableChildren, focusChild, genericComponent, getNextElement, getUid, IN_BROWSER, isClickInsideElement, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n submenu: Boolean,\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected',\n location: undefined,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition',\n transition: {\n component: VDialogTransition\n }\n }), ['absolute'])\n}, 'VMenu');\nexport const VMenu = genericComponent()({\n name: 'VMenu',\n props: makeVMenuProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const {\n isRtl\n } = useRtl();\n const uid = getUid();\n const id = computed(() => props.id || `v-menu-${uid}`);\n const overlay = ref();\n const parent = inject(VMenuSymbol, null);\n const openChildren = shallowRef(new Set());\n provide(VMenuSymbol, {\n register() {\n openChildren.value.add(uid);\n },\n unregister() {\n openChildren.value.delete(uid);\n },\n closeParents(e) {\n setTimeout(() => {\n if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {\n isActive.value = false;\n parent?.closeParents();\n }\n }, 40);\n }\n });\n onBeforeUnmount(() => {\n parent?.unregister();\n document.removeEventListener('focusin', onFocusIn);\n });\n onDeactivated(() => isActive.value = false);\n async function onFocusIn(e) {\n const before = e.relatedTarget;\n const after = e.target;\n await nextTick();\n if (isActive.value && before !== after && overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)) {\n const focusable = focusableChildren(overlay.value.contentEl);\n focusable[0]?.focus();\n }\n }\n watch(isActive, val => {\n if (val) {\n parent?.register();\n if (IN_BROWSER) {\n document.addEventListener('focusin', onFocusIn, {\n once: true\n });\n }\n } else {\n parent?.unregister();\n if (IN_BROWSER) {\n document.removeEventListener('focusin', onFocusIn);\n }\n }\n }, {\n immediate: true\n });\n function onClickOutside(e) {\n parent?.closeParents(e);\n }\n function onKeydown(e) {\n if (props.disabled) return;\n if (e.key === 'Tab' || e.key === 'Enter' && !props.closeOnContentClick) {\n if (e.key === 'Enter' && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest('form'))) return;\n if (e.key === 'Enter') e.preventDefault();\n const nextElement = getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? 'prev' : 'next', el => el.tabIndex >= 0);\n if (!nextElement) {\n isActive.value = false;\n overlay.value?.activatorEl?.focus();\n }\n } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false;\n overlay.value?.activatorEl?.focus();\n }\n }\n function onActivatorKeydown(e) {\n if (props.disabled) return;\n const el = overlay.value?.contentEl;\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopImmediatePropagation();\n focusChild(el, 'next');\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopImmediatePropagation();\n focusChild(el, 'prev');\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false;\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault();\n focusChild(el, 'first');\n }\n }\n } else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true;\n e.preventDefault();\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)));\n }\n }\n const activatorProps = computed(() => mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"id\": id.value,\n \"class\": ['v-menu', props.class],\n \"style\": props.style\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"absolute\": true,\n \"activatorProps\": activatorProps.value,\n \"location\": props.location ?? (props.submenu ? 'end' : 'bottom'),\n \"onClick:outside\": onClickOutside,\n \"onKeydown\": onKeydown\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(VDefaultsProvider, {\n \"root\": \"VMenu\"\n }, {\n default: () => [slots.default?.(...args)]\n });\n }\n });\n });\n return forwardRefs({\n id,\n ΨopenChildren: openChildren\n }, overlay);\n }\n});\n//# sourceMappingURL=VMenu.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from \"vue\";\n// Styles\nimport \"./VCounter.css\";\n\n// Components\nimport { VSlideYTransition } from \"../transitions/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCounterProps = propsFactory({\n active: Boolean,\n disabled: Boolean,\n max: [Number, String],\n value: {\n type: [Number, String],\n default: 0\n },\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition\n }\n })\n}, 'VCounter');\nexport const VCounter = genericComponent()({\n name: 'VCounter',\n functional: true,\n props: makeVCounterProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const counter = computed(() => {\n return props.max ? `${props.value} / ${props.max}` : String(props.value);\n });\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-counter', {\n 'text-error': props.max && !props.disabled && parseFloat(props.value) > parseFloat(props.max)\n }, props.class],\n \"style\": props.style\n }, [slots.default ? slots.default({\n counter: counter.value,\n max: props.max,\n value: props.value\n }) : counter.value]), [[_vShow, props.active]])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VCounter.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { VLabel } from \"../VLabel/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVFieldLabelProps = propsFactory({\n floating: Boolean,\n ...makeComponentProps()\n}, 'VFieldLabel');\nexport const VFieldLabel = genericComponent()({\n name: 'VFieldLabel',\n props: makeVFieldLabelProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(VLabel, {\n \"class\": ['v-field-label', {\n 'v-field-label--floating': props.floating\n }, props.class],\n \"style\": props.style,\n \"aria-hidden\": props.floating || undefined\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VFieldLabel.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useLocale } from \"../../composables/locale.mjs\"; // Types\nexport function useInputIcon(props) {\n const {\n t\n } = useLocale();\n function InputIcon(_ref) {\n let {\n name\n } = _ref;\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear'\n }[name];\n const listener = props[`onClick:${name}`];\n const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;\n return _createVNode(VIcon, {\n \"icon\": props[`${name}Icon`],\n \"aria-label\": label,\n \"onClick\": listener\n }, null);\n }\n return {\n InputIcon\n };\n}\n//# sourceMappingURL=InputIcon.mjs.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, getCurrentInstanceName, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeFocusProps = propsFactory({\n focused: Boolean,\n 'onUpdate:focused': EventProp()\n}, 'focus');\nexport function useFocus(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const isFocused = useProxiedModel(props, 'focused');\n const focusClasses = computed(() => {\n return {\n [`${name}--focused`]: isFocused.value\n };\n });\n function focus() {\n isFocused.value = true;\n }\n function blur() {\n isFocused.value = false;\n }\n return {\n focusClasses,\n isFocused,\n focus,\n blur\n };\n}\n//# sourceMappingURL=focus.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, withDirectives as _withDirectives, vShow as _vShow, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VField.css\";\n\n// Components\nimport { VFieldLabel } from \"./VFieldLabel.mjs\";\nimport { VExpandXTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { useInputIcon } from \"../VInput/InputIcon.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, ref, toRef, watch } from 'vue';\nimport { animate, convertToUnit, EventProp, genericComponent, getUid, isOn, nullifyTransforms, pick, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'];\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear'\n },\n active: Boolean,\n centerAffix: {\n type: Boolean,\n default: undefined\n },\n color: String,\n baseColor: String,\n dirty: Boolean,\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n flat: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String,\n default: 'filled',\n validator: v => allowedVariants.includes(v)\n },\n 'onClick:clear': EventProp(),\n 'onClick:appendInner': EventProp(),\n 'onClick:prependInner': EventProp(),\n ...makeComponentProps(),\n ...makeLoaderProps(),\n ...makeRoundedProps(),\n ...makeThemeProps()\n}, 'VField');\nexport const VField = genericComponent()({\n name: 'VField',\n inheritAttrs: false,\n props: {\n id: String,\n ...makeFocusProps(),\n ...makeVFieldProps()\n },\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n focusClasses,\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const {\n InputIcon\n } = useInputIcon(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n rtlClasses\n } = useRtl();\n const isActive = computed(() => props.dirty || props.active);\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));\n const uid = getUid();\n const id = computed(() => props.id || `input-${uid}`);\n const messagesId = computed(() => `${id.value}-messages`);\n const labelRef = ref();\n const floatingLabelRef = ref();\n const controlRef = ref();\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => {\n return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;\n }));\n watch(isActive, val => {\n if (hasLabel.value) {\n const el = labelRef.value.$el;\n const targetEl = floatingLabelRef.value.$el;\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el);\n const targetRect = targetEl.getBoundingClientRect();\n const x = targetRect.x - rect.x;\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);\n const targetWidth = targetRect.width / 0.75;\n const width = Math.abs(targetWidth - rect.width) > 1 ? {\n maxWidth: convertToUnit(targetWidth)\n } : undefined;\n const style = getComputedStyle(el);\n const targetStyle = getComputedStyle(targetEl);\n const duration = parseFloat(style.transitionDuration) * 1000 || 150;\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));\n const color = targetStyle.getPropertyValue('color');\n el.style.visibility = 'visible';\n targetEl.style.visibility = 'hidden';\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse'\n }).finished.then(() => {\n el.style.removeProperty('visibility');\n targetEl.style.removeProperty('visibility');\n });\n });\n }\n }, {\n flush: 'post'\n });\n const slotProps = computed(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus\n }));\n function onClick(e) {\n if (e.target !== document.activeElement) {\n e.preventDefault();\n }\n }\n function onKeydownClear(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n props['onClick:clear']?.(new MouseEvent('click'));\n }\n useRender(() => {\n const isOutlined = props.variant === 'outlined';\n const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);\n const hasClear = !!(props.clearable || slots.clear);\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);\n const label = () => slots.label ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-field', {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--flat': props.flat,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label(),\n [`v-field--variant-${props.variant}`]: true\n }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, rtlClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style],\n \"onClick\": onClick\n }, attrs), [_createVNode(\"div\", {\n \"class\": \"v-field__overlay\"\n }, null), _createVNode(LoaderSlot, {\n \"name\": \"v-field\",\n \"active\": !!props.loading,\n \"color\": props.error ? 'error' : typeof props.loading === 'string' ? props.loading : props.color\n }, {\n default: slots.loader\n }), hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-field__prepend-inner\"\n }, [props.prependInnerIcon && _createVNode(InputIcon, {\n \"key\": \"prepend-icon\",\n \"name\": \"prependInner\"\n }, null), slots['prepend-inner']?.(slotProps.value)]), _createVNode(\"div\", {\n \"class\": \"v-field__field\",\n \"data-no-activator\": \"\"\n }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && _createVNode(VFieldLabel, {\n \"key\": \"floating-label\",\n \"ref\": floatingLabelRef,\n \"class\": [textColorClasses.value],\n \"floating\": true,\n \"for\": id.value,\n \"style\": textColorStyles.value\n }, {\n default: () => [label()]\n }), _createVNode(VFieldLabel, {\n \"ref\": labelRef,\n \"for\": id.value\n }, {\n default: () => [label()]\n }), slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value\n },\n focus,\n blur\n })]), hasClear && _createVNode(VExpandXTransition, {\n \"key\": \"clear\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-field__clearable\",\n \"onMousedown\": e => {\n e.preventDefault();\n e.stopPropagation();\n }\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon: props.clearIcon\n }\n }\n }, {\n default: () => [slots.clear ? slots.clear({\n ...slotProps.value,\n props: {\n onKeydown: onKeydownClear,\n onFocus: focus,\n onBlur: blur,\n onClick: props['onClick:clear']\n }\n }) : _createVNode(InputIcon, {\n \"name\": \"clear\",\n \"onKeydown\": onKeydownClear,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, null)]\n })]), [[_vShow, props.dirty]])]\n }), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-field__append-inner\"\n }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && _createVNode(InputIcon, {\n \"key\": \"append-icon\",\n \"name\": \"appendInner\"\n }, null)]), _createVNode(\"div\", {\n \"class\": ['v-field__outline', textColorClasses.value],\n \"style\": textColorStyles.value\n }, [isOutlined && _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"class\": \"v-field__outline__start\"\n }, null), hasLabel.value && _createVNode(\"div\", {\n \"class\": \"v-field__outline__notch\"\n }, [_createVNode(VFieldLabel, {\n \"ref\": floatingLabelRef,\n \"floating\": true,\n \"for\": id.value\n }, {\n default: () => [label()]\n })]), _createVNode(\"div\", {\n \"class\": \"v-field__outline__end\"\n }, null)]), isPlainOrUnderlined.value && hasLabel.value && _createVNode(VFieldLabel, {\n \"ref\": floatingLabelRef,\n \"floating\": true,\n \"for\": id.value\n }, {\n default: () => [label()]\n })])]);\n });\n return {\n controlRef\n };\n }\n});\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps(attrs) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');\n return pick(attrs, keys);\n}\n//# sourceMappingURL=VField.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMessages.css\";\n\n// Components\nimport { VSlideYTransition } from \"../transitions/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVMessagesProps = propsFactory({\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String],\n default: () => []\n },\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition,\n leaveAbsolute: true,\n group: true\n }\n })\n}, 'VMessages');\nexport const VMessages = genericComponent()({\n name: 'VMessages',\n props: makeVMessagesProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const messages = computed(() => wrapInArray(props.messages));\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(computed(() => props.color));\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"tag\": \"div\",\n \"class\": ['v-messages', textColorClasses.value, props.class],\n \"style\": [textColorStyles.value, props.style],\n \"role\": \"alert\",\n \"aria-live\": \"polite\"\n }, {\n default: () => [props.active && messages.value.map((message, i) => _createVNode(\"div\", {\n \"class\": \"v-messages__message\",\n \"key\": `${i}-${messages.value}`\n }, [slots.message ? slots.message({\n message\n }) : message]))]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VMessages.mjs.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed, inject, markRaw, provide, ref, shallowRef, toRef, watch } from 'vue';\nimport { consoleWarn, propsFactory } from \"../util/index.mjs\"; // Types\nexport const FormKey = Symbol.for('vuetify:form');\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n validateOn: {\n type: String,\n default: 'input'\n }\n}, 'form');\nexport function createForm(props) {\n const model = useProxiedModel(props, 'modelValue');\n const isDisabled = computed(() => props.disabled);\n const isReadonly = computed(() => props.readonly);\n const isValidating = shallowRef(false);\n const items = ref([]);\n const errors = ref([]);\n async function validate() {\n const results = [];\n let valid = true;\n errors.value = [];\n isValidating.value = true;\n for (const item of items.value) {\n const itemErrorMessages = await item.validate();\n if (itemErrorMessages.length > 0) {\n valid = false;\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages\n });\n }\n if (!valid && props.fastFail) break;\n }\n errors.value = results;\n isValidating.value = false;\n return {\n valid,\n errors: errors.value\n };\n }\n function reset() {\n items.value.forEach(item => item.reset());\n }\n function resetValidation() {\n items.value.forEach(item => item.resetValidation());\n }\n watch(items, () => {\n let valid = 0;\n let invalid = 0;\n const results = [];\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++;\n results.push({\n id: item.id,\n errorMessages: item.errorMessages\n });\n } else if (item.isValid === true) valid++;\n }\n errors.value = results;\n model.value = invalid > 0 ? false : valid === items.value.length ? true : null;\n }, {\n deep: true,\n flush: 'post'\n });\n provide(FormKey, {\n register: _ref => {\n let {\n id,\n vm,\n validate,\n reset,\n resetValidation\n } = _ref;\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`);\n }\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n vm: markRaw(vm),\n isValid: null,\n errorMessages: []\n });\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id;\n });\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id);\n if (!found) return;\n found.isValid = isValid;\n found.errorMessages = errorMessages;\n },\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validateOn: toRef(props, 'validateOn')\n });\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validate,\n reset,\n resetValidation\n };\n}\nexport function useForm() {\n return inject(FormKey, null);\n}\n//# sourceMappingURL=form.mjs.map","// Composables\nimport { makeFocusProps } from \"./focus.mjs\";\nimport { useForm } from \"./form.mjs\";\nimport { useProxiedModel } from \"./proxiedModel.mjs\";\nimport { useToggleScope } from \"./toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, watch } from 'vue';\nimport { getCurrentInstance, getCurrentInstanceName, getUid, propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String],\n default: () => []\n },\n maxErrors: {\n type: [Number, String],\n default: 1\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean,\n default: null\n },\n rules: {\n type: Array,\n default: () => []\n },\n modelValue: null,\n validateOn: String,\n validationValue: null,\n ...makeFocusProps()\n}, 'validation');\nexport function useValidation(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();\n const model = useProxiedModel(props, 'modelValue');\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);\n const form = useForm();\n const internalErrorMessages = ref([]);\n const isPristine = shallowRef(true);\n const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));\n const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value));\n const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value));\n const errorMessages = computed(() => {\n return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;\n });\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form?.validateOn.value) || 'input';\n if (value === 'lazy') value = 'input lazy';\n if (value === 'eager') value = 'input eager';\n const set = new Set(value?.split(' ') ?? []);\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager')\n };\n });\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false;\n if (!props.rules.length) return true;\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;\n } else {\n return !internalErrorMessages.value.length;\n }\n });\n const isValidating = shallowRef(false);\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value\n };\n });\n const vm = getCurrentInstance('validation');\n const uid = computed(() => props.name ?? unref(id));\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation\n });\n });\n onBeforeUnmount(() => {\n form?.unregister(uid.value);\n });\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager);\n }\n form?.update(uid.value, isValid.value, errorMessages.value);\n });\n useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate();\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate();\n unwatch();\n });\n }\n });\n });\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate();\n });\n });\n watch([isValid, errorMessages], () => {\n form?.update(uid.value, isValid.value, errorMessages.value);\n });\n async function reset() {\n model.value = null;\n await nextTick();\n await resetValidation();\n }\n async function resetValidation() {\n isPristine.value = true;\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager);\n } else {\n internalErrorMessages.value = [];\n }\n }\n async function validate() {\n let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n const results = [];\n isValidating.value = true;\n for (const rule of props.rules) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break;\n }\n const handler = typeof rule === 'function' ? rule : () => rule;\n const result = await handler(validationModel.value);\n if (result === true) continue;\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);\n continue;\n }\n results.push(result || '');\n }\n internalErrorMessages.value = results;\n isValidating.value = false;\n isPristine.value = silent;\n return internalErrorMessages.value;\n }\n return {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n };\n}\n//# sourceMappingURL=validation.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VInput.css\";\n\n// Components\nimport { useInputIcon } from \"./InputIcon.mjs\";\nimport { VMessages } from \"../VMessages/VMessages.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeValidationProps, useValidation } from \"../../composables/validation.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { EventProp, genericComponent, getUid, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n centerAffix: {\n type: Boolean,\n default: true\n },\n prependIcon: IconValue,\n hideDetails: [Boolean, String],\n hideSpinButtons: Boolean,\n hint: String,\n persistentHint: Boolean,\n messages: {\n type: [Array, String],\n default: () => []\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator: v => ['horizontal', 'vertical'].includes(v)\n },\n 'onClick:prepend': EventProp(),\n 'onClick:append': EventProp(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...only(makeDimensionProps(), ['maxWidth', 'minWidth', 'width']),\n ...makeThemeProps(),\n ...makeValidationProps()\n}, 'VInput');\nexport const VInput = genericComponent()({\n name: 'VInput',\n props: {\n ...makeVInputProps()\n },\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots,\n emit\n } = _ref;\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses\n } = useRtl();\n const {\n InputIcon\n } = useInputIcon(props);\n const uid = getUid();\n const id = computed(() => props.id || `input-${uid}`);\n const messagesId = computed(() => `${id.value}-messages`);\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n } = useValidation(props, 'v-input', id);\n const slotProps = computed(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate\n }));\n const messages = computed(() => {\n if (props.errorMessages?.length || !isPristine.value && errorMessages.value.length) {\n return errorMessages.value;\n } else if (props.hint && (props.persistentHint || props.focused)) {\n return props.hint;\n } else {\n return props.messages;\n }\n });\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon);\n const hasAppend = !!(slots.append || props.appendIcon);\n const hasMessages = messages.value.length > 0;\n const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);\n return _createVNode(\"div\", {\n \"class\": ['v-input', `v-input--${props.direction}`, {\n 'v-input--center-affix': props.centerAffix,\n 'v-input--hide-spin-buttons': props.hideSpinButtons\n }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-input__prepend\"\n }, [slots.prepend?.(slotProps.value), props.prependIcon && _createVNode(InputIcon, {\n \"key\": \"prepend-icon\",\n \"name\": \"prepend\"\n }, null)]), slots.default && _createVNode(\"div\", {\n \"class\": \"v-input__control\"\n }, [slots.default?.(slotProps.value)]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-input__append\"\n }, [props.appendIcon && _createVNode(InputIcon, {\n \"key\": \"append-icon\",\n \"name\": \"append\"\n }, null), slots.append?.(slotProps.value)]), hasDetails && _createVNode(\"div\", {\n \"class\": \"v-input__details\"\n }, [_createVNode(VMessages, {\n \"id\": messagesId.value,\n \"active\": hasMessages,\n \"messages\": messages.value\n }, {\n message: slots.message\n }), slots.details?.(slotProps.value)])]);\n });\n return {\n reset,\n resetValidation,\n validate,\n isValid,\n errorMessages\n };\n }\n});\n//# sourceMappingURL=VInput.mjs.map","import { Fragment as _Fragment, withDirectives as _withDirectives, createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VTextField.css\";\n\n// Components\nimport { VCounter } from \"../VCounter/VCounter.mjs\";\nimport { filterFieldProps, makeVFieldProps, VField } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport Intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue';\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: [Number, Function],\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text'\n },\n modelModifiers: Object,\n ...makeVInputProps(),\n ...makeVFieldProps()\n}, 'VTextField');\nexport const VTextField = genericComponent()({\n name: 'VTextField',\n directives: {\n Intersect\n },\n inheritAttrs: false,\n props: makeVTextFieldProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;\n });\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength;\n if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;\n return props.counter;\n });\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n function onIntersect(isIntersecting, entries) {\n if (!props.autofocus || !isIntersecting) return;\n entries[0].target?.focus?.();\n }\n const vInputRef = ref();\n const vFieldRef = ref();\n const inputRef = ref();\n const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);\n function onFocus() {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n if (e.target === inputRef.value) return;\n onFocus();\n e.preventDefault();\n }\n function onControlClick(e) {\n onFocus();\n emit('click:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = null;\n callEvent(props['onClick:clear'], e);\n });\n }\n function onInput(e) {\n const el = e.target;\n model.value = el.value;\n if (props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {\n const caretPosition = [el.selectionStart, el.selectionEnd];\n nextTick(() => {\n el.selectionStart = caretPosition[0];\n el.selectionEnd = caretPosition[1];\n });\n }\n }\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-text-field', {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"centerAffix\": !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"onMousedown\": onControlMousedown,\n \"onClick\": onControlClick,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner'],\n \"role\": props.role\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref3 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref3;\n const inputNode = _withDirectives(_createVNode(\"input\", _mergeProps({\n \"ref\": inputRef,\n \"value\": model.value,\n \"onInput\": onInput,\n \"autofocus\": props.autofocus,\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"name\": props.name,\n \"placeholder\": props.placeholder,\n \"size\": 1,\n \"type\": props.type,\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect\n }, null, {\n once: true\n }]]);\n return _createVNode(_Fragment, null, [props.prefix && _createVNode(\"span\", {\n \"class\": \"v-text-field__prefix\"\n }, [_createVNode(\"span\", {\n \"class\": \"v-text-field__prefix__text\"\n }, [props.prefix])]), slots.default ? _createVNode(\"div\", {\n \"class\": fieldClass,\n \"data-no-activator\": \"\"\n }, [slots.default(), inputNode]) : cloneVNode(inputNode, {\n class: fieldClass\n }), props.suffix && _createVNode(\"span\", {\n \"class\": \"v-text-field__suffix\"\n }, [_createVNode(\"span\", {\n \"class\": \"v-text-field__suffix__text\"\n }, [props.suffix])])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": props.persistentCounter || isFocused.value,\n \"value\": counterValue.value,\n \"max\": max.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, inputRef);\n }\n});\n//# sourceMappingURL=VTextField.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { watch } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVVirtualScrollItemProps = propsFactory({\n renderless: Boolean,\n ...makeComponentProps()\n}, 'VVirtualScrollItem');\nexport const VVirtualScrollItem = genericComponent()({\n name: 'VVirtualScrollItem',\n inheritAttrs: false,\n props: makeVVirtualScrollItemProps(),\n emits: {\n 'update:height': height => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n resizeRef,\n contentRect\n } = useResizeObserver(undefined, 'border');\n watch(() => contentRect.value?.height, height => {\n if (height != null) emit('update:height', height);\n });\n useRender(() => props.renderless ? _createVNode(_Fragment, null, [slots.default?.({\n itemRef: resizeRef\n })]) : _createVNode(\"div\", _mergeProps({\n \"ref\": resizeRef,\n \"class\": ['v-virtual-scroll__item', props.class],\n \"style\": props.style\n }, attrs), [slots.default?.()]));\n }\n});\n//# sourceMappingURL=VVirtualScrollItem.mjs.map","// Composables\nimport { useDisplay } from \"./display.mjs\";\nimport { useResizeObserver } from \"./resizeObserver.mjs\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { clamp, debounce, IN_BROWSER, propsFactory } from \"../util/index.mjs\"; // Types\nconst UP = -1;\nconst DOWN = 1;\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100;\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null\n },\n height: [Number, String]\n}, 'virtual');\nexport function useVirtual(props, items) {\n const display = useDisplay();\n const itemHeight = shallowRef(0);\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0);\n });\n const first = shallowRef(0);\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height) || display.height.value) / (itemHeight.value || 16)) || 1);\n const paddingTop = shallowRef(0);\n const paddingBottom = shallowRef(0);\n\n /** The scrollable element */\n const containerRef = ref();\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref();\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0;\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n watchEffect(() => {\n resizeRef.value = containerRef.value;\n });\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement ? display.height.value : contentRect.value?.height || parseInt(props.height) || 0;\n });\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value);\n });\n let sizes = Array.from({\n length: items.value.length\n });\n let offsets = Array.from({\n length: items.value.length\n });\n const updateTime = shallowRef(0);\n let targetScrollIndex = -1;\n function getSize(index) {\n return sizes[index] || itemHeight.value;\n }\n const updateOffsets = debounce(() => {\n const start = performance.now();\n offsets[0] = 0;\n const length = items.value.length;\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start);\n }, updateTime);\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return;\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch();\n markerOffset = markerRef.value.offsetTop;\n updateOffsets.immediate();\n calculateVisibleItems();\n if (!~targetScrollIndex) return;\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex);\n targetScrollIndex = -1;\n });\n });\n });\n onScopeDispose(() => {\n updateOffsets.clear();\n });\n function handleItemResize(index, height) {\n const prevHeight = sizes[index];\n const prevMinHeight = itemHeight.value;\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height;\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height;\n updateOffsets();\n }\n }\n function calculateOffset(index) {\n index = clamp(index, 0, items.value.length - 1);\n return offsets[index] || 0;\n }\n function calculateIndex(scrollTop) {\n return binaryClosest(offsets, scrollTop);\n }\n let lastScrollTop = 0;\n let scrollVelocity = 0;\n let lastScrollTime = 0;\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems();\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0;\n calculateVisibleItems();\n });\n }\n }\n });\n function handleScroll() {\n if (!containerRef.value || !markerRef.value) return;\n const scrollTop = containerRef.value.scrollTop;\n const scrollTime = performance.now();\n const scrollDeltaT = scrollTime - lastScrollTime;\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop);\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop;\n } else {\n scrollVelocity = scrollTop - lastScrollTop;\n }\n lastScrollTop = scrollTop;\n lastScrollTime = scrollTime;\n calculateVisibleItems();\n }\n function handleScrollend() {\n if (!containerRef.value || !markerRef.value) return;\n scrollVelocity = 0;\n lastScrollTime = 0;\n calculateVisibleItems();\n }\n let raf = -1;\n function calculateVisibleItems() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(_calculateVisibleItems);\n }\n function _calculateVisibleItems() {\n if (!containerRef.value || !viewportHeight.value) return;\n const scrollTop = lastScrollTop - markerOffset;\n const direction = Math.sign(scrollVelocity);\n const startPx = Math.max(0, scrollTop - BUFFER_PX);\n const start = clamp(calculateIndex(startPx), 0, items.value.length);\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX;\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length);\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) && (direction !== DOWN || end > last.value)) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start);\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value);\n const bufferOverflow = Math.max(topOverflow, bottomOverflow);\n if (bufferOverflow > BUFFER_PX) {\n first.value = start;\n last.value = end;\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start;\n if (end >= items.value.length) last.value = end;\n }\n }\n paddingTop.value = calculateOffset(first.value);\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value);\n }\n function scrollToIndex(index) {\n const offset = calculateOffset(index);\n if (!containerRef.value || index && !offset) {\n targetScrollIndex = index;\n } else {\n containerRef.value.scrollTop = offset;\n }\n }\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value\n }));\n });\n watch(items, () => {\n sizes = Array.from({\n length: items.value.length\n });\n offsets = Array.from({\n length: items.value.length\n });\n updateOffsets.immediate();\n calculateVisibleItems();\n }, {\n deep: true\n });\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize\n };\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest(arr, val) {\n let high = arr.length - 1;\n let low = 0;\n let mid = 0;\n let item = null;\n let target = -1;\n if (arr[high] < val) {\n return high;\n }\n while (low <= high) {\n mid = low + high >> 1;\n item = arr[mid];\n if (item > val) {\n high = mid - 1;\n } else if (item < val) {\n target = mid;\n low = mid + 1;\n } else if (item === val) {\n return mid;\n } else {\n return low;\n }\n }\n return target;\n}\n//# sourceMappingURL=virtual.mjs.map","import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VVirtualScroll.css\";\n\n// Components\nimport { VVirtualScrollItem } from \"./VVirtualScrollItem.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeVirtualProps, useVirtual } from \"../../composables/virtual.mjs\"; // Utilities\nimport { onMounted, onScopeDispose, toRef } from 'vue';\nimport { convertToUnit, genericComponent, getCurrentInstance, getScrollParent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n renderless: Boolean,\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VVirtualScroll');\nexport const VVirtualScroll = genericComponent()({\n name: 'VVirtualScroll',\n props: makeVVirtualScrollProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const vm = getCurrentInstance('VVirtualScroll');\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n calculateVisibleItems,\n containerRef,\n markerRef,\n handleScroll,\n handleScrollend,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems\n } = useVirtual(props, toRef(props, 'items'));\n useToggleScope(() => props.renderless, () => {\n function handleListeners() {\n let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n const method = add ? 'addEventListener' : 'removeEventListener';\n if (containerRef.value === document.documentElement) {\n document[method]('scroll', handleScroll, {\n passive: true\n });\n document[method]('scrollend', handleScrollend);\n } else {\n containerRef.value?.[method]('scroll', handleScroll, {\n passive: true\n });\n containerRef.value?.[method]('scrollend', handleScrollend);\n }\n }\n onMounted(() => {\n containerRef.value = getScrollParent(vm.vnode.el, true);\n handleListeners(true);\n });\n onScopeDispose(handleListeners);\n });\n useRender(() => {\n const children = computedItems.value.map(item => _createVNode(VVirtualScrollItem, {\n \"key\": item.index,\n \"renderless\": props.renderless,\n \"onUpdate:height\": height => handleItemResize(item.index, height)\n }, {\n default: slotProps => slots.default?.({\n item: item.raw,\n index: item.index,\n ...slotProps\n })\n }));\n return props.renderless ? _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"ref\": markerRef,\n \"class\": \"v-virtual-scroll__spacer\",\n \"style\": {\n paddingTop: convertToUnit(paddingTop.value)\n }\n }, null), children, _createVNode(\"div\", {\n \"class\": \"v-virtual-scroll__spacer\",\n \"style\": {\n paddingBottom: convertToUnit(paddingBottom.value)\n }\n }, null)]) : _createVNode(\"div\", {\n \"ref\": containerRef,\n \"class\": ['v-virtual-scroll', props.class],\n \"onScrollPassive\": handleScroll,\n \"onScrollend\": handleScrollend,\n \"style\": [dimensionStyles.value, props.style]\n }, [_createVNode(\"div\", {\n \"ref\": markerRef,\n \"class\": \"v-virtual-scroll__container\",\n \"style\": {\n paddingTop: convertToUnit(paddingTop.value),\n paddingBottom: convertToUnit(paddingBottom.value)\n }\n }, [children])]);\n });\n return {\n calculateVisibleItems,\n scrollToIndex\n };\n }\n});\n//# sourceMappingURL=VVirtualScroll.mjs.map","// Utilities\nimport { shallowRef, watch } from 'vue';\n\n// Types\n\nexport function useScrolling(listRef, textFieldRef) {\n const isScrolling = shallowRef(false);\n let scrollTimeout;\n function onListScroll(e) {\n cancelAnimationFrame(scrollTimeout);\n isScrolling.value = true;\n scrollTimeout = requestAnimationFrame(() => {\n scrollTimeout = requestAnimationFrame(() => {\n isScrolling.value = false;\n });\n });\n }\n async function finishScrolling() {\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => requestAnimationFrame(resolve));\n await new Promise(resolve => {\n if (isScrolling.value) {\n const stop = watch(isScrolling, () => {\n stop();\n resolve();\n });\n } else resolve();\n });\n }\n async function onListKeydown(e) {\n if (e.key === 'Tab') {\n textFieldRef.value?.focus();\n }\n if (!['PageDown', 'PageUp', 'Home', 'End'].includes(e.key)) return;\n const el = listRef.value?.$el;\n if (!el) return;\n if (e.key === 'Home' || e.key === 'End') {\n el.scrollTo({\n top: e.key === 'Home' ? 0 : el.scrollHeight,\n behavior: 'smooth'\n });\n }\n await finishScrolling();\n const children = el.querySelectorAll(':scope > :not(.v-virtual-scroll__spacer)');\n if (e.key === 'PageDown' || e.key === 'Home') {\n const top = el.getBoundingClientRect().top;\n for (const child of children) {\n if (child.getBoundingClientRect().top >= top) {\n child.focus();\n break;\n }\n }\n } else {\n const bottom = el.getBoundingClientRect().bottom;\n for (const child of [...children].reverse()) {\n if (child.getBoundingClientRect().bottom <= bottom) {\n child.focus();\n break;\n }\n }\n }\n }\n return {\n onScrollPassive: onListScroll,\n onKeydown: onListKeydown\n }; // typescript doesn't know about vue's event merging\n}\n//# sourceMappingURL=useScrolling.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VSelect.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"./useScrolling.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeItemsProps, useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n closeText: {\n type: String,\n default: '$vuetify.close'\n },\n openText: {\n type: String,\n default: '$vuetify.open'\n },\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n listProps: {\n type: Object\n },\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown'\n },\n menuProps: {\n type: Object\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n },\n openOnClear: Boolean,\n itemColor: String,\n ...makeItemsProps({\n itemChildren: false\n })\n}, 'Select');\nexport const makeVSelectProps = propsFactory({\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: {\n component: VDialogTransition\n }\n })\n}, 'VSelect');\nexport const VSelect = genericComponent()({\n name: 'VSelect',\n props: makeVSelectProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:menu': ue => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;\n });\n const form = useForm();\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const isFocused = shallowRef(false);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n let keyboardLookupPrefix = '';\n let keyboardLookupLastTime;\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !model.value.some(s => props.valueComparator(s, item)));\n }\n return items.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const computedMenuProps = computed(() => {\n return {\n ...props.menuProps,\n activatorProps: {\n ...(props.menuProps?.activatorProps || {}),\n 'aria-haspopup': 'listbox' // Set aria-haspopup to 'listbox'\n }\n };\n });\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n onKeydown(e);\n }\n }\n function onKeydown(e) {\n if (!e.key || props.readonly || form?.isReadonly.value) return;\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false;\n }\n if (e.key === 'Home') {\n listRef.value?.focus('first');\n } else if (e.key === 'End') {\n listRef.value?.focus('last');\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds\n\n if (props.multiple || !checkPrintable(e)) return;\n const now = performance.now();\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = '';\n }\n keyboardLookupPrefix += e.key.toLowerCase();\n keyboardLookupLastTime = now;\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));\n if (item !== undefined) {\n model.value = [item];\n const index = displayItems.value.indexOf(item);\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n }\n\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n nextTick(() => {\n menu.value = false;\n });\n }\n }\n function onBlur(e) {\n if (!listRef.value?.$el.contains(e.relatedTarget)) {\n menu.value = false;\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n vTextFieldRef.value?.focus();\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n }\n function onModelUpdate(v) {\n if (v == null) model.value = [];else if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === v);\n if (item) {\n select(item);\n }\n } else if (vTextFieldRef.value) {\n vTextFieldRef.value.value = '';\n }\n }\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip);\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n const placeholder = isDirty || !isFocused.value && props.label && !props.persistentPlaceholder ? undefined : props.placeholder;\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": model.value.map(v => v.props.value).join(', '),\n \"onUpdate:modelValue\": onModelUpdate,\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-select', {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n 'v-select--selection-slot': !!slots.selection\n }, props.class],\n \"style\": props.style,\n \"inputmode\": \"none\",\n \"placeholder\": placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"aria-label\": t(label.value),\n \"title\": t(label.value)\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-select__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, computedMenuProps.value), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref2 => {\n let {\n item,\n index,\n itemRef\n } = _ref2;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref3 => {\n let {\n isSelected\n } = _ref3;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": \"v-select__selection\"\n }, [hasChips ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-select__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-select__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-select__menu-icon\",\n \"icon\": props.menuIcon\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n menu,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VSelect.mjs.map","/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport { getPropertyFromItem, propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\n// Composables\nexport const defaultFilter = (value, query, item) => {\n if (value == null || query == null) return -1;\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase());\n};\nexport const makeFilterProps = propsFactory({\n customFilter: Function,\n customKeyFilter: Object,\n filterKeys: [Array, String],\n filterMode: {\n type: String,\n default: 'intersection'\n },\n noFilter: Boolean\n}, 'filter');\nexport function filterItems(items, query, options) {\n const array = [];\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter;\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false;\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length;\n if (!items?.length) return array;\n loop: for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]);\n const customMatches = {};\n const defaultMatches = {};\n let match = -1;\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed);\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key);\n const keyFilter = options?.customKeyFilter?.[key];\n match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match;else defaultMatches[key] = match;\n } else if (options?.filterMode === 'every') {\n continue loop;\n }\n }\n } else {\n match = filter(item, query, item);\n if (match !== -1 && match !== false) {\n defaultMatches.title = match;\n }\n }\n const defaultMatchesLength = Object.keys(defaultMatches).length;\n const customMatchesLength = Object.keys(customMatches).length;\n if (!defaultMatchesLength && !customMatchesLength) continue;\n if (options?.filterMode === 'union' && customMatchesLength !== customFiltersLength && !defaultMatchesLength) continue;\n if (options?.filterMode === 'intersection' && (customMatchesLength !== customFiltersLength || !defaultMatchesLength)) continue;\n }\n array.push({\n index: i,\n matches: {\n ...defaultMatches,\n ...customMatches\n }\n });\n }\n return array;\n}\nexport function useFilter(props, items, query, options) {\n const filteredItems = ref([]);\n const filteredMatches = ref(new Map());\n const transformedItems = computed(() => options?.transform ? unref(items).map(item => [item, options.transform(item)]) : unref(items));\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query);\n const strQuery = typeof _query !== 'string' && typeof _query !== 'number' ? '' : String(_query);\n const results = filterItems(transformedItems.value, strQuery, {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter)\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter\n });\n const originalItems = unref(items);\n const _filteredItems = [];\n const _filteredMatches = new Map();\n results.forEach(_ref => {\n let {\n index,\n matches\n } = _ref;\n const item = originalItems[index];\n _filteredItems.push(item);\n _filteredMatches.set(item.value, matches);\n });\n filteredItems.value = _filteredItems;\n filteredMatches.value = _filteredMatches;\n });\n function getMatches(item) {\n return filteredMatches.value.get(item.value);\n }\n return {\n filteredItems,\n filteredMatches,\n getMatches\n };\n}\n//# sourceMappingURL=filter.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VAutocomplete.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeSelectProps } from \"../VSelect/VSelect.mjs\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.mjs\";\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nfunction highlightResult(text, matches, length) {\n if (matches == null) return text;\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented');\n return typeof matches === 'number' && ~matches ? _createVNode(_Fragment, null, [_createVNode(\"span\", {\n \"class\": \"v-autocomplete__unmask\"\n }, [text.substr(0, matches)]), _createVNode(\"span\", {\n \"class\": \"v-autocomplete__mask\"\n }, [text.substr(matches, length)]), _createVNode(\"span\", {\n \"class\": \"v-autocomplete__unmask\"\n }, [text.substr(matches + length)])]) : text;\n}\nexport const makeVAutocompleteProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: Boolean,\n search: String,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: false\n })\n}, 'VAutocomplete');\nexport const VAutocomplete = genericComponent()({\n name: 'VAutocomplete',\n props: makeVAutocompleteProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:search': value => true,\n 'update:modelValue': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const selectionIndex = shallowRef(-1);\n const color = computed(() => vTextFieldRef.value?.color);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n const search = useProxiedModel(props, 'search', '');\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;\n });\n const form = useForm();\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => isPristine.value ? '' : search.value);\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const selectedValues = computed(() => model.value.map(selection => selection.props.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n if (props.openOnClear) {\n menu.value = true;\n }\n search.value = '';\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus();\n }\n }\n function onKeydown(e) {\n if (props.readonly || form?.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value.selectionStart;\n const length = model.value.length;\n if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(displayItems.value[0]);\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length);\n }\n }\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(0, 0);\n }\n }\n }\n function onChange(e) {\n if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === e.target.value);\n if (item) {\n select(item);\n }\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n isPristine.value = true;\n vTextFieldRef.value?.focus();\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n function onUpdateModelValue(v) {\n if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];\n }\n const isSelecting = shallowRef(false);\n\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false;\n isPristine.value = true;\n });\n }\n }\n watch(isFocused, (val, oldVal) => {\n if (val === oldVal) return;\n if (val) {\n isSelecting.value = true;\n search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');\n isPristine.value = true;\n nextTick(() => isSelecting.value = false);\n } else {\n if (!props.multiple && search.value == null) model.value = [];\n menu.value = false;\n if (!model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) search.value = '';\n selectionIndex.value = -1;\n }\n });\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return;\n if (val) menu.value = true;\n isPristine.value = !val;\n });\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => item.value === s.value));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": [$event => search.value = $event, onUpdateModelValue],\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"onChange\": onChange,\n \"class\": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n 'v-autocomplete--selection-slot': !!hasSelectionSlot.value,\n 'v-autocomplete--selecting-index': selectionIndex.value > -1\n }, props.class],\n \"style\": props.style,\n \"readonly\": props.readonly,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-autocomplete__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],\n \"style\": index === selectionIndex.value ? textColorStyles.value : {}\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-autocomplete__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-autocomplete__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-autocomplete__menu-icon\",\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": t(label.value),\n \"title\": t(label.value),\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VAutocomplete.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, vShow as _vShow, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBadge.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, useTheme } from \"../../composables/theme.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, pickWithRest, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBadgeProps = propsFactory({\n bordered: Boolean,\n color: String,\n content: [Number, String],\n dot: Boolean,\n floating: Boolean,\n icon: IconValue,\n inline: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge'\n },\n max: [Number, String],\n modelValue: {\n type: Boolean,\n default: true\n },\n offsetX: [Number, String],\n offsetY: [Number, String],\n textColor: String,\n ...makeComponentProps(),\n ...makeLocationProps({\n location: 'top end'\n }),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeTransitionProps({\n transition: 'scale-rotate-transition'\n })\n}, 'VBadge');\nexport const VBadge = genericComponent()({\n name: 'VBadge',\n inheritAttrs: false,\n props: makeVBadgeProps(),\n setup(props, ctx) {\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n roundedClasses\n } = useRounded(props);\n const {\n t\n } = useLocale();\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'textColor'));\n const {\n themeClasses\n } = useTheme();\n const {\n locationStyles\n } = useLocation(props, true, side => {\n const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;\n return base + (['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0) : 0);\n });\n useRender(() => {\n const value = Number(props.content);\n const content = !props.max || isNaN(value) ? props.content : value <= +props.max ? value : `${props.max}+`;\n const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);\n return _createVNode(props.tag, _mergeProps({\n \"class\": ['v-badge', {\n 'v-badge--bordered': props.bordered,\n 'v-badge--dot': props.dot,\n 'v-badge--floating': props.floating,\n 'v-badge--inline': props.inline\n }, props.class]\n }, attrs, {\n \"style\": props.style\n }), {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-badge__wrapper\"\n }, [ctx.slots.default?.(), _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(\"span\", _mergeProps({\n \"class\": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],\n \"style\": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],\n \"aria-atomic\": \"true\",\n \"aria-label\": t(props.label, value),\n \"aria-live\": \"polite\",\n \"role\": \"status\"\n }, badgeAttrs), [props.dot ? undefined : ctx.slots.badge ? ctx.slots.badge?.() : props.icon ? _createVNode(VIcon, {\n \"icon\": props.icon\n }, null) : content]), [[_vShow, props.modelValue]])]\n })])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBadge.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBannerActionsProps = propsFactory({\n color: String,\n density: String,\n ...makeComponentProps()\n}, 'VBannerActions');\nexport const VBannerActions = genericComponent()({\n name: 'VBannerActions',\n props: makeVBannerActionsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n color: props.color,\n density: props.density,\n slim: true,\n variant: 'text'\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-banner-actions', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VBannerActions.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VBannerText = createSimpleFunctional('v-banner-text');\n//# sourceMappingURL=VBannerText.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBanner.css\";\n\n// Components\nimport { VBannerActions } from \"./VBannerActions.mjs\";\nimport { VBannerText } from \"./VBannerText.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBannerProps = propsFactory({\n avatar: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n lines: String,\n stacked: Boolean,\n sticky: Boolean,\n text: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VBanner');\nexport const VBanner = genericComponent()({\n name: 'VBanner',\n props: makeVBannerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'bgColor');\n const {\n borderClasses\n } = useBorder(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n themeClasses\n } = provideTheme(props);\n const color = toRef(props, 'color');\n const density = toRef(props, 'density');\n provideDefaults({\n VBannerActions: {\n color,\n density\n }\n });\n useRender(() => {\n const hasText = !!(props.text || slots.text);\n const hasPrependMedia = !!(props.avatar || props.icon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n return _createVNode(props.tag, {\n \"class\": ['v-banner', {\n 'v-banner--stacked': props.stacked || mobile.value,\n 'v-banner--sticky': props.sticky,\n [`v-banner--${props.lines}-line`]: !!props.lines\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"role\": \"banner\"\n }, {\n default: () => [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-banner__prepend\"\n }, [!slots.prepend ? _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"color\": color.value,\n \"density\": density.value,\n \"icon\": props.icon,\n \"image\": props.avatar\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n color: color.value,\n density: density.value,\n icon: props.icon,\n image: props.avatar\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-banner__content\"\n }, [hasText && _createVNode(VBannerText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text?.() ?? props.text]\n }), slots.default?.()]), slots.actions && _createVNode(VBannerActions, {\n \"key\": \"actions\"\n }, slots.actions)]\n });\n });\n }\n});\n//# sourceMappingURL=VBanner.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBottomNavigation.css\";\n\n// Components\nimport { VBtnToggleSymbol } from \"../VBtnToggle/VBtnToggle.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, useTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBottomNavigationProps = propsFactory({\n baseColor: String,\n bgColor: String,\n color: String,\n grow: Boolean,\n mode: {\n type: String,\n validator: v => !v || ['horizontal', 'shift'].includes(v)\n },\n height: {\n type: [Number, String],\n default: 56\n },\n active: {\n type: Boolean,\n default: true\n },\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeLayoutItemProps({\n name: 'bottom-navigation'\n }),\n ...makeTagProps({\n tag: 'header'\n }),\n ...makeGroupProps({\n selectedClass: 'v-btn--selected'\n }),\n ...makeThemeProps()\n}, 'VBottomNavigation');\nexport const VBottomNavigation = genericComponent()({\n name: 'VBottomNavigation',\n props: makeVBottomNavigationProps(),\n emits: {\n 'update:active': value => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = useTheme();\n const {\n borderClasses\n } = useBorder(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n densityClasses\n } = useDensity(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const height = computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));\n const isActive = useProxiedModel(props, 'active', props.active);\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: computed(() => isActive.value ? height.value : 0),\n elementSize: height,\n active: isActive,\n absolute: toRef(props, 'absolute')\n });\n useGroup(props, VBtnToggleSymbol);\n provideDefaults({\n VBtn: {\n baseColor: toRef(props, 'baseColor'),\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n stacked: computed(() => props.mode !== 'horizontal'),\n variant: 'text'\n }\n }, {\n scoped: true\n });\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-bottom-navigation', {\n 'v-bottom-navigation--active': isActive.value,\n 'v-bottom-navigation--grow': props.grow,\n 'v-bottom-navigation--shift': props.mode === 'shift'\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, {\n height: convertToUnit(height.value)\n }, ssrBootStyles.value, props.style]\n }, {\n default: () => [slots.default && _createVNode(\"div\", {\n \"class\": \"v-bottom-navigation__content\"\n }, [slots.default()])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBottomNavigation.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDialog.css\";\n\n// Components\nimport { VDialogTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\"; // Utilities\nimport { mergeProps, nextTick, onBeforeUnmount, ref, watch } from 'vue';\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true\n },\n scrollable: Boolean,\n ...makeVOverlayProps({\n origin: 'center center',\n scrollStrategy: 'block',\n transition: {\n component: VDialogTransition\n },\n zIndex: 2400\n })\n}, 'VDialog');\nexport const VDialog = genericComponent()({\n name: 'VDialog',\n props: makeVDialogProps(),\n emits: {\n 'update:modelValue': value => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const overlay = ref();\n function onFocusin(e) {\n const before = e.relatedTarget;\n const after = e.target;\n if (before !== after && overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)) {\n const focusable = focusableChildren(overlay.value.contentEl);\n if (!focusable.length) return;\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n if (before === firstElement) {\n lastElement.focus();\n } else {\n firstElement.focus();\n }\n }\n }\n onBeforeUnmount(() => {\n document.removeEventListener('focusin', onFocusin);\n });\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);\n }, {\n immediate: true\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {\n overlay.value.contentEl.focus({\n preventScroll: true\n });\n }\n }\n function onAfterLeave() {\n emit('afterLeave');\n }\n watch(isActive, async val => {\n if (!val) {\n await nextTick();\n overlay.value.activatorEl?.focus({\n preventScroll: true\n });\n }\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog'\n }, props.activatorProps);\n const contentProps = mergeProps({\n tabindex: -1\n }, props.contentProps);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-dialog', {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable\n }, props.class],\n \"style\": props.style\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"aria-modal\": \"true\",\n \"activatorProps\": activatorProps,\n \"contentProps\": contentProps,\n \"height\": !props.fullscreen ? props.height : undefined,\n \"width\": !props.fullscreen ? props.width : undefined,\n \"maxHeight\": !props.fullscreen ? props.maxHeight : undefined,\n \"maxWidth\": !props.fullscreen ? props.maxWidth : undefined,\n \"role\": \"dialog\",\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(VDefaultsProvider, {\n \"root\": \"VDialog\"\n }, {\n default: () => [slots.default?.(...args)]\n });\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VDialog.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VBottomSheet.css\";\n\n// Components\nimport { makeVDialogProps, VDialog } from \"../VDialog/VDialog.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBottomSheetProps = propsFactory({\n inset: Boolean,\n ...makeVDialogProps({\n transition: 'bottom-sheet-transition'\n })\n}, 'VBottomSheet');\nexport const VBottomSheet = genericComponent()({\n name: 'VBottomSheet',\n props: makeVBottomSheetProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n useRender(() => {\n const dialogProps = VDialog.filterProps(props);\n return _createVNode(VDialog, _mergeProps(dialogProps, {\n \"contentClass\": ['v-bottom-sheet__content', props.contentClass],\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"class\": ['v-bottom-sheet', {\n 'v-bottom-sheet--inset': props.inset\n }, props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VBottomSheet.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBreadcrumbsDividerProps = propsFactory({\n divider: [Number, String],\n ...makeComponentProps()\n}, 'VBreadcrumbsDivider');\nexport const VBreadcrumbsDivider = genericComponent()({\n name: 'VBreadcrumbsDivider',\n props: makeVBreadcrumbsDividerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(\"li\", {\n \"class\": ['v-breadcrumbs-divider', props.class],\n \"style\": props.style\n }, [slots?.default?.() ?? props.divider]));\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbsDivider.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVBreadcrumbsItemProps = propsFactory({\n active: Boolean,\n activeClass: String,\n activeColor: String,\n color: String,\n disabled: Boolean,\n title: String,\n ...makeComponentProps(),\n ...makeRouterProps(),\n ...makeTagProps({\n tag: 'li'\n })\n}, 'VBreadcrumbsItem');\nexport const VBreadcrumbsItem = genericComponent()({\n name: 'VBreadcrumbsItem',\n props: makeVBreadcrumbsItemProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const link = useLink(props, attrs);\n const isActive = computed(() => props.active || link.isActive?.value);\n const color = computed(() => isActive.value ? props.activeColor : props.color);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-breadcrumbs-item', {\n 'v-breadcrumbs-item--active': isActive.value,\n 'v-breadcrumbs-item--disabled': props.disabled,\n [`${props.activeClass}`]: isActive.value && props.activeClass\n }, textColorClasses.value, props.class],\n \"style\": [textColorStyles.value, props.style],\n \"aria-current\": isActive.value ? 'page' : undefined\n }, {\n default: () => [!link.isLink.value ? slots.default?.() ?? props.title : _createVNode(\"a\", _mergeProps({\n \"class\": \"v-breadcrumbs-item--link\",\n \"onClick\": link.navigate\n }, link.linkProps), [slots.default?.() ?? props.title])]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbsItem.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBreadcrumbs.css\";\n\n// Components\nimport { VBreadcrumbsDivider } from \"./VBreadcrumbsDivider.mjs\";\nimport { VBreadcrumbsItem } from \"./VBreadcrumbsItem.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBreadcrumbsProps = propsFactory({\n activeClass: String,\n activeColor: String,\n bgColor: String,\n color: String,\n disabled: Boolean,\n divider: {\n type: String,\n default: '/'\n },\n icon: IconValue,\n items: {\n type: Array,\n default: () => []\n },\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'ul'\n })\n}, 'VBreadcrumbs');\nexport const VBreadcrumbs = genericComponent()({\n name: 'VBreadcrumbs',\n props: makeVBreadcrumbsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n densityClasses\n } = useDensity(props);\n const {\n roundedClasses\n } = useRounded(props);\n provideDefaults({\n VBreadcrumbsDivider: {\n divider: toRef(props, 'divider')\n },\n VBreadcrumbsItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor: toRef(props, 'activeColor'),\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled')\n }\n });\n const items = computed(() => props.items.map(item => {\n return typeof item === 'string' ? {\n item: {\n title: item\n },\n raw: item\n } : {\n item,\n raw: item\n };\n }));\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.icon);\n return _createVNode(props.tag, {\n \"class\": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style]\n }, {\n default: () => [hasPrepend && _createVNode(\"li\", {\n \"key\": \"prepend\",\n \"class\": \"v-breadcrumbs__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"start\": true,\n \"icon\": props.icon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !props.icon,\n \"defaults\": {\n VIcon: {\n icon: props.icon,\n start: true\n }\n }\n }, slots.prepend)]), items.value.map((_ref2, index, array) => {\n let {\n item,\n raw\n } = _ref2;\n return _createVNode(_Fragment, null, [slots.item?.({\n item,\n index\n }) ?? _createVNode(VBreadcrumbsItem, _mergeProps({\n \"key\": index,\n \"disabled\": index >= array.length - 1\n }, typeof item === 'string' ? {\n title: item\n } : item), {\n default: slots.title ? () => slots.title?.({\n item,\n index\n }) : undefined\n }), index < array.length - 1 && _createVNode(VBreadcrumbsDivider, null, {\n default: slots.divider ? () => slots.divider?.({\n item: raw,\n index\n }) : undefined\n })]);\n }), slots.default?.()]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VBreadcrumbs.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { genericComponent, useRender } from \"../../util/index.mjs\";\nexport const VCardActions = genericComponent()({\n name: 'VCardActions',\n props: makeComponentProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n slim: true,\n variant: 'text'\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-card-actions', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VCardActions.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVCardSubtitleProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VCardSubtitle');\nexport const VCardSubtitle = genericComponent()({\n name: 'VCardSubtitle',\n props: makeVCardSubtitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-card-subtitle', props.class],\n \"style\": [{\n '--v-card-subtitle-opacity': props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VCardSubtitle.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VCardTitle = createSimpleFunctional('v-card-title');\n//# sourceMappingURL=VCardTitle.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Components\nimport { VCardSubtitle } from \"./VCardSubtitle.mjs\";\nimport { VCardTitle } from \"./VCardTitle.mjs\";\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeCardItemProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n prependAvatar: String,\n prependIcon: IconValue,\n subtitle: [String, Number],\n title: [String, Number],\n ...makeComponentProps(),\n ...makeDensityProps()\n}, 'VCardItem');\nexport const VCardItem = genericComponent()({\n name: 'VCardItem',\n props: makeCardItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);\n const hasPrepend = !!(hasPrependMedia || slots.prepend);\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);\n const hasAppend = !!(hasAppendMedia || slots.append);\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n return _createVNode(\"div\", {\n \"class\": ['v-card-item', props.class],\n \"style\": props.style\n }, [hasPrepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-card-item__prepend\"\n }, [!slots.prepend ? _createVNode(_Fragment, null, [props.prependAvatar && _createVNode(VAvatar, {\n \"key\": \"prepend-avatar\",\n \"density\": props.density,\n \"image\": props.prependAvatar\n }, null), props.prependIcon && _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"density\": props.density,\n \"icon\": props.prependIcon\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !hasPrependMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.prependAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon\n }\n }\n }, slots.prepend)]), _createVNode(\"div\", {\n \"class\": \"v-card-item__content\"\n }, [hasTitle && _createVNode(VCardTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), hasSubtitle && _createVNode(VCardSubtitle, {\n \"key\": \"subtitle\"\n }, {\n default: () => [slots.subtitle?.() ?? props.subtitle]\n }), slots.default?.()]), hasAppend && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-card-item__append\"\n }, [!slots.append ? _createVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"density\": props.density,\n \"icon\": props.appendIcon\n }, null), props.appendAvatar && _createVNode(VAvatar, {\n \"key\": \"append-avatar\",\n \"density\": props.density,\n \"image\": props.appendAvatar\n }, null)]) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !hasAppendMedia,\n \"defaults\": {\n VAvatar: {\n density: props.density,\n image: props.appendAvatar\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon\n }\n }\n }, slots.append)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCardItem.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVCardTextProps = propsFactory({\n opacity: [Number, String],\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VCardText');\nexport const VCardText = genericComponent()({\n name: 'VCardText',\n props: makeVCardTextProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-card-text', props.class],\n \"style\": [{\n '--v-card-text-opacity': props.opacity\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VCardText.mjs.map","import { withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n/* eslint-disable complexity */\n\n// Styles\nimport \"./VCard.css\";\n\n// Components\nimport { VCardActions } from \"./VCardActions.mjs\";\nimport { VCardItem } from \"./VCardItem.mjs\";\nimport { VCardText } from \"./VCardText.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeRouterProps, useLink } from \"../../composables/router.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: undefined\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n subtitle: [String, Number],\n text: [String, Number],\n title: [String, Number],\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'elevated'\n })\n}, 'VCard');\nexport const VCard = genericComponent()({\n name: 'VCard',\n directives: {\n Ripple\n },\n props: makeVCardProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const link = useLink(props, attrs);\n const isLink = computed(() => props.link !== false && link.isLink.value);\n const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value));\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag;\n const hasTitle = !!(slots.title || props.title != null);\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null);\n const hasHeader = hasTitle || hasSubtitle;\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);\n const hasImage = !!(slots.image || props.image);\n const hasCardItem = hasHeader || hasPrepend || hasAppend;\n const hasText = !!(slots.text || props.text != null);\n return _withDirectives(_createVNode(Tag, _mergeProps({\n \"class\": ['v-card', {\n 'v-card--disabled': props.disabled,\n 'v-card--flat': props.flat,\n 'v-card--hover': props.hover && !(props.disabled || props.flat),\n 'v-card--link': isClickable.value\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],\n \"onClick\": isClickable.value && link.navigate,\n \"tabindex\": props.disabled ? -1 : undefined\n }, link.linkProps), {\n default: () => [hasImage && _createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-card__image\"\n }, [!slots.image ? _createVNode(VImg, {\n \"key\": \"image-img\",\n \"cover\": true,\n \"src\": props.image\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n cover: true,\n src: props.image\n }\n }\n }, slots.image)]), _createVNode(LoaderSlot, {\n \"name\": \"v-card\",\n \"active\": !!props.loading,\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading\n }, {\n default: slots.loader\n }), hasCardItem && _createVNode(VCardItem, {\n \"key\": \"item\",\n \"prependAvatar\": props.prependAvatar,\n \"prependIcon\": props.prependIcon,\n \"title\": props.title,\n \"subtitle\": props.subtitle,\n \"appendAvatar\": props.appendAvatar,\n \"appendIcon\": props.appendIcon\n }, {\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append\n }), hasText && _createVNode(VCardText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text?.() ?? props.text]\n }), slots.default?.(), slots.actions && _createVNode(VCardActions, null, {\n default: slots.actions\n }), genOverlays(isClickable.value, 'v-card')]\n }), [[_resolveDirective(\"ripple\"), isClickable.value && props.ripple]]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VCard.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VWindow.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useGroup } from \"../../composables/group.mjs\";\nimport { useLocale, useRtl } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Directives\nimport { Touch } from \"../../directives/touch/index.mjs\"; // Utilities\nimport { computed, provide, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const VWindowSymbol = Symbol.for('vuetify:v-window');\nexport const VWindowGroupSymbol = Symbol.for('vuetify:v-window-group');\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object],\n default: '$next'\n },\n prevIcon: {\n type: [Boolean, String, Function, Object],\n default: '$prev'\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: v => typeof v === 'boolean' || v === 'hover'\n },\n touch: {\n type: [Object, Boolean],\n default: undefined\n },\n direction: {\n type: String,\n default: 'horizontal'\n },\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active'\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String],\n default: 'force'\n },\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VWindow');\nexport const VWindow = genericComponent()({\n name: 'VWindow',\n directives: {\n Touch\n },\n props: makeVWindowProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isRtl\n } = useRtl();\n const {\n t\n } = useLocale();\n const group = useGroup(props, VWindowGroupSymbol);\n const rootRef = ref();\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse);\n const isReversed = shallowRef(false);\n const transition = computed(() => {\n const axis = props.direction === 'vertical' ? 'y' : 'x';\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value;\n const direction = reverse ? '-reverse' : '';\n return `v-window-${axis}${direction}-transition`;\n });\n const transitionCount = shallowRef(0);\n const transitionHeight = ref(undefined);\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id));\n });\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length;\n const lastIndex = itemsLength - 1;\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal;\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true;\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false;\n } else {\n isReversed.value = newVal < oldVal;\n }\n });\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef\n });\n const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0);\n const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);\n function prev() {\n canMoveBack.value && group.prev();\n }\n function next() {\n canMoveForward.value && group.next();\n }\n const arrows = computed(() => {\n const arrows = [];\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev')\n };\n arrows.push(canMoveBack.value ? slots.prev ? slots.prev({\n props: prevProps\n }) : _createVNode(VBtn, prevProps, null) : _createVNode(\"div\", null, null));\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next')\n };\n arrows.push(canMoveForward.value ? slots.next ? slots.next({\n props: nextProps\n }) : _createVNode(VBtn, nextProps, null) : _createVNode(\"div\", null, null));\n return arrows;\n });\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch;\n const options = {\n left: () => {\n isRtlReverse.value ? prev() : next();\n },\n right: () => {\n isRtlReverse.value ? next() : prev();\n },\n start: _ref2 => {\n let {\n originalEvent\n } = _ref2;\n originalEvent.stopPropagation();\n }\n };\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch)\n };\n });\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"ref\": rootRef,\n \"class\": ['v-window', {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover'\n }, themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-window__container\",\n \"style\": {\n height: transitionHeight.value\n }\n }, [slots.default?.({\n group\n }), props.showArrows !== false && _createVNode(\"div\", {\n \"class\": \"v-window__controls\"\n }, [arrows.value])]), slots.additional?.({\n group\n })]\n }), [[_resolveDirective(\"touch\"), touchOptions.value]]));\n return {\n group\n };\n }\n});\n//# sourceMappingURL=VWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VCarousel.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VProgressLinear } from \"../VProgressLinear/index.mjs\";\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { onMounted, ref, watch } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCarouselProps = propsFactory({\n color: String,\n cycle: Boolean,\n delimiterIcon: {\n type: IconValue,\n default: '$delimiter'\n },\n height: {\n type: [Number, String],\n default: 500\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: value => Number(value) > 0\n },\n progress: [Boolean, String],\n verticalDelimiters: [Boolean, String],\n ...makeVWindowProps({\n continuous: true,\n mandatory: 'force',\n showArrows: true\n })\n}, 'VCarousel');\nexport const VCarousel = genericComponent()({\n name: 'VCarousel',\n props: makeVCarouselProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n t\n } = useLocale();\n const windowRef = ref();\n let slideTimeout = -1;\n watch(model, restartTimeout);\n watch(() => props.interval, restartTimeout);\n watch(() => props.cycle, val => {\n if (val) restartTimeout();else window.clearTimeout(slideTimeout);\n });\n onMounted(startTimeout);\n function startTimeout() {\n if (!props.cycle || !windowRef.value) return;\n slideTimeout = window.setTimeout(windowRef.value.group.next, +props.interval > 0 ? +props.interval : 6000);\n }\n function restartTimeout() {\n window.clearTimeout(slideTimeout);\n window.requestAnimationFrame(startTimeout);\n }\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"ref\": windowRef\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-carousel', {\n 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': props.verticalDelimiters\n }, props.class],\n \"style\": [{\n height: convertToUnit(props.height)\n }, props.style]\n }), {\n default: slots.default,\n additional: _ref2 => {\n let {\n group\n } = _ref2;\n return _createVNode(_Fragment, null, [!props.hideDelimiters && _createVNode(\"div\", {\n \"class\": \"v-carousel__controls\",\n \"style\": {\n left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',\n right: props.verticalDelimiters === 'right' ? 0 : 'auto'\n }\n }, [group.items.value.length > 0 && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n color: props.color,\n icon: props.delimiterIcon,\n size: 'x-small',\n variant: 'text'\n }\n },\n \"scoped\": true\n }, {\n default: () => [group.items.value.map((item, index) => {\n const props = {\n id: `carousel-item-${item.id}`,\n 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),\n class: ['v-carousel__controls__item', group.isSelected(item.id) && 'v-btn--active'],\n onClick: () => group.select(item.id, true)\n };\n return slots.item ? slots.item({\n props,\n item\n }) : _createVNode(VBtn, _mergeProps(item, props), null);\n })]\n })]), props.progress && _createVNode(VProgressLinear, {\n \"class\": \"v-carousel__progress\",\n \"color\": typeof props.progress === 'string' ? props.progress : undefined,\n \"modelValue\": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100\n }, null)]);\n },\n prev: slots.prev,\n next: slots.next\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VCarousel.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport Touch from \"../../directives/touch/index.mjs\"; // Utilities\nimport { computed, inject, nextTick, shallowRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VWindowGroupSymbol, VWindowSymbol } from \"./VWindow.mjs\";\nexport const makeVWindowItemProps = propsFactory({\n reverseTransition: {\n type: [Boolean, String],\n default: undefined\n },\n transition: {\n type: [Boolean, String],\n default: undefined\n },\n ...makeComponentProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps()\n}, 'VWindowItem');\nexport const VWindowItem = genericComponent()({\n name: 'VWindowItem',\n directives: {\n Touch\n },\n props: makeVWindowItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const window = inject(VWindowSymbol);\n const groupItem = useGroupItem(props, VWindowGroupSymbol);\n const {\n isBooted\n } = useSsrBoot();\n if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');\n const isTransitioning = shallowRef(false);\n const hasTransition = computed(() => isBooted.value && (window.isReversed.value ? props.reverseTransition !== false : props.transition !== false));\n function onAfterTransition() {\n if (!isTransitioning.value || !window) {\n return;\n }\n\n // Finalize transition state.\n isTransitioning.value = false;\n if (window.transitionCount.value > 0) {\n window.transitionCount.value -= 1;\n\n // Remove container height if we are out of transition.\n if (window.transitionCount.value === 0) {\n window.transitionHeight.value = undefined;\n }\n }\n }\n function onBeforeTransition() {\n if (isTransitioning.value || !window) {\n return;\n }\n\n // Initialize transition state here.\n isTransitioning.value = true;\n if (window.transitionCount.value === 0) {\n // Set initial height for height transition.\n window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight);\n }\n window.transitionCount.value += 1;\n }\n function onTransitionCancelled() {\n onAfterTransition(); // This should have the same path as normal transition end.\n }\n function onEnterTransition(el) {\n if (!isTransitioning.value) {\n return;\n }\n nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!hasTransition.value || !isTransitioning.value || !window) {\n return;\n }\n\n // Set transition target height.\n window.transitionHeight.value = convertToUnit(el.clientHeight);\n });\n }\n const transition = computed(() => {\n const name = window.isReversed.value ? props.reverseTransition : props.transition;\n return !hasTransition.value ? false : {\n name: typeof name !== 'string' ? window.transition.value : name,\n onBeforeEnter: onBeforeTransition,\n onAfterEnter: onAfterTransition,\n onEnterCancelled: onTransitionCancelled,\n onBeforeLeave: onBeforeTransition,\n onAfterLeave: onAfterTransition,\n onLeaveCancelled: onTransitionCancelled,\n onEnter: onEnterTransition\n };\n });\n const {\n hasContent\n } = useLazy(props, groupItem.isSelected);\n useRender(() => _createVNode(MaybeTransition, {\n \"transition\": transition.value,\n \"disabled\": !isBooted.value\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-window-item', groupItem.selectedClass.value, props.class],\n \"style\": props.style\n }, [hasContent.value && slots.default?.()]), [[_vShow, groupItem.isSelected.value]])]\n }));\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VWindowItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVImgProps, VImg } from \"../VImg/VImg.mjs\";\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCarouselItemProps = propsFactory({\n ...makeVImgProps(),\n ...makeVWindowItemProps()\n}, 'VCarouselItem');\nexport const VCarouselItem = genericComponent()({\n name: 'VCarouselItem',\n inheritAttrs: false,\n props: makeVCarouselItemProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n useRender(() => {\n const imgProps = VImg.filterProps(props);\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"class\": ['v-carousel-item', props.class]\n }, windowItemProps), {\n default: () => [_createVNode(VImg, _mergeProps(attrs, imgProps), slots)]\n });\n });\n }\n});\n//# sourceMappingURL=VCarouselItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VCheckbox.css\";\n\n// Components\nimport { makeVCheckboxBtnProps, VCheckboxBtn } from \"./VCheckboxBtn.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline'])\n}, 'VCheckbox');\nexport const VCheckbox = genericComponent()({\n name: 'VCheckbox',\n inheritAttrs: false,\n props: makeVCheckboxProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:focused': focused => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const uid = getUid();\n const id = computed(() => props.id || `checkbox-${uid}`);\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const checkboxProps = VCheckboxBtn.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-checkbox', props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VCheckboxBtn, _mergeProps(checkboxProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value\n }, controlAttrs, {\n \"error\": isValid.value === false,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"onFocus\": focus,\n \"onBlur\": blur\n }), slots);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VCheckbox.mjs.map","// Styles\nimport \"./VCode.css\";\n\n// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VCode = createSimpleFunctional('v-code', 'code');\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerCanvas.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue';\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10\n },\n height: {\n type: [Number, String],\n default: 150\n },\n width: {\n type: [Number, String],\n default: 300\n },\n ...makeComponentProps()\n}, 'VColorPickerCanvas');\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n props: makeVColorPickerCanvasProps(),\n emits: {\n 'update:color': color => true,\n 'update:position': hue => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const isInteracting = shallowRef(false);\n const canvasRef = ref();\n const canvasWidth = shallowRef(parseFloat(props.width));\n const canvasHeight = shallowRef(parseFloat(props.height));\n const _dotPosition = ref({\n x: 0,\n y: 0\n });\n const dotPosition = computed({\n get: () => _dotPosition.value,\n set(val) {\n if (!canvasRef.value) return;\n const {\n x,\n y\n } = val;\n _dotPosition.value = val;\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1\n });\n }\n });\n const dotStyles = computed(() => {\n const {\n x,\n y\n } = dotPosition.value;\n const radius = parseInt(props.dotSize, 10) / 2;\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`\n };\n });\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!resizeRef.el?.offsetParent) return;\n const {\n width,\n height\n } = entries[0].contentRect;\n canvasWidth.value = width;\n canvasHeight.value = height;\n });\n function updateDotPosition(x, y, rect) {\n const {\n left,\n top,\n width,\n height\n } = rect;\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height)\n };\n }\n function handleMouseDown(e) {\n if (e.type === 'mousedown') {\n // Prevent text selection while dragging\n e.preventDefault();\n }\n if (props.disabled) return;\n handleMouseMove(e);\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n window.addEventListener('touchmove', handleMouseMove);\n window.addEventListener('touchend', handleMouseUp);\n }\n function handleMouseMove(e) {\n if (props.disabled || !canvasRef.value) return;\n isInteracting.value = true;\n const coords = getEventCoordinates(e);\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect());\n }\n function handleMouseUp() {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n window.removeEventListener('touchmove', handleMouseMove);\n window.removeEventListener('touchend', handleMouseUp);\n }\n function updateCanvas() {\n if (!canvasRef.value) return;\n const canvas = canvasRef.value;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0);\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)'); // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`);\n ctx.fillStyle = saturationGradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height);\n valueGradient.addColorStop(0, 'hsla(0, 0%, 0%, 0)'); // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)'); // black\n ctx.fillStyle = valueGradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n watch(() => props.color?.h, updateCanvas, {\n immediate: true\n });\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas();\n _dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1]\n };\n }, {\n flush: 'post'\n });\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false;\n return;\n }\n _dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value\n } : {\n x: 0,\n y: 0\n };\n }, {\n deep: true,\n immediate: true\n });\n onMounted(() => updateCanvas());\n useRender(() => _createVNode(\"div\", {\n \"ref\": resizeRef,\n \"class\": ['v-color-picker-canvas', props.class],\n \"style\": props.style,\n \"onMousedown\": handleMouseDown,\n \"onTouchstartPassive\": handleMouseDown\n }, [_createVNode(\"canvas\", {\n \"ref\": canvasRef,\n \"width\": canvasWidth.value,\n \"height\": canvasHeight.value\n }, null), props.color && _createVNode(\"div\", {\n \"class\": ['v-color-picker-canvas__dot', {\n 'v-color-picker-canvas__dot--disabled': props.disabled\n }],\n \"style\": dotStyles.value\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerCanvas.mjs.map","// Utilities\nimport { HexToHSV, HSLtoHSV, HSVtoHex, HSVtoHSL, HSVtoRGB, RGBtoHSV } from \"../../../util/colorUtils.mjs\";\nimport { has } from \"../../../util/helpers.mjs\"; // Types\nfunction stripAlpha(color, stripAlpha) {\n if (stripAlpha) {\n const {\n a,\n ...rest\n } = color;\n return rest;\n }\n return color;\n}\nexport function extractColor(color, input) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color);\n if (color.a === 1) return hex.slice(0, 7);else return hex;\n }\n if (typeof input === 'object') {\n let converted;\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;\n return stripAlpha(converted, !has(input, ['a']) && color.a === 1);\n }\n return color;\n}\nexport function hasAlpha(color) {\n if (!color) return false;\n if (typeof color === 'string') {\n return color.length > 7;\n }\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha']);\n }\n return false;\n}\nexport const nullColor = {\n h: 0,\n s: 0,\n v: 0,\n a: 1\n};\nconst rgba = {\n inputProps: {\n type: 'number',\n min: 0\n },\n inputs: [{\n label: 'R',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.r),\n getColor: (c, v) => ({\n ...c,\n r: Number(v)\n })\n }, {\n label: 'G',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.g),\n getColor: (c, v) => ({\n ...c,\n g: Number(v)\n })\n }, {\n label: 'B',\n max: 255,\n step: 1,\n getValue: c => Math.round(c.b),\n getColor: (c, v) => ({\n ...c,\n b: Number(v)\n })\n }, {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: _ref => {\n let {\n a\n } = _ref;\n return a != null ? Math.round(a * 100) / 100 : 1;\n },\n getColor: (c, v) => ({\n ...c,\n a: Number(v)\n })\n }],\n to: HSVtoRGB,\n from: RGBtoHSV\n};\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3)\n};\nconst hsla = {\n inputProps: {\n type: 'number',\n min: 0\n },\n inputs: [{\n label: 'H',\n max: 360,\n step: 1,\n getValue: c => Math.round(c.h),\n getColor: (c, v) => ({\n ...c,\n h: Number(v)\n })\n }, {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: c => Math.round(c.s * 100) / 100,\n getColor: (c, v) => ({\n ...c,\n s: Number(v)\n })\n }, {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: c => Math.round(c.l * 100) / 100,\n getColor: (c, v) => ({\n ...c,\n l: Number(v)\n })\n }, {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: _ref2 => {\n let {\n a\n } = _ref2;\n return a != null ? Math.round(a * 100) / 100 : 1;\n },\n getColor: (c, v) => ({\n ...c,\n a: Number(v)\n })\n }],\n to: HSVtoHSL,\n from: HSLtoHSV\n};\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3)\n};\nconst hexa = {\n inputProps: {\n type: 'text'\n },\n inputs: [{\n label: 'HEXA',\n getValue: c => c,\n getColor: (c, v) => v\n }],\n to: HSVtoHex,\n from: HexToHSV\n};\nconst hex = {\n ...hexa,\n inputs: [{\n label: 'HEX',\n getValue: c => c.slice(0, 7),\n getColor: (c, v) => v\n }]\n};\nexport const modes = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa\n};\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerEdit.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { modes, nullColor } from \"./util/index.mjs\";\nimport { defineComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst VColorPickerInput = _ref => {\n let {\n label,\n ...rest\n } = _ref;\n return _createVNode(\"div\", {\n \"class\": \"v-color-picker-edit__input\"\n }, [_createVNode(\"input\", rest, null), _createVNode(\"span\", null, [label])]);\n};\nexport const makeVColorPickerEditProps = propsFactory({\n color: Object,\n disabled: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: v => Object.keys(modes).includes(v)\n },\n modes: {\n type: Array,\n default: () => Object.keys(modes),\n validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))\n },\n ...makeComponentProps()\n}, 'VColorPickerEdit');\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n props: makeVColorPickerEditProps(),\n emits: {\n 'update:color': color => true,\n 'update:mode': mode => true\n },\n setup(props, _ref2) {\n let {\n emit\n } = _ref2;\n const enabledModes = computed(() => {\n return props.modes.map(key => ({\n ...modes[key],\n name: key\n }));\n });\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode);\n if (!mode) return [];\n const color = props.color ? mode.to(props.color) : null;\n return mode.inputs?.map(_ref3 => {\n let {\n getValue,\n getColor,\n ...inputProps\n } = _ref3;\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: color && getValue(color),\n onChange: e => {\n const target = e.target;\n if (!target) return;\n emit('update:color', mode.from(getColor(color ?? mode.to(nullColor), target.value)));\n }\n };\n });\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-edit', props.class],\n \"style\": props.style\n }, [inputs.value?.map(props => _createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && _createVNode(VBtn, {\n \"icon\": \"$unfold\",\n \"size\": \"x-small\",\n \"variant\": \"plain\",\n \"onClick\": () => {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode);\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name);\n }\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerEdit.mjs.map","/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\"; // Utilities\nimport { computed, provide, ref, shallowRef, toRef } from 'vue';\nimport { clamp, createRange, getDecimals, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const VSliderSymbol = Symbol.for('vuetify:v-slider');\nexport function getOffset(e, el, direction) {\n const vertical = direction === 'vertical';\n const rect = el.getBoundingClientRect();\n const touch = 'touches' in e ? e.touches[0] : e;\n return vertical ? touch.clientY - (rect.top + rect.height / 2) : touch.clientX - (rect.left + rect.width / 2);\n}\nfunction getPosition(e, position) {\n if ('touches' in e && e.touches.length) return e.touches[0][position];else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position];else return e[position];\n}\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean,\n default: null\n },\n error: Boolean,\n readonly: {\n type: Boolean,\n default: null\n },\n max: {\n type: [Number, String],\n default: 100\n },\n min: {\n type: [Number, String],\n default: 0\n },\n step: {\n type: [Number, String],\n default: 0\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String],\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always'\n },\n thumbSize: {\n type: [Number, String],\n default: 20\n },\n showTicks: {\n type: [Boolean, String],\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always'\n },\n ticks: {\n type: [Array, Object]\n },\n tickSize: {\n type: [Number, String],\n default: 2\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n reverse: Boolean,\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2\n }),\n ripple: {\n type: Boolean,\n default: true\n }\n}, 'Slider');\nexport const useSteps = props => {\n const min = computed(() => parseFloat(props.min));\n const max = computed(() => parseFloat(props.max));\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));\n function roundValue(value) {\n value = parseFloat(value);\n if (step.value <= 0) return value;\n const clamped = clamp(value, min.value, max.value);\n const offset = min.value % step.value;\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));\n }\n return {\n min,\n max,\n step,\n decimals,\n roundValue\n };\n};\nexport const useSlider = _ref => {\n let {\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const isReversed = toRef(props, 'reverse');\n const vertical = computed(() => props.direction === 'vertical');\n const indexFromEnd = computed(() => vertical.value !== isReversed.value);\n const {\n min,\n max,\n step,\n decimals,\n roundValue\n } = steps;\n const thumbSize = computed(() => parseInt(props.thumbSize, 10));\n const tickSize = computed(() => parseInt(props.tickSize, 10));\n const trackSize = computed(() => parseInt(props.trackSize, 10));\n const numTicks = computed(() => (max.value - min.value) / step.value);\n const disabled = toRef(props, 'disabled');\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);\n const mousePressed = shallowRef(false);\n const startOffset = shallowRef(0);\n const trackContainerRef = ref();\n const activeThumbRef = ref();\n function parseMouseMove(e) {\n const vertical = props.direction === 'vertical';\n const start = vertical ? 'top' : 'left';\n const length = vertical ? 'height' : 'width';\n const position = vertical ? 'clientY' : 'clientX';\n const {\n [start]: trackStart,\n [length]: trackLength\n } = trackContainerRef.value?.$el.getBoundingClientRect();\n const clickOffset = getPosition(e, position);\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;\n if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;\n return roundValue(min.value + clickPos * (max.value - min.value));\n }\n const handleStop = e => {\n onSliderEnd({\n value: parseMouseMove(e)\n });\n mousePressed.value = false;\n startOffset.value = 0;\n };\n const handleStart = e => {\n activeThumbRef.value = getActiveThumb(e);\n if (!activeThumbRef.value) return;\n activeThumbRef.value.focus();\n mousePressed.value = true;\n if (activeThumbRef.value.contains(e.target)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction);\n } else {\n startOffset.value = 0;\n onSliderMove({\n value: parseMouseMove(e)\n });\n }\n onSliderStart({\n value: parseMouseMove(e)\n });\n };\n const moveListenerOptions = {\n passive: true,\n capture: true\n };\n function onMouseMove(e) {\n onSliderMove({\n value: parseMouseMove(e)\n });\n }\n function onSliderMouseUp(e) {\n e.stopPropagation();\n e.preventDefault();\n handleStop(e);\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions);\n window.removeEventListener('mouseup', onSliderMouseUp);\n }\n function onSliderTouchend(e) {\n handleStop(e);\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions);\n e.target?.removeEventListener('touchend', onSliderTouchend);\n }\n function onSliderTouchstart(e) {\n handleStart(e);\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions);\n e.target?.addEventListener('touchend', onSliderTouchend, {\n passive: false\n });\n }\n function onSliderMousedown(e) {\n e.preventDefault();\n handleStart(e);\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions);\n window.addEventListener('mouseup', onSliderMouseUp, {\n passive: false\n });\n }\n const position = val => {\n const percentage = (val - min.value) / (max.value - min.value) * 100;\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);\n };\n const showTicks = toRef(props, 'showTicks');\n const parsedTicks = computed(() => {\n if (!showTicks.value) return [];\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + t * step.value;\n return {\n value,\n position: position(value)\n };\n }) : [];\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({\n value: t,\n position: position(t),\n label: t.toString()\n }));\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: props.ticks[key]\n }));\n });\n const hasLabels = computed(() => parsedTicks.value.some(_ref2 => {\n let {\n label\n } = _ref2;\n return !!label;\n }));\n const data = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n isReversed,\n indexFromEnd,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical\n };\n provide(VSliderSymbol, data);\n return data;\n};\n//# sourceMappingURL=slider.mjs.map","import { vShow as _vShow, withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSliderThumb.css\";\n\n// Components\nimport { VSliderSymbol } from \"./slider.mjs\";\nimport { VScaleTransition } from \"../transitions/index.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useElevation } from \"../../composables/elevation.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\"; // Directives\nimport Ripple from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n required: true\n },\n modelValue: {\n type: Number,\n required: true\n },\n position: {\n type: Number,\n required: true\n },\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n name: String,\n ...makeComponentProps()\n}, 'VSliderThumb');\nexport const VSliderThumb = genericComponent()({\n name: 'VSliderThumb',\n directives: {\n Ripple\n },\n props: makeVSliderThumbProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const slider = inject(VSliderSymbol);\n const {\n isRtl,\n rtlClasses\n } = useRtl();\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');\n const {\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd\n } = slider;\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined);\n const {\n elevationClasses\n } = useElevation(elevationProps);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(thumbColor);\n const {\n pageup,\n pagedown,\n end,\n home,\n left,\n right,\n down,\n up\n } = keyValues;\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up];\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3];else return [1, 5, 10];\n });\n function parseKeydown(e, value) {\n if (!relevantKeys.includes(e.key)) return;\n e.preventDefault();\n const _step = step.value || 0.1;\n const steps = (props.max - props.min) / _step;\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];\n const direction = increase.includes(e.key) ? 1 : -1;\n const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;\n value = value + direction * _step * multipliers.value[multiplier];\n } else if (e.key === home) {\n value = props.min;\n } else if (e.key === end) {\n value = props.max;\n } else {\n const direction = e.key === pagedown ? 1 : -1;\n value = value - direction * _step * (steps > 100 ? steps / 10 : 10);\n }\n return Math.max(props.min, Math.min(props.max, value));\n }\n function onKeydown(e) {\n const newValue = parseKeydown(e, props.modelValue);\n newValue != null && emit('update:modelValue', newValue);\n }\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');\n return _createVNode(\"div\", {\n \"class\": ['v-slider-thumb', {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value\n }, props.class, rtlClasses.value],\n \"style\": [{\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value)\n }, props.style],\n \"role\": \"slider\",\n \"tabindex\": disabled.value ? -1 : 0,\n \"aria-label\": props.name,\n \"aria-valuemin\": props.min,\n \"aria-valuemax\": props.max,\n \"aria-valuenow\": props.modelValue,\n \"aria-readonly\": !!readonly.value,\n \"aria-orientation\": direction.value,\n \"onKeydown\": !readonly.value ? onKeydown : undefined\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value],\n \"style\": {\n ...textColorStyles.value\n }\n }, null), _withDirectives(_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__ripple', textColorClasses.value],\n \"style\": textColorStyles.value\n }, null), [[_resolveDirective(\"ripple\"), props.ripple, null, {\n circle: true,\n center: true\n }]]), _createVNode(VScaleTransition, {\n \"origin\": \"bottom center\"\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": \"v-slider-thumb__label-container\"\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-thumb__label']\n }, [_createVNode(\"div\", null, [slots['thumb-label']?.({\n modelValue: props.modelValue\n }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[_vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSliderThumb.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSliderTrack.css\";\n\n// Components\nimport { VSliderSymbol } from \"./slider.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useRounded } from \"../../composables/rounded.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true\n },\n stop: {\n type: Number,\n required: true\n },\n ...makeComponentProps()\n}, 'VSliderTrack');\nexport const VSliderTrack = genericComponent()({\n name: 'VSliderTrack',\n props: makeVSliderTrackProps(),\n emits: {},\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const slider = inject(VSliderSymbol);\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');\n const {\n color,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n indexFromEnd\n } = slider;\n const {\n roundedClasses\n } = useRounded(rounded);\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles\n } = useBackgroundColor(trackFillColor);\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles\n } = useBackgroundColor(trackColor);\n const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);\n const endDir = computed(() => vertical.value ? 'height' : 'width');\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%'\n };\n });\n const trackFillWidth = computed(() => props.stop - props.start);\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%')\n };\n });\n const computedTicks = computed(() => {\n if (!showTicks.value) return [];\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;\n return ticks.map((tick, index) => {\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;\n return _createVNode(\"div\", {\n \"key\": tick.value,\n \"class\": ['v-slider-track__tick', {\n 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value\n }],\n \"style\": {\n [startDir.value]: directionValue\n }\n }, [(tick.label || slots['tick-label']) && _createVNode(\"div\", {\n \"class\": \"v-slider-track__tick-label\"\n }, [slots['tick-label']?.({\n tick,\n index\n }) ?? tick.label])]);\n });\n });\n useRender(() => {\n return _createVNode(\"div\", {\n \"class\": ['v-slider-track', roundedClasses.value, props.class],\n \"style\": [{\n '--v-slider-track-size': convertToUnit(trackSize.value),\n '--v-slider-tick-size': convertToUnit(tickSize.value)\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": ['v-slider-track__background', trackColorClasses.value, {\n 'v-slider-track__background--opacity': !!color.value || !trackFillColor.value\n }],\n \"style\": {\n ...backgroundStyles.value,\n ...trackColorStyles.value\n }\n }, null), _createVNode(\"div\", {\n \"class\": ['v-slider-track__fill', trackFillColorClasses.value],\n \"style\": {\n ...trackFillStyles.value,\n ...trackFillColorStyles.value\n }\n }, null), showTicks.value && _createVNode(\"div\", {\n \"class\": ['v-slider-track__ticks', {\n 'v-slider-track__ticks--always-show': showTicks.value === 'always'\n }]\n }, [computedTicks.value])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSliderTrack.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VSlider.css\";\n\n// Components\nimport { VSliderThumb } from \"./VSliderThumb.mjs\";\nimport { VSliderTrack } from \"./VSliderTrack.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\"; // Composables\nimport { makeSliderProps, useSlider, useSteps } from \"./slider.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n modelValue: {\n type: [Number, String],\n default: 0\n }\n}, 'VSlider');\nexport const VSlider = genericComponent()({\n name: 'VSlider',\n props: makeVSliderProps(),\n emits: {\n 'update:focused': value => true,\n 'update:modelValue': v => true,\n start: value => true,\n end: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const thumbContainerRef = ref();\n const {\n rtlClasses\n } = useRtl();\n const steps = useSteps(props);\n const model = useProxiedModel(props, 'modelValue', undefined, value => {\n return steps.roundValue(value == null ? steps.min.value : value);\n });\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value);\n },\n onSliderEnd: _ref2 => {\n let {\n value\n } = _ref2;\n const roundedValue = roundValue(value);\n model.value = roundedValue;\n emit('end', roundedValue);\n },\n onSliderMove: _ref3 => {\n let {\n value\n } = _ref3;\n return model.value = roundValue(value);\n },\n getActiveThumb: () => thumbContainerRef.value?.$el\n });\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const trackStop = computed(() => position(model.value));\n useRender(() => {\n const inputProps = VInput.filterProps(props);\n const hasPrepend = !!(props.label || slots.label || slots.prepend);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-slider', {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled\n }, rtlClasses.value, props.class],\n \"style\": props.style\n }, inputProps, {\n \"focused\": isFocused.value\n }), {\n ...slots,\n prepend: hasPrepend ? slotProps => _createVNode(_Fragment, null, [slots.label?.(slotProps) ?? (props.label ? _createVNode(VLabel, {\n \"id\": slotProps.id.value,\n \"class\": \"v-slider__label\",\n \"text\": props.label\n }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,\n default: _ref4 => {\n let {\n id,\n messagesId\n } = _ref4;\n return _createVNode(\"div\", {\n \"class\": \"v-slider__container\",\n \"onMousedown\": !readonly.value ? onSliderMousedown : undefined,\n \"onTouchstartPassive\": !readonly.value ? onSliderTouchstart : undefined\n }, [_createVNode(\"input\", {\n \"id\": id.value,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value\n }, null), _createVNode(VSliderTrack, {\n \"ref\": trackContainerRef,\n \"start\": 0,\n \"stop\": trackStop.value\n }, {\n 'tick-label': slots['tick-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": thumbContainerRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused.value,\n \"min\": min.value,\n \"max\": max.value,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": v => model.value = v,\n \"position\": trackStop.value,\n \"elevation\": props.elevation,\n \"onFocus\": focus,\n \"onBlur\": blur,\n \"ripple\": props.ripple,\n \"name\": props.name\n }, {\n 'thumb-label': slots['thumb-label']\n })]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSlider.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerPreview.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VSlider } from \"../VSlider/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { onUnmounted } from 'vue';\nimport { nullColor } from \"./util/index.mjs\";\nimport { defineComponent, HexToHSV, HSVtoCSS, propsFactory, SUPPORTS_EYE_DROPPER, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerPreviewProps = propsFactory({\n color: {\n type: Object\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n ...makeComponentProps()\n}, 'VColorPickerPreview');\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n props: makeVColorPickerPreviewProps(),\n emits: {\n 'update:color': color => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const abortController = new AbortController();\n onUnmounted(() => abortController.abort());\n async function openEyeDropper() {\n if (!SUPPORTS_EYE_DROPPER) return;\n const eyeDropper = new window.EyeDropper();\n try {\n const result = await eyeDropper.open({\n signal: abortController.signal\n });\n const colorHexValue = HexToHSV(result.sRGBHex);\n emit('update:color', {\n ...(props.color ?? nullColor),\n ...colorHexValue\n });\n } catch (e) {}\n }\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-preview', {\n 'v-color-picker-preview--hide-alpha': props.hideAlpha\n }, props.class],\n \"style\": props.style\n }, [SUPPORTS_EYE_DROPPER && _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__eye-dropper\",\n \"key\": \"eyeDropper\"\n }, [_createVNode(VBtn, {\n \"onClick\": openEyeDropper,\n \"icon\": \"$eyeDropper\",\n \"variant\": \"plain\",\n \"density\": \"comfortable\"\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__dot\"\n }, [_createVNode(\"div\", {\n \"style\": {\n background: HSVtoCSS(props.color ?? nullColor)\n }\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-color-picker-preview__sliders\"\n }, [_createVNode(VSlider, {\n \"class\": \"v-color-picker-preview__track v-color-picker-preview__hue\",\n \"modelValue\": props.color?.h,\n \"onUpdate:modelValue\": h => emit('update:color', {\n ...(props.color ?? nullColor),\n h\n }),\n \"step\": 0,\n \"min\": 0,\n \"max\": 360,\n \"disabled\": props.disabled,\n \"thumbSize\": 14,\n \"trackSize\": 8,\n \"trackFillColor\": \"white\",\n \"hideDetails\": true\n }, null), !props.hideAlpha && _createVNode(VSlider, {\n \"class\": \"v-color-picker-preview__track v-color-picker-preview__alpha\",\n \"modelValue\": props.color?.a ?? 1,\n \"onUpdate:modelValue\": a => emit('update:color', {\n ...(props.color ?? nullColor),\n a\n }),\n \"step\": 1 / 256,\n \"min\": 0,\n \"max\": 1,\n \"disabled\": props.disabled,\n \"thumbSize\": 14,\n \"trackSize\": 8,\n \"trackFillColor\": \"white\",\n \"hideDetails\": true\n }, null)])]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerPreview.mjs.map","export const red = {\n base: '#f44336',\n lighten5: '#ffebee',\n lighten4: '#ffcdd2',\n lighten3: '#ef9a9a',\n lighten2: '#e57373',\n lighten1: '#ef5350',\n darken1: '#e53935',\n darken2: '#d32f2f',\n darken3: '#c62828',\n darken4: '#b71c1c',\n accent1: '#ff8a80',\n accent2: '#ff5252',\n accent3: '#ff1744',\n accent4: '#d50000'\n};\nexport const pink = {\n base: '#e91e63',\n lighten5: '#fce4ec',\n lighten4: '#f8bbd0',\n lighten3: '#f48fb1',\n lighten2: '#f06292',\n lighten1: '#ec407a',\n darken1: '#d81b60',\n darken2: '#c2185b',\n darken3: '#ad1457',\n darken4: '#880e4f',\n accent1: '#ff80ab',\n accent2: '#ff4081',\n accent3: '#f50057',\n accent4: '#c51162'\n};\nexport const purple = {\n base: '#9c27b0',\n lighten5: '#f3e5f5',\n lighten4: '#e1bee7',\n lighten3: '#ce93d8',\n lighten2: '#ba68c8',\n lighten1: '#ab47bc',\n darken1: '#8e24aa',\n darken2: '#7b1fa2',\n darken3: '#6a1b9a',\n darken4: '#4a148c',\n accent1: '#ea80fc',\n accent2: '#e040fb',\n accent3: '#d500f9',\n accent4: '#aa00ff'\n};\nexport const deepPurple = {\n base: '#673ab7',\n lighten5: '#ede7f6',\n lighten4: '#d1c4e9',\n lighten3: '#b39ddb',\n lighten2: '#9575cd',\n lighten1: '#7e57c2',\n darken1: '#5e35b1',\n darken2: '#512da8',\n darken3: '#4527a0',\n darken4: '#311b92',\n accent1: '#b388ff',\n accent2: '#7c4dff',\n accent3: '#651fff',\n accent4: '#6200ea'\n};\nexport const indigo = {\n base: '#3f51b5',\n lighten5: '#e8eaf6',\n lighten4: '#c5cae9',\n lighten3: '#9fa8da',\n lighten2: '#7986cb',\n lighten1: '#5c6bc0',\n darken1: '#3949ab',\n darken2: '#303f9f',\n darken3: '#283593',\n darken4: '#1a237e',\n accent1: '#8c9eff',\n accent2: '#536dfe',\n accent3: '#3d5afe',\n accent4: '#304ffe'\n};\nexport const blue = {\n base: '#2196f3',\n lighten5: '#e3f2fd',\n lighten4: '#bbdefb',\n lighten3: '#90caf9',\n lighten2: '#64b5f6',\n lighten1: '#42a5f5',\n darken1: '#1e88e5',\n darken2: '#1976d2',\n darken3: '#1565c0',\n darken4: '#0d47a1',\n accent1: '#82b1ff',\n accent2: '#448aff',\n accent3: '#2979ff',\n accent4: '#2962ff'\n};\nexport const lightBlue = {\n base: '#03a9f4',\n lighten5: '#e1f5fe',\n lighten4: '#b3e5fc',\n lighten3: '#81d4fa',\n lighten2: '#4fc3f7',\n lighten1: '#29b6f6',\n darken1: '#039be5',\n darken2: '#0288d1',\n darken3: '#0277bd',\n darken4: '#01579b',\n accent1: '#80d8ff',\n accent2: '#40c4ff',\n accent3: '#00b0ff',\n accent4: '#0091ea'\n};\nexport const cyan = {\n base: '#00bcd4',\n lighten5: '#e0f7fa',\n lighten4: '#b2ebf2',\n lighten3: '#80deea',\n lighten2: '#4dd0e1',\n lighten1: '#26c6da',\n darken1: '#00acc1',\n darken2: '#0097a7',\n darken3: '#00838f',\n darken4: '#006064',\n accent1: '#84ffff',\n accent2: '#18ffff',\n accent3: '#00e5ff',\n accent4: '#00b8d4'\n};\nexport const teal = {\n base: '#009688',\n lighten5: '#e0f2f1',\n lighten4: '#b2dfdb',\n lighten3: '#80cbc4',\n lighten2: '#4db6ac',\n lighten1: '#26a69a',\n darken1: '#00897b',\n darken2: '#00796b',\n darken3: '#00695c',\n darken4: '#004d40',\n accent1: '#a7ffeb',\n accent2: '#64ffda',\n accent3: '#1de9b6',\n accent4: '#00bfa5'\n};\nexport const green = {\n base: '#4caf50',\n lighten5: '#e8f5e9',\n lighten4: '#c8e6c9',\n lighten3: '#a5d6a7',\n lighten2: '#81c784',\n lighten1: '#66bb6a',\n darken1: '#43a047',\n darken2: '#388e3c',\n darken3: '#2e7d32',\n darken4: '#1b5e20',\n accent1: '#b9f6ca',\n accent2: '#69f0ae',\n accent3: '#00e676',\n accent4: '#00c853'\n};\nexport const lightGreen = {\n base: '#8bc34a',\n lighten5: '#f1f8e9',\n lighten4: '#dcedc8',\n lighten3: '#c5e1a5',\n lighten2: '#aed581',\n lighten1: '#9ccc65',\n darken1: '#7cb342',\n darken2: '#689f38',\n darken3: '#558b2f',\n darken4: '#33691e',\n accent1: '#ccff90',\n accent2: '#b2ff59',\n accent3: '#76ff03',\n accent4: '#64dd17'\n};\nexport const lime = {\n base: '#cddc39',\n lighten5: '#f9fbe7',\n lighten4: '#f0f4c3',\n lighten3: '#e6ee9c',\n lighten2: '#dce775',\n lighten1: '#d4e157',\n darken1: '#c0ca33',\n darken2: '#afb42b',\n darken3: '#9e9d24',\n darken4: '#827717',\n accent1: '#f4ff81',\n accent2: '#eeff41',\n accent3: '#c6ff00',\n accent4: '#aeea00'\n};\nexport const yellow = {\n base: '#ffeb3b',\n lighten5: '#fffde7',\n lighten4: '#fff9c4',\n lighten3: '#fff59d',\n lighten2: '#fff176',\n lighten1: '#ffee58',\n darken1: '#fdd835',\n darken2: '#fbc02d',\n darken3: '#f9a825',\n darken4: '#f57f17',\n accent1: '#ffff8d',\n accent2: '#ffff00',\n accent3: '#ffea00',\n accent4: '#ffd600'\n};\nexport const amber = {\n base: '#ffc107',\n lighten5: '#fff8e1',\n lighten4: '#ffecb3',\n lighten3: '#ffe082',\n lighten2: '#ffd54f',\n lighten1: '#ffca28',\n darken1: '#ffb300',\n darken2: '#ffa000',\n darken3: '#ff8f00',\n darken4: '#ff6f00',\n accent1: '#ffe57f',\n accent2: '#ffd740',\n accent3: '#ffc400',\n accent4: '#ffab00'\n};\nexport const orange = {\n base: '#ff9800',\n lighten5: '#fff3e0',\n lighten4: '#ffe0b2',\n lighten3: '#ffcc80',\n lighten2: '#ffb74d',\n lighten1: '#ffa726',\n darken1: '#fb8c00',\n darken2: '#f57c00',\n darken3: '#ef6c00',\n darken4: '#e65100',\n accent1: '#ffd180',\n accent2: '#ffab40',\n accent3: '#ff9100',\n accent4: '#ff6d00'\n};\nexport const deepOrange = {\n base: '#ff5722',\n lighten5: '#fbe9e7',\n lighten4: '#ffccbc',\n lighten3: '#ffab91',\n lighten2: '#ff8a65',\n lighten1: '#ff7043',\n darken1: '#f4511e',\n darken2: '#e64a19',\n darken3: '#d84315',\n darken4: '#bf360c',\n accent1: '#ff9e80',\n accent2: '#ff6e40',\n accent3: '#ff3d00',\n accent4: '#dd2c00'\n};\nexport const brown = {\n base: '#795548',\n lighten5: '#efebe9',\n lighten4: '#d7ccc8',\n lighten3: '#bcaaa4',\n lighten2: '#a1887f',\n lighten1: '#8d6e63',\n darken1: '#6d4c41',\n darken2: '#5d4037',\n darken3: '#4e342e',\n darken4: '#3e2723'\n};\nexport const blueGrey = {\n base: '#607d8b',\n lighten5: '#eceff1',\n lighten4: '#cfd8dc',\n lighten3: '#b0bec5',\n lighten2: '#90a4ae',\n lighten1: '#78909c',\n darken1: '#546e7a',\n darken2: '#455a64',\n darken3: '#37474f',\n darken4: '#263238'\n};\nexport const grey = {\n base: '#9e9e9e',\n lighten5: '#fafafa',\n lighten4: '#f5f5f5',\n lighten3: '#eeeeee',\n lighten2: '#e0e0e0',\n lighten1: '#bdbdbd',\n darken1: '#757575',\n darken2: '#616161',\n darken3: '#424242',\n darken4: '#212121'\n};\nexport const shades = {\n black: '#000000',\n white: '#ffffff',\n transparent: '#ffffff00'\n};\nexport default {\n red,\n pink,\n purple,\n deepPurple,\n indigo,\n blue,\n lightBlue,\n cyan,\n teal,\n green,\n lightGreen,\n lime,\n yellow,\n amber,\n orange,\n deepOrange,\n brown,\n blueGrey,\n grey,\n shades\n};\n//# sourceMappingURL=colors.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPickerSwatches.css\";\n\n// Components\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\"; // Utilities\nimport { convertToUnit, deepEqual, defineComponent, getContrast, parseColor, propsFactory, RGBtoCSS, RGBtoHSV, useRender } from \"../../util/index.mjs\";\nimport colors from \"../../util/colors.mjs\"; // Types\nexport const makeVColorPickerSwatchesProps = propsFactory({\n swatches: {\n type: Array,\n default: () => parseDefaultColors(colors)\n },\n disabled: Boolean,\n color: Object,\n maxHeight: [Number, String],\n ...makeComponentProps()\n}, 'VColorPickerSwatches');\nfunction parseDefaultColors(colors) {\n return Object.keys(colors).map(key => {\n const color = colors[key];\n return color.base ? [color.base, color.darken4, color.darken3, color.darken2, color.darken1, color.lighten1, color.lighten2, color.lighten3, color.lighten4, color.lighten5] : [color.black, color.white, color.transparent];\n });\n}\nexport const VColorPickerSwatches = defineComponent({\n name: 'VColorPickerSwatches',\n props: makeVColorPickerSwatchesProps(),\n emits: {\n 'update:color': color => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-color-picker-swatches', props.class],\n \"style\": [{\n maxHeight: convertToUnit(props.maxHeight)\n }, props.style]\n }, [_createVNode(\"div\", null, [props.swatches.map(swatch => _createVNode(\"div\", {\n \"class\": \"v-color-picker-swatches__swatch\"\n }, [swatch.map(color => {\n const rgba = parseColor(color);\n const hsva = RGBtoHSV(rgba);\n const background = RGBtoCSS(rgba);\n return _createVNode(\"div\", {\n \"class\": \"v-color-picker-swatches__color\",\n \"onClick\": () => hsva && emit('update:color', hsva)\n }, [_createVNode(\"div\", {\n \"style\": {\n background\n }\n }, [props.color && deepEqual(props.color, hsva) ? _createVNode(VIcon, {\n \"size\": \"x-small\",\n \"icon\": \"$success\",\n \"color\": getContrast(color, '#FFFFFF') > 2 ? 'white' : 'black'\n }, null) : undefined])]);\n })]))])]));\n return {};\n }\n});\n//# sourceMappingURL=VColorPickerSwatches.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VSheet.css\";\n\n// Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVSheetProps = propsFactory({\n color: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VSheet');\nexport const VSheet = genericComponent()({\n name: 'VSheet',\n props: makeVSheetProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n borderClasses\n } = useBorder(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VSheet.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VColorPicker.css\";\n\n// Components\nimport { VColorPickerCanvas } from \"./VColorPickerCanvas.mjs\";\nimport { VColorPickerEdit } from \"./VColorPickerEdit.mjs\";\nimport { VColorPickerPreview } from \"./VColorPickerPreview.mjs\";\nimport { VColorPickerSwatches } from \"./VColorPickerSwatches.mjs\";\nimport { makeVSheetProps, VSheet } from \"../VSheet/VSheet.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, onBeforeMount, ref, watch } from 'vue';\nimport { extractColor, modes, nullColor } from \"./util/index.mjs\";\nimport { consoleWarn, defineComponent, HSVtoCSS, omit, parseColor, propsFactory, RGBtoHSV, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVColorPickerProps = propsFactory({\n canvasHeight: {\n type: [String, Number],\n default: 150\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10\n },\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: v => Object.keys(modes).includes(v)\n },\n modes: {\n type: Array,\n default: () => Object.keys(modes),\n validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))\n },\n showSwatches: Boolean,\n swatches: Array,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150\n },\n modelValue: {\n type: [Object, String]\n },\n ...omit(makeVSheetProps({\n width: 300\n }), ['height', 'location', 'minHeight', 'maxHeight', 'minWidth', 'maxWidth'])\n}, 'VColorPicker');\nexport const VColorPicker = defineComponent({\n name: 'VColorPicker',\n props: makeVColorPickerProps(),\n emits: {\n 'update:modelValue': color => true,\n 'update:mode': mode => true\n },\n setup(props) {\n const mode = useProxiedModel(props, 'mode');\n const hue = ref(null);\n const model = useProxiedModel(props, 'modelValue', undefined, v => {\n if (v == null || v === '') return null;\n let c;\n try {\n c = RGBtoHSV(parseColor(v));\n } catch (err) {\n consoleWarn(err);\n return null;\n }\n return c;\n }, v => {\n if (!v) return null;\n return extractColor(v, props.modelValue);\n });\n const currentColor = computed(() => {\n return model.value ? {\n ...model.value,\n h: hue.value ?? model.value.h\n } : null;\n });\n const {\n rtlClasses\n } = useRtl();\n let externalChange = true;\n watch(model, v => {\n if (!externalChange) {\n // prevent hue shift from rgb conversion inaccuracy\n externalChange = true;\n return;\n }\n if (!v) return;\n hue.value = v.h;\n }, {\n immediate: true\n });\n const updateColor = hsva => {\n externalChange = false;\n hue.value = hsva.h;\n model.value = hsva;\n };\n onBeforeMount(() => {\n if (!props.modes.includes(mode.value)) mode.value = props.modes[0];\n });\n provideDefaults({\n VSlider: {\n color: undefined,\n trackColor: undefined,\n trackFillColor: undefined\n }\n });\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n return _createVNode(VSheet, _mergeProps({\n \"rounded\": props.rounded,\n \"elevation\": props.elevation,\n \"theme\": props.theme,\n \"class\": ['v-color-picker', rtlClasses.value, props.class],\n \"style\": [{\n '--v-color-picker-color-hsv': HSVtoCSS({\n ...(currentColor.value ?? nullColor),\n a: 1\n })\n }, props.style]\n }, sheetProps, {\n \"maxWidth\": props.width\n }), {\n default: () => [!props.hideCanvas && _createVNode(VColorPickerCanvas, {\n \"key\": \"canvas\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"disabled\": props.disabled,\n \"dotSize\": props.dotSize,\n \"width\": props.width,\n \"height\": props.canvasHeight\n }, null), (!props.hideSliders || !props.hideInputs) && _createVNode(\"div\", {\n \"key\": \"controls\",\n \"class\": \"v-color-picker__controls\"\n }, [!props.hideSliders && _createVNode(VColorPickerPreview, {\n \"key\": \"preview\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"hideAlpha\": !mode.value.endsWith('a'),\n \"disabled\": props.disabled\n }, null), !props.hideInputs && _createVNode(VColorPickerEdit, {\n \"key\": \"edit\",\n \"modes\": props.modes,\n \"mode\": mode.value,\n \"onUpdate:mode\": m => mode.value = m,\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"disabled\": props.disabled\n }, null)]), props.showSwatches && _createVNode(VColorPickerSwatches, {\n \"key\": \"swatches\",\n \"color\": currentColor.value,\n \"onUpdate:color\": updateColor,\n \"maxHeight\": props.swatchesMaxHeight,\n \"swatches\": props.swatches,\n \"disabled\": props.disabled\n }, null)]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VColorPicker.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VCombobox.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VList, VListItem } from \"../VList/index.mjs\";\nimport { VMenu } from \"../VMenu/index.mjs\";\nimport { makeSelectProps } from \"../VSelect/VSelect.mjs\";\nimport { VTextField } from \"../VTextField/index.mjs\";\nimport { makeVTextFieldProps } from \"../VTextField/VTextField.mjs\";\nimport { VVirtualScroll } from \"../VVirtualScroll/index.mjs\"; // Composables\nimport { useScrolling } from \"../VSelect/useScrolling.mjs\";\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { useForm } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { transformItem, useItems } from \"../../composables/list-items.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTransitionProps } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';\nimport { checkPrintable, ensureValidVNode, genericComponent, IN_BROWSER, isComposingIgnoreKey, noop, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nfunction highlightResult(text, matches, length) {\n if (matches == null) return text;\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented');\n return typeof matches === 'number' && ~matches ? _createVNode(_Fragment, null, [_createVNode(\"span\", {\n \"class\": \"v-combobox__unmask\"\n }, [text.substr(0, matches)]), _createVNode(\"span\", {\n \"class\": \"v-combobox__mask\"\n }, [text.substr(matches, length)]), _createVNode(\"span\", {\n \"class\": \"v-combobox__unmask\"\n }, [text.substr(matches + length)])]) : text;\n}\nexport const makeVComboboxProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String]\n },\n clearOnSelect: {\n type: Boolean,\n default: true\n },\n delimiters: Array,\n ...makeFilterProps({\n filterKeys: ['title']\n }),\n ...makeSelectProps({\n hideNoData: true,\n returnObject: true\n }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox'\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({\n transition: false\n })\n}, 'VCombobox');\nexport const VCombobox = genericComponent()({\n name: 'VCombobox',\n props: makeVComboboxProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:search': value => true,\n 'update:menu': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const vTextFieldRef = ref();\n const isFocused = shallowRef(false);\n const isPristine = shallowRef(true);\n const listHasFocus = shallowRef(false);\n const vMenuRef = ref();\n const vVirtualScrollRef = ref();\n const _menu = useProxiedModel(props, 'menu');\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;\n _menu.value = v;\n }\n });\n const selectionIndex = shallowRef(-1);\n let cleared = false;\n const color = computed(() => vTextFieldRef.value?.color);\n const label = computed(() => menu.value ? props.closeText : props.openText);\n const {\n items,\n transformIn,\n transformOut\n } = useItems(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(color);\n const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {\n const transformed = transformOut(v);\n return props.multiple ? transformed : transformed[0] ?? null;\n });\n const form = useForm();\n const hasChips = computed(() => !!(props.chips || slots.chip));\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);\n const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');\n const search = computed({\n get: () => {\n return _search.value;\n },\n set: val => {\n _search.value = val ?? '';\n if (!props.multiple && !hasSelectionSlot.value) {\n model.value = [transformItem(props, val)];\n }\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim();\n if (v) select(transformItem(props, v));\n });\n _search.value = '';\n }\n }\n if (!val) selectionIndex.value = -1;\n isPristine.value = !val;\n }\n });\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : props.multiple ? model.value.length : search.value.length;\n });\n watch(_search, value => {\n if (cleared) {\n // wait for clear to finish, VTextField sets _search to null\n // then search computed triggers and updates _search to ''\n nextTick(() => cleared = false);\n } else if (isFocused.value && !menu.value) {\n menu.value = true;\n }\n emit('update:search', value);\n });\n watch(model, value => {\n if (!props.multiple && !hasSelectionSlot.value) {\n _search.value = value[0]?.title ?? '';\n }\n });\n const {\n filteredItems,\n getMatches\n } = useFilter(props, items, () => isPristine.value ? '' : search.value);\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));\n }\n return filteredItems.value;\n });\n const selectedValues = computed(() => model.value.map(selection => selection.value));\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;\n return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;\n });\n const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);\n const listRef = ref();\n const listEvents = useScrolling(listRef, vTextFieldRef);\n function onClear(e) {\n cleared = true;\n if (props.openOnClear) {\n menu.value = true;\n }\n }\n function onMousedownControl() {\n if (menuDisabled.value) return;\n menu.value = true;\n }\n function onMousedownMenuIcon(e) {\n if (menuDisabled.value) return;\n if (isFocused.value) {\n e.preventDefault();\n e.stopPropagation();\n }\n menu.value = !menu.value;\n }\n function onListKeydown(e) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus();\n }\n }\n // eslint-disable-next-line complexity\n function onKeydown(e) {\n if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;\n const selectionStart = vTextFieldRef.value.selectionStart;\n const length = model.value.length;\n if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n }\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true;\n }\n if (['Escape'].includes(e.key)) {\n menu.value = false;\n }\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {\n let {\n value\n } = _ref2;\n return value === displayItems.value[0].value;\n })) {\n select(filteredItems.value[0]);\n }\n isPristine.value = true;\n }\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next');\n }\n if (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value));\n if (hasSelectionSlot.value) _search.value = '';\n }\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value;\n select(model.value[selectionIndex.value], false);\n selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1;\n }\n }\n if (!props.multiple) return;\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return;\n const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;\n if (model.value[prev]) {\n selectionIndex.value = prev;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length);\n }\n }\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return;\n const next = selectionIndex.value + 1;\n if (model.value[next]) {\n selectionIndex.value = next;\n } else {\n selectionIndex.value = -1;\n vTextFieldRef.value.setSelectionRange(0, 0);\n }\n }\n }\n function onAfterEnter() {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems();\n }\n }\n function onAfterLeave() {\n if (isFocused.value) {\n isPristine.value = true;\n vTextFieldRef.value?.focus();\n }\n }\n /** @param set - null means toggle */\n function select(item) {\n let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!item || item.props.disabled) return;\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));\n const add = set == null ? !~index : set;\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value];\n value.splice(index, 1);\n model.value = value;\n } else if (add) {\n model.value = [...model.value, item];\n }\n if (props.clearOnSelect) {\n search.value = '';\n }\n } else {\n const add = set !== false;\n model.value = add ? [item] : [];\n _search.value = add && !hasSelectionSlot.value ? item.title : '';\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false;\n isPristine.value = true;\n });\n }\n }\n function onFocusin(e) {\n isFocused.value = true;\n setTimeout(() => {\n listHasFocus.value = true;\n });\n }\n function onFocusout(e) {\n listHasFocus.value = false;\n }\n function onUpdateModelValue(v) {\n if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];\n }\n watch(isFocused, (val, oldVal) => {\n if (val || val === oldVal) return;\n selectionIndex.value = -1;\n menu.value = false;\n if (search.value) {\n if (props.multiple) {\n select(transformItem(props, search.value));\n return;\n }\n if (!hasSelectionSlot.value) return;\n if (model.value.some(_ref3 => {\n let {\n title\n } = _ref3;\n return title === search.value;\n })) {\n _search.value = '';\n } else {\n select(transformItem(props, search.value));\n }\n }\n });\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);\n });\n }\n });\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return;\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true;\n }\n });\n useRender(() => {\n const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);\n const isDirty = model.value.length > 0;\n const textFieldProps = VTextField.filterProps(props);\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": search.value,\n \"onUpdate:modelValue\": [$event => search.value = $event, onUpdateModelValue],\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.externalValue,\n \"counterValue\": counterValue.value,\n \"dirty\": isDirty,\n \"class\": ['v-combobox', {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selection-slot': !!hasSelectionSlot.value,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true\n }, props.class],\n \"style\": props.style,\n \"readonly\": props.readonly,\n \"placeholder\": isDirty ? undefined : props.placeholder,\n \"onClick:clear\": onClear,\n \"onMousedown:control\": onMousedownControl,\n \"onKeydown\": onKeydown\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({\n \"ref\": vMenuRef,\n \"modelValue\": menu.value,\n \"onUpdate:modelValue\": $event => menu.value = $event,\n \"activator\": \"parent\",\n \"contentClass\": \"v-combobox__content\",\n \"disabled\": menuDisabled.value,\n \"eager\": props.eager,\n \"maxHeight\": 310,\n \"openOnClick\": false,\n \"closeOnContentClick\": false,\n \"transition\": props.transition,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, props.menuProps), {\n default: () => [hasList && _createVNode(VList, _mergeProps({\n \"ref\": listRef,\n \"selected\": selectedValues.value,\n \"selectStrategy\": props.multiple ? 'independent' : 'single-independent',\n \"onMousedown\": e => e.preventDefault(),\n \"onKeydown\": onListKeydown,\n \"onFocusin\": onFocusin,\n \"onFocusout\": onFocusout,\n \"tabindex\": \"-1\",\n \"aria-live\": \"polite\",\n \"color\": props.itemColor ?? props.color\n }, listEvents, props.listProps), {\n default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {\n \"title\": t(props.noDataText)\n }, null)), _createVNode(VVirtualScroll, {\n \"ref\": vVirtualScrollRef,\n \"renderless\": true,\n \"items\": displayItems.value\n }, {\n default: _ref4 => {\n let {\n item,\n index,\n itemRef\n } = _ref4;\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: highlightFirst.value && index === 0 ? true : undefined,\n onClick: () => select(item, null)\n });\n return slots.item?.({\n item,\n index,\n props: itemProps\n }) ?? _createVNode(VListItem, _mergeProps(itemProps, {\n \"role\": \"option\"\n }), {\n prepend: _ref5 => {\n let {\n isSelected\n } = _ref5;\n return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {\n \"key\": item.value,\n \"modelValue\": isSelected,\n \"ripple\": false,\n \"tabindex\": \"-1\"\n }, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {\n \"image\": item.props.prependAvatar\n }, null), item.props.prependIcon && _createVNode(VIcon, {\n \"icon\": item.props.prependIcon\n }, null)]);\n },\n title: () => {\n return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);\n }\n });\n }\n }), slots['append-item']?.()]\n })]\n }), model.value.map((item, index) => {\n function onChipClose(e) {\n e.stopPropagation();\n e.preventDefault();\n select(item, false);\n }\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown(e) {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n e.stopPropagation();\n onChipClose(e);\n },\n onMousedown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined\n };\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;\n const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({\n item,\n index,\n props: slotProps\n }) : slots.selection({\n item,\n index\n })) : undefined;\n if (hasSlot && !slotContent) return undefined;\n return _createVNode(\"div\", {\n \"key\": item.value,\n \"class\": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],\n \"style\": index === selectionIndex.value ? textColorStyles.value : {}\n }, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({\n \"key\": \"chip\",\n \"closable\": props.closableChips,\n \"size\": \"small\",\n \"text\": item.title,\n \"disabled\": item.props.disabled\n }, slotProps), null) : _createVNode(VDefaultsProvider, {\n \"key\": \"chip-defaults\",\n \"defaults\": {\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title\n }\n }\n }, {\n default: () => [slotContent]\n }) : slotContent ?? _createVNode(\"span\", {\n \"class\": \"v-combobox__selection-text\"\n }, [item.title, props.multiple && index < model.value.length - 1 && _createVNode(\"span\", {\n \"class\": \"v-combobox__selection-comma\"\n }, [_createTextVNode(\",\")])])]);\n })]),\n 'append-inner': function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createVNode(_Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? _createVNode(VIcon, {\n \"class\": \"v-combobox__menu-icon\",\n \"icon\": props.menuIcon,\n \"onMousedown\": onMousedownMenuIcon,\n \"onClick\": noop,\n \"aria-label\": t(label.value),\n \"title\": t(label.value),\n \"tabindex\": \"-1\"\n }, null) : undefined]);\n }\n });\n });\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select\n }, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VCombobox.mjs.map","import { createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useLocale } from \"../../composables/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref, toRaw, watchEffect } from 'vue';\nimport { deepEqual, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVConfirmEditProps = propsFactory({\n modelValue: null,\n color: String,\n cancelText: {\n type: String,\n default: '$vuetify.confirmEdit.cancel'\n },\n okText: {\n type: String,\n default: '$vuetify.confirmEdit.ok'\n }\n}, 'VConfirmEdit');\nexport const VConfirmEdit = genericComponent()({\n name: 'VConfirmEdit',\n props: makeVConfirmEditProps(),\n emits: {\n cancel: () => true,\n save: value => true,\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const internalModel = ref();\n watchEffect(() => {\n internalModel.value = structuredClone(toRaw(model.value));\n });\n const {\n t\n } = useLocale();\n const isPristine = computed(() => {\n return deepEqual(model.value, internalModel.value);\n });\n function save() {\n model.value = internalModel.value;\n emit('save', internalModel.value);\n }\n function cancel() {\n internalModel.value = structuredClone(toRaw(model.value));\n emit('cancel');\n }\n let actionsUsed = false;\n useRender(() => {\n const actions = _createVNode(_Fragment, null, [_createVNode(VBtn, {\n \"disabled\": isPristine.value,\n \"variant\": \"text\",\n \"color\": props.color,\n \"onClick\": cancel,\n \"text\": t(props.cancelText)\n }, null), _createVNode(VBtn, {\n \"disabled\": isPristine.value,\n \"variant\": \"text\",\n \"color\": props.color,\n \"onClick\": save,\n \"text\": t(props.okText)\n }, null)]);\n return _createVNode(_Fragment, null, [slots.default?.({\n model: internalModel,\n save,\n cancel,\n isPristine: isPristine.value,\n get actions() {\n actionsUsed = true;\n return actions;\n }\n }), !actionsUsed && actions]);\n });\n return {\n save,\n cancel,\n isPristine\n };\n }\n});\n//# sourceMappingURL=VConfirmEdit.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { inject, provide, toRef } from 'vue';\nimport { propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array,\n default: () => []\n }\n}, 'DataTable-expand');\nexport const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');\nexport function provideExpanded(props) {\n const expandOnClick = toRef(props, 'expandOnClick');\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v);\n }, v => {\n return [...v.values()];\n });\n function expand(item, value) {\n const newExpanded = new Set(expanded.value);\n if (!value) {\n newExpanded.delete(item.value);\n } else {\n newExpanded.add(item.value);\n }\n expanded.value = newExpanded;\n }\n function isExpanded(item) {\n return expanded.value.has(item.value);\n }\n function toggleExpand(item) {\n expand(item, !isExpanded(item));\n }\n const data = {\n expand,\n expanded,\n expandOnClick,\n isExpanded,\n toggleExpand\n };\n provide(VDataTableExpandedKey, data);\n return data;\n}\nexport function useExpanded() {\n const data = inject(VDataTableExpandedKey);\n if (!data) throw new Error('foo');\n return data;\n}\n//# sourceMappingURL=expand.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, ref } from 'vue';\nimport { getObjectValueByPath, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array,\n default: () => []\n }\n}, 'DataTable-group');\nconst VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');\nexport function createGroupBy(props) {\n const groupBy = useProxiedModel(props, 'groupBy');\n return {\n groupBy\n };\n}\nexport function provideGroupBy(options) {\n const {\n disableSort,\n groupBy,\n sortBy\n } = options;\n const opened = ref(new Set());\n const sortByWithGroups = computed(() => {\n return groupBy.value.map(val => ({\n ...val,\n order: val.order ?? false\n })).concat(disableSort?.value ? [] : sortBy.value);\n });\n function isGroupOpen(group) {\n return opened.value.has(group.id);\n }\n function toggleGroup(group) {\n const newOpened = new Set(opened.value);\n if (!isGroupOpen(group)) newOpened.add(group.id);else newOpened.delete(group.id);\n opened.value = newOpened;\n }\n function extractRows(items) {\n function dive(group) {\n const arr = [];\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item));\n } else {\n arr.push(item);\n }\n }\n return arr;\n }\n return dive({\n type: 'group',\n items,\n id: 'dummy',\n key: 'dummy',\n value: 'dummy',\n depth: 0\n });\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = {\n sortByWithGroups,\n toggleGroup,\n opened,\n groupBy,\n extractRows,\n isGroupOpen\n };\n provide(VDataTableGroupSymbol, data);\n return data;\n}\nexport function useGroupBy() {\n const data = inject(VDataTableGroupSymbol);\n if (!data) throw new Error('Missing group!');\n return data;\n}\nfunction groupItemsByProperty(items, groupBy) {\n if (!items.length) return [];\n const groups = new Map();\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy);\n if (!groups.has(value)) {\n groups.set(value, []);\n }\n groups.get(value).push(item);\n }\n return groups;\n}\nfunction groupItems(items, groupBy) {\n let depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let prefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'root';\n if (!groupBy.length) return [];\n const groupedItems = groupItemsByProperty(items, groupBy[0]);\n const groups = [];\n const rest = groupBy.slice(1);\n groupedItems.forEach((items, value) => {\n const key = groupBy[0];\n const id = `${prefix}_${key}_${value}`;\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group'\n });\n });\n return groups;\n}\nfunction flattenItems(items, opened) {\n const flatItems = [];\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item);\n }\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened));\n }\n } else {\n flatItems.push(item);\n }\n }\n return flatItems;\n}\nexport function useGroupedItems(items, groupBy, opened) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value;\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));\n return flattenItems(groupedItems, opened.value);\n });\n return {\n flatItems\n };\n}\n//# sourceMappingURL=group.mjs.map","// Utilities\nimport { computed, watch } from 'vue';\nimport { deepEqual, getCurrentInstance } from \"../../../util/index.mjs\"; // Types\nexport function useOptions(_ref) {\n let {\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n } = _ref;\n const vm = getCurrentInstance('VDataTable');\n const options = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n groupBy: groupBy.value,\n search: search.value\n }));\n let oldOptions = null;\n watch(options, () => {\n if (deepEqual(oldOptions, options.value)) return;\n\n // Reset page when searching\n if (oldOptions && oldOptions.search !== options.value.search) {\n page.value = 1;\n }\n vm.emit('update:options', options.value);\n oldOptions = options.value;\n }, {\n deep: true,\n immediate: true\n });\n}\n//# sourceMappingURL=options.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, watch } from 'vue';\nimport { clamp, getCurrentInstance, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10\n }\n}, 'DataTable-paginate');\nconst VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');\nexport function createPagination(props) {\n const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));\n return {\n page,\n itemsPerPage\n };\n}\nexport function providePagination(options) {\n const {\n page,\n itemsPerPage,\n itemsLength\n } = options;\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0;\n return itemsPerPage.value * (page.value - 1);\n });\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value;\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value);\n });\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;\n return Math.ceil(itemsLength.value / itemsPerPage.value);\n });\n\n // Don't run immediately, items may not have been loaded yet: #17966\n watch([page, pageCount], () => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value;\n }\n });\n function setItemsPerPage(value) {\n itemsPerPage.value = value;\n page.value = 1;\n }\n function nextPage() {\n page.value = clamp(page.value + 1, 1, pageCount.value);\n }\n function prevPage() {\n page.value = clamp(page.value - 1, 1, pageCount.value);\n }\n function setPage(value) {\n page.value = clamp(value, 1, pageCount.value);\n }\n const data = {\n page,\n itemsPerPage,\n startIndex,\n stopIndex,\n pageCount,\n itemsLength,\n nextPage,\n prevPage,\n setPage,\n setItemsPerPage\n };\n provide(VDataTablePaginationSymbol, data);\n return data;\n}\nexport function usePagination() {\n const data = inject(VDataTablePaginationSymbol);\n if (!data) throw new Error('Missing pagination!');\n return data;\n}\nexport function usePaginatedItems(options) {\n const vm = getCurrentInstance('usePaginatedItems');\n const {\n items,\n startIndex,\n stopIndex,\n itemsPerPage\n } = options;\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value;\n return items.value.slice(startIndex.value, stopIndex.value);\n });\n watch(paginatedItems, val => {\n vm.emit('update:currentItems', val);\n });\n return {\n paginatedItems\n };\n}\n//# sourceMappingURL=paginate.mjs.map","// Composables\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide } from 'vue';\nimport { deepEqual, propsFactory, wrapInArray } from \"../../../util/index.mjs\"; // Types\nconst singleSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: _ref => {\n let {\n items,\n value\n } = _ref;\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: _ref2 => {\n let {\n selected\n } = _ref2;\n return selected;\n }\n};\nconst pageSelectStrategy = {\n showSelectAll: true,\n allSelected: _ref3 => {\n let {\n currentPage\n } = _ref3;\n return currentPage;\n },\n select: _ref4 => {\n let {\n items,\n value,\n selected\n } = _ref4;\n for (const item of items) {\n if (value) selected.add(item.value);else selected.delete(item.value);\n }\n return selected;\n },\n selectAll: _ref5 => {\n let {\n value,\n currentPage,\n selected\n } = _ref5;\n return pageSelectStrategy.select({\n items: currentPage,\n value,\n selected\n });\n }\n};\nconst allSelectStrategy = {\n showSelectAll: true,\n allSelected: _ref6 => {\n let {\n allItems\n } = _ref6;\n return allItems;\n },\n select: _ref7 => {\n let {\n items,\n value,\n selected\n } = _ref7;\n for (const item of items) {\n if (value) selected.add(item.value);else selected.delete(item.value);\n }\n return selected;\n },\n selectAll: _ref8 => {\n let {\n value,\n allItems,\n selected\n } = _ref8;\n return allSelectStrategy.select({\n items: allItems,\n value,\n selected\n });\n }\n};\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object],\n default: 'page'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n valueComparator: {\n type: Function,\n default: deepEqual\n }\n}, 'DataTable-select');\nexport const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');\nexport function provideSelection(props, _ref9) {\n let {\n allItems,\n currentPage\n } = _ref9;\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(wrapInArray(v).map(v => {\n return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v;\n }));\n }, v => {\n return [...v.values()];\n });\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable));\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable));\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy;\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n function isSelected(items) {\n return wrapInArray(items).every(item => selected.value.has(item.value));\n }\n function isSomeSelected(items) {\n return wrapInArray(items).some(item => selected.value.has(item.value));\n }\n function select(items, value) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value)\n });\n selected.value = newSelected;\n }\n function toggleSelect(item) {\n select([item], !isSelected([item]));\n }\n function selectAll(value) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value)\n });\n selected.value = newSelected;\n }\n const someSelected = computed(() => selected.value.size > 0);\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value\n });\n return !!items.length && isSelected(items);\n });\n const showSelectAll = computed(() => selectStrategy.value.showSelectAll);\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll\n };\n provide(VDataTableSelectionSymbol, data);\n return data;\n}\nexport function useSelection() {\n const data = inject(VDataTableSelectionSymbol);\n if (!data) throw new Error('Missing selection!');\n return data;\n}\n//# sourceMappingURL=select.mjs.map","// Composables\nimport { useLocale } from \"../../../composables/index.mjs\";\nimport { useProxiedModel } from \"../../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject, provide, toRef } from 'vue';\nimport { getObjectValueByPath, isEmpty, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array,\n default: () => []\n },\n customKeySort: Object,\n multiSort: Boolean,\n mustSort: Boolean\n}, 'DataTable-sort');\nconst VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');\nexport function createSort(props) {\n const sortBy = useProxiedModel(props, 'sortBy');\n const mustSort = toRef(props, 'mustSort');\n const multiSort = toRef(props, 'multiSort');\n return {\n sortBy,\n mustSort,\n multiSort\n };\n}\nexport function provideSort(options) {\n const {\n sortBy,\n mustSort,\n multiSort,\n page\n } = options;\n const toggleSort = column => {\n if (column.key == null) return;\n let newSortBy = sortBy.value.map(x => ({\n ...x\n })) ?? [];\n const item = newSortBy.find(x => x.key === column.key);\n if (!item) {\n if (multiSort.value) newSortBy = [...newSortBy, {\n key: column.key,\n order: 'asc'\n }];else newSortBy = [{\n key: column.key,\n order: 'asc'\n }];\n } else if (item.order === 'desc') {\n if (mustSort.value) {\n item.order = 'asc';\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key);\n }\n } else {\n item.order = 'desc';\n }\n sortBy.value = newSortBy;\n if (page) page.value = 1;\n };\n function isSorted(column) {\n return !!sortBy.value.find(item => item.key === column.key);\n }\n const data = {\n sortBy,\n toggleSort,\n isSorted\n };\n provide(VDataTableSortSymbol, data);\n return data;\n}\nexport function useSort() {\n const data = inject(VDataTableSortSymbol);\n if (!data) throw new Error('Missing sort!');\n return data;\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems(props, items, sortBy, options) {\n const locale = useLocale();\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value;\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value\n },\n sortRawFunctions: options?.sortRawFunctions?.value\n });\n });\n return {\n sortedItems\n };\n}\nexport function sortItems(items, sortByItems, locale, options) {\n const stringCollator = new Intl.Collator(locale, {\n sensitivity: 'accent',\n usage: 'sort'\n });\n const transformedItems = items.map(item => [item, options?.transform ? options.transform(item) : item]);\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false;\n const sortKey = sortByItems[i].key;\n const sortOrder = sortByItems[i].order ?? 'asc';\n if (sortOrder === false) continue;\n let sortA = getObjectValueByPath(a[1], sortKey);\n let sortB = getObjectValueByPath(b[1], sortKey);\n let sortARaw = a[0].raw;\n let sortBRaw = b[0].raw;\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA];\n [sortARaw, sortBRaw] = [sortBRaw, sortARaw];\n }\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw);\n if (customResult == null) continue;\n hasCustomResult = true;\n if (customResult) return customResult;\n }\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB);\n if (customResult == null) continue;\n hasCustomResult = true;\n if (customResult) return customResult;\n }\n if (hasCustomResult) continue;\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime();\n }\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0;\n if (isEmpty(sortA)) return -1;\n if (isEmpty(sortB)) return 1;\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB);\n return stringCollator.compare(sortA, sortB);\n }\n }\n return 0;\n }).map(_ref => {\n let [item] = _ref;\n return item;\n });\n}\n//# sourceMappingURL=sort.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getPropertyFromItem, propsFactory } from \"../../../util/index.mjs\"; // Types\n// Composables\nexport const makeDataIteratorItemsProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'id'\n },\n itemSelectable: {\n type: [String, Array, Function],\n default: null\n },\n returnObject: Boolean\n}, 'DataIterator-items');\nexport function transformItem(props, item) {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n return {\n type: 'item',\n value,\n selectable,\n raw: item\n };\n}\nexport function transformItems(props, items) {\n const array = [];\n for (const item of items) {\n array.push(transformItem(props, item));\n }\n return array;\n}\nexport function useDataIteratorItems(props) {\n const items = computed(() => transformItems(props, props.items));\n return {\n items\n };\n}\n//# sourceMappingURL=items.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { makeDataTableExpandProps, provideExpanded } from \"../VDataTable/composables/expand.mjs\";\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"../VDataTable/composables/group.mjs\";\nimport { useOptions } from \"../VDataTable/composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from \"../VDataTable/composables/paginate.mjs\";\nimport { makeDataTableSelectProps, provideSelection } from \"../VDataTable/composables/select.mjs\";\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from \"../VDataTable/composables/sort.mjs\"; // Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from \"./composables/items.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { LoaderSlot } from \"../../composables/loader.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataIteratorProps = propsFactory({\n search: String,\n loading: Boolean,\n ...makeComponentProps(),\n ...makeDataIteratorItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps({\n itemsPerPage: 5\n }),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeFilterProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: {\n component: VFadeTransition,\n hideOnLeave: true\n }\n })\n}, 'VDataIterator');\nexport const VDataIterator = genericComponent()({\n name: 'VDataIterator',\n props: makeVDataIteratorProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:groupBy': value => true,\n 'update:page': value => true,\n 'update:itemsPerPage': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:expanded': value => true,\n 'update:currentItems': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const groupBy = useProxiedModel(props, 'groupBy');\n const search = toRef(props, 'search');\n const {\n items\n } = useDataIteratorItems(props);\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.raw\n });\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => item.raw\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const itemsLength = computed(() => flatItems.value.length);\n const {\n startIndex,\n stopIndex,\n pageCount,\n prevPage,\n nextPage,\n setItemsPerPage,\n setPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n paginatedItems\n } = usePaginatedItems({\n items: flatItems,\n startIndex,\n stopIndex,\n itemsPerPage\n });\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect\n } = provideSelection(props, {\n allItems: items,\n currentPage: paginatedItemsWithoutGroups\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n prevPage,\n nextPage,\n setPage,\n setItemsPerPage,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value\n }));\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-data-iterator', {\n 'v-data-iterator--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.header?.(slotProps.value), _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [props.loading ? _createVNode(LoaderSlot, {\n \"key\": \"loader\",\n \"name\": \"v-data-iterator\",\n \"active\": true\n }, {\n default: slotProps => slots.loader?.(slotProps)\n }) : _createVNode(\"div\", {\n \"key\": \"items\"\n }, [!paginatedItems.value.length ? slots['no-data']?.() : slots.default?.(slotProps.value)])]\n }), slots.footer?.(slotProps.value)]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VDataIterator.mjs.map","// Utilities\nimport { onBeforeUpdate, ref } from 'vue';\n\n// Types\n\nexport function useRefs() {\n const refs = ref([]);\n onBeforeUpdate(() => refs.value = []);\n function updateRef(e, i) {\n refs.value[i] = e;\n }\n return {\n refs,\n updateRef\n };\n}\n//# sourceMappingURL=refs.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VPagination.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDisplay } from \"../../composables/index.mjs\";\nimport { makeBorderProps } from \"../../composables/border.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale, useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useRefs } from \"../../composables/refs.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue';\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1\n },\n modelValue: {\n type: Number,\n default: props => props.start\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: val => val % 1 === 0\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n lastIcon: {\n type: IconValue,\n default: '$last'\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root'\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page'\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage'\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first'\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous'\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next'\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last'\n },\n ellipsis: {\n type: String,\n default: '...'\n },\n showFirstLastPage: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'nav'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VPagination');\nexport const VPagination = genericComponent()({\n name: 'VPagination',\n props: makeVPaginationProps(),\n emits: {\n 'update:modelValue': value => true,\n first: value => true,\n prev: value => true,\n next: value => true,\n last: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const page = useProxiedModel(props, 'modelValue');\n const {\n t,\n n\n } = useLocale();\n const {\n isRtl\n } = useRtl();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n width\n } = useDisplay();\n const maxButtons = shallowRef(-1);\n provideDefaults(undefined, {\n scoped: true\n });\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!entries.length) return;\n const {\n target,\n contentRect\n } = entries[0];\n const firstItem = target.querySelector('.v-pagination__list > *');\n if (!firstItem) return;\n const totalWidth = contentRect.width;\n const itemWidth = firstItem.offsetWidth + parseFloat(getComputedStyle(firstItem).marginRight) * 2;\n maxButtons.value = getMax(totalWidth, itemWidth);\n });\n const length = computed(() => parseInt(props.length, 10));\n const start = computed(() => parseInt(props.start, 10));\n const totalVisible = computed(() => {\n if (props.totalVisible != null) return parseInt(props.totalVisible, 10);else if (maxButtons.value >= 0) return maxButtons.value;\n return getMax(width.value, 58);\n });\n function getMax(totalWidth, itemWidth) {\n const minButtons = props.showFirstLastPage ? 5 : 3;\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));\n }\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];\n if (totalVisible.value <= 0) return [];else if (totalVisible.value === 1) return [page.value];\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value);\n }\n const even = totalVisible.value % 2 === 0;\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2);\n const left = even ? middle : middle + 1;\n const right = length.value - middle;\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value];\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1;\n const rangeStart = length.value - rangeLength + start.value;\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)];\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3);\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value;\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value];\n }\n });\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue(e, value, event) {\n e.preventDefault();\n page.value = value;\n event && emit(event, value);\n }\n const {\n refs,\n updateRef\n } = useRefs();\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation')\n }\n });\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = e => updateRef(e, index);\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true\n }\n };\n } else {\n const isActive = item === page.value;\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n 'aria-current': isActive,\n 'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n onClick: e => setValue(e, item)\n }\n };\n }\n });\n });\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value;\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1;\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: e => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n 'aria-label': t(props.firstAriaLabel),\n 'aria-disabled': prevDisabled\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: e => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n 'aria-label': t(props.previousAriaLabel),\n 'aria-disabled': prevDisabled\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: e => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n 'aria-label': t(props.nextAriaLabel),\n 'aria-disabled': nextDisabled\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: e => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n 'aria-label': t(props.lastAriaLabel),\n 'aria-disabled': nextDisabled\n } : undefined\n };\n });\n function updateFocus() {\n const currentIndex = page.value - start.value;\n refs.value[currentIndex]?.$el.focus();\n }\n function onKeydown(e) {\n if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n page.value = page.value - 1;\n nextTick(updateFocus);\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1;\n nextTick(updateFocus);\n }\n }\n useRender(() => _createVNode(props.tag, {\n \"ref\": resizeRef,\n \"class\": ['v-pagination', themeClasses.value, props.class],\n \"style\": props.style,\n \"role\": \"navigation\",\n \"aria-label\": t(props.ariaLabel),\n \"onKeydown\": onKeydown,\n \"data-test\": \"v-pagination-root\"\n }, {\n default: () => [_createVNode(\"ul\", {\n \"class\": \"v-pagination__list\"\n }, [props.showFirstLastPage && _createVNode(\"li\", {\n \"key\": \"first\",\n \"class\": \"v-pagination__first\",\n \"data-test\": \"v-pagination-first\"\n }, [slots.first ? slots.first(controls.value.first) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.first), null)]), _createVNode(\"li\", {\n \"key\": \"prev\",\n \"class\": \"v-pagination__prev\",\n \"data-test\": \"v-pagination-prev\"\n }, [slots.prev ? slots.prev(controls.value.prev) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.prev), null)]), items.value.map((item, index) => _createVNode(\"li\", {\n \"key\": item.key,\n \"class\": ['v-pagination__item', {\n 'v-pagination__item--is-active': item.isActive\n }],\n \"data-test\": \"v-pagination-item\"\n }, [slots.item ? slots.item(item) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, item.props), {\n default: () => [item.page]\n })])), _createVNode(\"li\", {\n \"key\": \"next\",\n \"class\": \"v-pagination__next\",\n \"data-test\": \"v-pagination-next\"\n }, [slots.next ? slots.next(controls.value.next) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.next), null)]), props.showFirstLastPage && _createVNode(\"li\", {\n \"key\": \"last\",\n \"class\": \"v-pagination__last\",\n \"data-test\": \"v-pagination-last\"\n }, [slots.last ? slots.last(controls.value.last) : _createVNode(VBtn, _mergeProps({\n \"_as\": \"VPaginationBtn\"\n }, controls.value.last), null)])])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VPagination.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDataTableFooter.css\";\n\n// Components\nimport { VPagination } from \"../VPagination/index.mjs\";\nimport { VSelect } from \"../VSelect/index.mjs\"; // Composables\nimport { usePagination } from \"./composables/paginate.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n firstIcon: {\n type: IconValue,\n default: '$first'\n },\n lastIcon: {\n type: IconValue,\n default: '$last'\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText'\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText'\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage'\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage'\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage'\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage'\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => [{\n value: 10,\n title: '10'\n }, {\n value: 25,\n title: '25'\n }, {\n value: 50,\n title: '50'\n }, {\n value: 100,\n title: '100'\n }, {\n value: -1,\n title: '$vuetify.dataFooter.itemsPerPageAll'\n }]\n },\n showCurrentPage: Boolean\n}, 'VDataTableFooter');\nexport const VDataTableFooter = genericComponent()({\n name: 'VDataTableFooter',\n props: makeVDataTableFooterProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n page,\n pageCount,\n startIndex,\n stopIndex,\n itemsLength,\n itemsPerPage,\n setItemsPerPage\n } = usePagination();\n const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => {\n if (typeof option === 'number') {\n return {\n value: option,\n title: option === -1 ? t('$vuetify.dataFooter.itemsPerPageAll') : String(option)\n };\n }\n return {\n ...option,\n title: !isNaN(Number(option.title)) ? option.title : t(option.title)\n };\n }));\n useRender(() => {\n const paginationProps = VPagination.filterProps(props);\n return _createVNode(\"div\", {\n \"class\": \"v-data-table-footer\"\n }, [slots.prepend?.(), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__items-per-page\"\n }, [_createVNode(\"span\", null, [t(props.itemsPerPageText)]), _createVNode(VSelect, {\n \"items\": itemsPerPageOptions.value,\n \"modelValue\": itemsPerPage.value,\n \"onUpdate:modelValue\": v => setItemsPerPage(Number(v)),\n \"density\": \"compact\",\n \"variant\": \"outlined\",\n \"hide-details\": true\n }, null)]), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__info\"\n }, [_createVNode(\"div\", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), _createVNode(\"div\", {\n \"class\": \"v-data-table-footer__pagination\"\n }, [_createVNode(VPagination, _mergeProps({\n \"modelValue\": page.value,\n \"onUpdate:modelValue\": $event => page.value = $event,\n \"density\": \"comfortable\",\n \"first-aria-label\": props.firstPageLabel,\n \"last-aria-label\": props.lastPageLabel,\n \"length\": pageCount.value,\n \"next-aria-label\": props.nextPageLabel,\n \"previous-aria-label\": props.prevPageLabel,\n \"rounded\": true,\n \"show-first-last-page\": true,\n \"total-visible\": props.showCurrentPage ? 1 : 0,\n \"variant\": \"plain\"\n }, paginationProps), null)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTableFooter.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { convertToUnit, defineFunctionalComponent } from \"../../util/index.mjs\"; // Types\nexport const VDataTableColumn = defineFunctionalComponent({\n align: {\n type: String,\n default: 'start'\n },\n fixed: Boolean,\n fixedOffset: [Number, String],\n height: [Number, String],\n lastFixed: Boolean,\n noPadding: Boolean,\n tag: String,\n width: [Number, String],\n maxWidth: [Number, String],\n nowrap: Boolean\n}, (props, _ref) => {\n let {\n slots\n } = _ref;\n const Tag = props.tag ?? 'td';\n return _createVNode(Tag, {\n \"class\": ['v-data-table__td', {\n 'v-data-table-column--fixed': props.fixed,\n 'v-data-table-column--last-fixed': props.lastFixed,\n 'v-data-table-column--no-padding': props.noPadding,\n 'v-data-table-column--nowrap': props.nowrap\n }, `v-data-table-column--align-${props.align}`],\n \"style\": {\n height: convertToUnit(props.height),\n width: convertToUnit(props.width),\n maxWidth: convertToUnit(props.maxWidth),\n left: convertToUnit(props.fixedOffset || null)\n }\n }, {\n default: () => [slots.default?.()]\n });\n});\n//# sourceMappingURL=VDataTableColumn.mjs.map","// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue';\nimport { consoleError, propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array\n}, 'DataTable-header');\nexport const VDataTableHeadersSymbol = Symbol.for('vuetify:data-table-headers');\nconst defaultHeader = {\n title: '',\n sortable: false\n};\nconst defaultActionHeader = {\n ...defaultHeader,\n width: 48\n};\nfunction priorityQueue() {\n let arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const queue = arr.map(element => ({\n element,\n priority: 0\n }));\n return {\n enqueue: (element, priority) => {\n let added = false;\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n if (item.priority > priority) {\n queue.splice(i, 0, {\n element,\n priority\n });\n added = true;\n break;\n }\n }\n if (!added) queue.push({\n element,\n priority\n });\n },\n size: () => queue.length,\n count: () => {\n let count = 0;\n if (!queue.length) return 0;\n const whole = Math.floor(queue[0].priority);\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1;\n }\n return count;\n },\n dequeue: () => {\n return queue.shift();\n }\n };\n}\nfunction extractLeaves(item) {\n let columns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n if (!item.children) {\n columns.push(item);\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns);\n }\n }\n return columns;\n}\nfunction extractKeys(headers) {\n let keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();\n for (const item of headers) {\n if (item.key) keys.add(item.key);\n if (item.children) {\n extractKeys(item.children, keys);\n }\n }\n return keys;\n}\nfunction getDefaultItem(item) {\n if (!item.key) return undefined;\n if (item.key === 'data-table-group') return defaultHeader;\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader;\n return undefined;\n}\nfunction getDepth(item) {\n let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!item.children) return depth;\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)));\n}\nfunction parseFixedColumns(items) {\n let seenFixed = false;\n function setFixed(item) {\n let parentFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!item) return;\n if (parentFixed) {\n item.fixed = true;\n }\n if (item.fixed) {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], true);\n }\n } else {\n if (!seenFixed) {\n item.lastFixed = true;\n } else if (isNaN(+item.width)) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);\n }\n seenFixed = true;\n }\n } else {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i]);\n }\n } else {\n seenFixed = false;\n }\n }\n }\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i]);\n }\n function setFixedOffset(item) {\n let fixedOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!item) return fixedOffset;\n if (item.children) {\n item.fixedOffset = fixedOffset;\n for (const child of item.children) {\n fixedOffset = setFixedOffset(child, fixedOffset);\n }\n } else if (item.fixed) {\n item.fixedOffset = fixedOffset;\n fixedOffset += parseFloat(item.width || '0') || 0;\n }\n return fixedOffset;\n }\n let fixedOffset = 0;\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset);\n }\n}\nfunction parse(items, maxDepth) {\n const headers = [];\n let currentDepth = 0;\n const queue = priorityQueue(items);\n while (queue.size() > 0) {\n let rowSize = queue.count();\n const row = [];\n let fraction = 1;\n while (rowSize > 0) {\n const {\n element: item,\n priority\n } = queue.dequeue();\n const diff = maxDepth - currentDepth - getDepth(item);\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1\n });\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + fraction / Math.pow(10, currentDepth + 2);\n queue.enqueue(child, currentDepth + diff + sort);\n }\n }\n fraction += 1;\n rowSize -= 1;\n }\n currentDepth += 1;\n headers.push(row);\n }\n const columns = items.map(item => extractLeaves(item)).flat();\n return {\n columns,\n headers\n };\n}\nfunction convertToInternalHeaders(items) {\n const internalHeaders = [];\n for (const item of items) {\n const defaultItem = {\n ...getDefaultItem(item),\n ...item\n };\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null);\n const value = defaultItem.value ?? key ?? null;\n const internalItem = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined\n };\n internalHeaders.push(internalItem);\n }\n return internalHeaders;\n}\nexport function createHeaders(props, options) {\n const headers = ref([]);\n const columns = ref([]);\n const sortFunctions = ref({});\n const sortRawFunctions = ref({});\n const filterFunctions = ref({});\n watchEffect(() => {\n const _headers = props.headers || Object.keys(props.items[0] ?? {}).map(key => ({\n key,\n title: capitalize(key)\n }));\n const items = _headers.slice();\n const keys = extractKeys(items);\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({\n key: 'data-table-group',\n title: 'Group'\n });\n }\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({\n key: 'data-table-select'\n });\n }\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({\n key: 'data-table-expand'\n });\n }\n const internalHeaders = convertToInternalHeaders(items);\n parseFixedColumns(internalHeaders);\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1;\n const parsed = parse(internalHeaders, maxDepth);\n headers.value = parsed.headers;\n columns.value = parsed.columns;\n const flatHeaders = parsed.headers.flat(1);\n for (const header of flatHeaders) {\n if (!header.key) continue;\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort;\n }\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw;\n }\n }\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter;\n }\n }\n });\n const data = {\n headers,\n columns,\n sortFunctions,\n sortRawFunctions,\n filterFunctions\n };\n provide(VDataTableHeadersSymbol, data);\n return data;\n}\nexport function useHeaders() {\n const data = inject(VDataTableHeadersSymbol);\n if (!data) throw new Error('Missing headers!');\n return data;\n}\n//# sourceMappingURL=headers.mjs.map","import { resolveDirective as _resolveDirective, Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\";\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VSelect } from \"../VSelect/index.mjs\"; // Composables\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { useSort } from \"./composables/sort.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { LoaderSlot, makeLoaderProps, useLoader } from \"../../composables/loader.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { computed, mergeProps } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n disableSort: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc'\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc'\n },\n headerProps: {\n type: Object\n },\n ...makeDisplayProps(),\n ...makeLoaderProps()\n}, 'VDataTableHeaders');\nexport const VDataTableHeaders = genericComponent()({\n name: 'VDataTableHeaders',\n props: makeVDataTableHeadersProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n toggleSort,\n sortBy,\n isSorted\n } = useSort();\n const {\n someSelected,\n allSelected,\n selectAll,\n showSelectAll\n } = useSelection();\n const {\n columns,\n headers\n } = useHeaders();\n const {\n loaderClasses\n } = useLoader(props);\n function getFixedStyles(column, y) {\n if (!props.sticky && !column.fixed) return undefined;\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined\n };\n }\n function getSortIcon(column) {\n const item = sortBy.value.find(item => item.key === column.key);\n if (!item) return props.sortAscIcon;\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon;\n }\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon\n }));\n const headerCellClasses = computed(() => ['v-data-table__th', {\n 'v-data-table__th--sticky': props.sticky\n }, displayClasses.value, loaderClasses.value]);\n const VDataTableHeaderCell = _ref2 => {\n let {\n column,\n x,\n y\n } = _ref2;\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {});\n return _createVNode(VDataTableColumn, _mergeProps({\n \"tag\": \"th\",\n \"align\": column.align,\n \"class\": [{\n 'v-data-table__th--sortable': column.sortable && !props.disableSort,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed\n }, ...headerCellClasses.value],\n \"style\": {\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y)\n },\n \"colspan\": column.colspan,\n \"rowspan\": column.rowspan,\n \"onClick\": column.sortable ? () => toggleSort(column) : undefined,\n \"fixed\": column.fixed,\n \"nowrap\": column.nowrap,\n \"lastFixed\": column.lastFixed,\n \"noPadding\": noPadding\n }, headerProps), {\n default: () => {\n const columnSlotName = `header.${column.key}`;\n const columnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon\n };\n if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && _createVNode(VCheckboxBtn, {\n \"modelValue\": allSelected.value,\n \"indeterminate\": someSelected.value && !allSelected.value,\n \"onUpdate:modelValue\": selectAll\n }, null));\n }\n return _createVNode(\"div\", {\n \"class\": \"v-data-table-header__content\"\n }, [_createVNode(\"span\", null, [column.title]), column.sortable && !props.disableSort && _createVNode(VIcon, {\n \"key\": \"icon\",\n \"class\": \"v-data-table-header__sort-icon\",\n \"icon\": getSortIcon(column)\n }, null), props.multiSort && isSorted(column) && _createVNode(\"div\", {\n \"key\": \"badge\",\n \"class\": ['v-data-table-header__sort-badge', ...backgroundColorClasses.value],\n \"style\": backgroundColorStyles.value\n }, [sortBy.value.findIndex(x => x.key === column.key) + 1])]);\n }\n });\n };\n const VDataTableMobileHeaderCell = () => {\n const headerProps = mergeProps(props.headerProps ?? {} ?? {});\n const displayItems = computed(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort);\n });\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select');\n if (showSelectColumn == null) return;\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff';\n });\n return _createVNode(VDataTableColumn, _mergeProps({\n \"tag\": \"th\",\n \"class\": [...headerCellClasses.value],\n \"colspan\": headers.value.length + 1\n }, headerProps), {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-data-table-header__content\"\n }, [_createVNode(VSelect, {\n \"chips\": true,\n \"class\": \"v-data-table__td-sort-select\",\n \"clearable\": true,\n \"density\": \"default\",\n \"items\": displayItems.value,\n \"label\": t('$vuetify.dataTable.sortBy'),\n \"multiple\": props.multiSort,\n \"variant\": \"underlined\",\n \"onClick:clear\": () => sortBy.value = [],\n \"appendIcon\": appendIcon.value,\n \"onClick:append\": () => selectAll(!allSelected.value)\n }, {\n ...slots,\n chip: props => _createVNode(VChip, {\n \"onClick\": props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined,\n \"onMousedown\": e => {\n e.preventDefault();\n e.stopPropagation();\n }\n }, {\n default: () => [props.item.title, _createVNode(VIcon, {\n \"class\": ['v-data-table__td-sort-icon', isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active'],\n \"icon\": getSortIcon(props.item.raw),\n \"size\": \"small\"\n }, null)]\n })\n })])]\n });\n };\n useRender(() => {\n return mobile.value ? _createVNode(\"tr\", null, [_createVNode(VDataTableMobileHeaderCell, null, null)]) : _createVNode(_Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => _createVNode(\"tr\", null, [row.map((column, x) => _createVNode(VDataTableHeaderCell, {\n \"column\": column,\n \"x\": x,\n \"y\": y\n }, null))])), props.loading && _createVNode(\"tr\", {\n \"class\": \"v-data-table-progress\"\n }, [_createVNode(\"th\", {\n \"colspan\": columns.value.length\n }, [_createVNode(LoaderSlot, {\n \"name\": \"v-data-table-progress\",\n \"absolute\": true,\n \"active\": true,\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true\n }, {\n default: slots.loader\n })])])]);\n });\n }\n});\n//# sourceMappingURL=VDataTableHeaders.mjs.map","import { createTextVNode as _createTextVNode, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\"; // Composables\nimport { useGroupBy } from \"./composables/group.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableGroupHeaderRowProps = propsFactory({\n item: {\n type: Object,\n required: true\n }\n}, 'VDataTableGroupHeaderRow');\nexport const VDataTableGroupHeaderRow = genericComponent()({\n name: 'VDataTableGroupHeaderRow',\n props: makeVDataTableGroupHeaderRowProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isGroupOpen,\n toggleGroup,\n extractRows\n } = useGroupBy();\n const {\n isSelected,\n isSomeSelected,\n select\n } = useSelection();\n const {\n columns\n } = useHeaders();\n const rows = computed(() => {\n return extractRows([props.item]);\n });\n return () => _createVNode(\"tr\", {\n \"class\": \"v-data-table-group-header-row\",\n \"style\": {\n '--v-data-table-group-header-row-depth': props.item.depth\n }\n }, [columns.value.map(column => {\n if (column.key === 'data-table-group') {\n const icon = isGroupOpen(props.item) ? '$expand' : '$next';\n const onClick = () => toggleGroup(props.item);\n return slots['data-table-group']?.({\n item: props.item,\n count: rows.value.length,\n props: {\n icon,\n onClick\n }\n }) ?? _createVNode(VDataTableColumn, {\n \"class\": \"v-data-table-group-header-row__column\"\n }, {\n default: () => [_createVNode(VBtn, {\n \"size\": \"small\",\n \"variant\": \"text\",\n \"icon\": icon,\n \"onClick\": onClick\n }, null), _createVNode(\"span\", null, [props.item.value]), _createVNode(\"span\", null, [_createTextVNode(\"(\"), rows.value.length, _createTextVNode(\")\")])]\n });\n }\n if (column.key === 'data-table-select') {\n const modelValue = isSelected(rows.value);\n const indeterminate = isSomeSelected(rows.value) && !modelValue;\n const selectGroup = v => select(rows.value, v);\n return slots['data-table-select']?.({\n props: {\n modelValue,\n indeterminate,\n 'onUpdate:modelValue': selectGroup\n }\n }) ?? _createVNode(\"td\", null, [_createVNode(VCheckboxBtn, {\n \"modelValue\": modelValue,\n \"indeterminate\": indeterminate,\n \"onUpdate:modelValue\": selectGroup\n }, null)]);\n }\n return _createVNode(\"td\", null, null);\n })]);\n }\n});\n//# sourceMappingURL=VDataTableGroupHeaderRow.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableColumn } from \"./VDataTableColumn.mjs\";\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VCheckboxBtn } from \"../VCheckbox/index.mjs\"; // Composables\nimport { useExpanded } from \"./composables/expand.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { useSort } from \"./composables/sort.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\"; // Utilities\nimport { toDisplayString, withModifiers } from 'vue';\nimport { EventProp, genericComponent, getObjectValueByPath, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableRowProps = propsFactory({\n index: Number,\n item: Object,\n cellProps: [Object, Function],\n onClick: EventProp(),\n onContextmenu: EventProp(),\n onDblclick: EventProp(),\n ...makeDisplayProps()\n}, 'VDataTableRow');\nexport const VDataTableRow = genericComponent()({\n name: 'VDataTableRow',\n props: makeVDataTableRowProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n displayClasses,\n mobile\n } = useDisplay(props, 'v-data-table__tr');\n const {\n isSelected,\n toggleSelect,\n someSelected,\n allSelected,\n selectAll\n } = useSelection();\n const {\n isExpanded,\n toggleExpand\n } = useExpanded();\n const {\n toggleSort,\n sortBy,\n isSorted\n } = useSort();\n const {\n columns\n } = useHeaders();\n useRender(() => _createVNode(\"tr\", {\n \"class\": ['v-data-table__tr', {\n 'v-data-table__tr--clickable': !!(props.onClick || props.onContextmenu || props.onDblclick)\n }, displayClasses.value],\n \"onClick\": props.onClick,\n \"onContextmenu\": props.onContextmenu,\n \"onDblclick\": props.onDblclick\n }, [props.item && columns.value.map((column, i) => {\n const item = props.item;\n const slotName = `item.${column.key}`;\n const headerSlotName = `header.${column.key}`;\n const slotProps = {\n index: props.index,\n item: item.raw,\n internalItem: item,\n value: getObjectValueByPath(item.columns, column.key),\n column,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand\n };\n const columnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon: () => ''\n };\n const cellProps = typeof props.cellProps === 'function' ? props.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value,\n column\n }) : props.cellProps;\n const columnCellProps = typeof column.cellProps === 'function' ? column.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value\n }) : column.cellProps;\n return _createVNode(VDataTableColumn, _mergeProps({\n \"align\": column.align,\n \"class\": {\n 'v-data-table__td--expanded-row': column.key === 'data-table-expand',\n 'v-data-table__td--select-row': column.key === 'data-table-select'\n },\n \"fixed\": column.fixed,\n \"fixedOffset\": column.fixedOffset,\n \"lastFixed\": column.lastFixed,\n \"maxWidth\": !mobile.value ? column.maxWidth : undefined,\n \"noPadding\": column.key === 'data-table-select' || column.key === 'data-table-expand',\n \"nowrap\": column.nowrap,\n \"width\": !mobile.value ? column.width : undefined\n }, cellProps, columnCellProps), {\n default: () => {\n if (slots[slotName] && !mobile.value) return slots[slotName]?.(slotProps);\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? _createVNode(VCheckboxBtn, {\n \"disabled\": !item.selectable,\n \"modelValue\": isSelected([item]),\n \"onClick\": withModifiers(() => toggleSelect(item), ['stop'])\n }, null);\n }\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? _createVNode(VBtn, {\n \"icon\": isExpanded(item) ? '$collapse' : '$expand',\n \"size\": \"small\",\n \"variant\": \"text\",\n \"onClick\": withModifiers(() => toggleExpand(item), ['stop'])\n }, null);\n }\n const displayValue = toDisplayString(slotProps.value);\n return !mobile.value ? displayValue : _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"class\": \"v-data-table__td-title\"\n }, [slots[headerSlotName]?.(columnSlotProps) ?? column.title]), _createVNode(\"div\", {\n \"class\": \"v-data-table__td-value\"\n }, [slots[slotName]?.(slotProps) ?? displayValue])]);\n }\n });\n })]));\n }\n});\n//# sourceMappingURL=VDataTableRow.mjs.map","// Utilities\nimport { isOn } from \"./helpers.mjs\";\nexport function getPrefixedEventHandlers(attrs, suffix, getData) {\n return Object.keys(attrs).filter(key => isOn(key) && key.endsWith(suffix)).reduce((acc, key) => {\n acc[key.slice(0, -suffix.length)] = event => attrs[key](event, getData(event));\n return acc;\n }, {});\n}\n//# sourceMappingURL=events.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDataTableGroupHeaderRow } from \"./VDataTableGroupHeaderRow.mjs\";\nimport { VDataTableRow } from \"./VDataTableRow.mjs\"; // Composables\nimport { useExpanded } from \"./composables/expand.mjs\";\nimport { useGroupBy } from \"./composables/group.mjs\";\nimport { useHeaders } from \"./composables/headers.mjs\";\nimport { useSelection } from \"./composables/select.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { Fragment, mergeProps } from 'vue';\nimport { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableRowsProps = propsFactory({\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText'\n },\n hideNoData: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText'\n },\n rowProps: [Object, Function],\n cellProps: [Object, Function],\n ...makeDisplayProps()\n}, 'VDataTableRows');\nexport const VDataTableRows = genericComponent()({\n name: 'VDataTableRows',\n inheritAttrs: false,\n props: makeVDataTableRowsProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n columns\n } = useHeaders();\n const {\n expandOnClick,\n toggleExpand,\n isExpanded\n } = useExpanded();\n const {\n isSelected,\n toggleSelect\n } = useSelection();\n const {\n toggleGroup,\n isGroupOpen\n } = useGroupBy();\n const {\n t\n } = useLocale();\n const {\n mobile\n } = useDisplay(props);\n useRender(() => {\n if (props.loading && (!props.items.length || slots.loading)) {\n return _createVNode(\"tr\", {\n \"class\": \"v-data-table-rows-loading\",\n \"key\": \"loading\"\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length\n }, [slots.loading?.() ?? t(props.loadingText)])]);\n }\n if (!props.loading && !props.items.length && !props.hideNoData) {\n return _createVNode(\"tr\", {\n \"class\": \"v-data-table-rows-no-data\",\n \"key\": \"no-data\"\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length\n }, [slots['no-data']?.() ?? t(props.noDataText)])]);\n }\n return _createVNode(_Fragment, null, [props.items.map((item, index) => {\n if (item.type === 'group') {\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen\n };\n return slots['group-header'] ? slots['group-header'](slotProps) : _createVNode(VDataTableGroupHeaderRow, _mergeProps({\n \"key\": `group-header_${item.id}`,\n \"item\": item\n }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);\n }\n const slotProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect\n };\n const itemSlotProps = {\n ...slotProps,\n props: mergeProps({\n key: `item_${item.key ?? item.index}`,\n onClick: expandOnClick.value ? () => {\n toggleExpand(item);\n } : undefined,\n index,\n item,\n cellProps: props.cellProps,\n mobile: mobile.value\n }, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({\n item: slotProps.item,\n index: slotProps.index,\n internalItem: slotProps.internalItem\n }) : props.rowProps)\n };\n return _createVNode(_Fragment, {\n \"key\": itemSlotProps.props.key\n }, [slots.item ? slots.item(itemSlotProps) : _createVNode(VDataTableRow, itemSlotProps.props, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTableRows.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTable.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VTable');\nexport const VTable = genericComponent()({\n name: 'VTable',\n props: makeVTableProps(),\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-table', {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover\n }, themeClasses.value, densityClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.top?.(), slots.default ? _createVNode(\"div\", {\n \"class\": \"v-table__wrapper\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"table\", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VTable.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { getPropertyFromItem, propsFactory } from \"../../../util/index.mjs\"; // Types\n// Composables\nexport const makeDataTableItemsProps = propsFactory({\n items: {\n type: Array,\n default: () => []\n },\n itemValue: {\n type: [String, Array, Function],\n default: 'id'\n },\n itemSelectable: {\n type: [String, Array, Function],\n default: null\n },\n rowProps: [Object, Function],\n cellProps: [Object, Function],\n returnObject: Boolean\n}, 'DataTable-items');\nexport function transformItem(props, item, index, columns) {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n const itemColumns = columns.reduce((obj, column) => {\n if (column.key != null) obj[column.key] = getPropertyFromItem(item, column.value);\n return obj;\n }, {});\n return {\n type: 'item',\n key: props.returnObject ? getPropertyFromItem(item, props.itemValue) : value,\n index,\n value,\n selectable,\n columns: itemColumns,\n raw: item\n };\n}\nexport function transformItems(props, items, columns) {\n return items.map((item, index) => transformItem(props, item, index, columns));\n}\nexport function useDataTableItems(props, columns) {\n const items = computed(() => transformItems(props, props.items, columns.value));\n return {\n items\n };\n}\n//# sourceMappingURL=items.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VDataTable.css\";\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from \"./VDataTableFooter.mjs\";\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { makeVDataTableRowsProps, VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { makeVTableProps, VTable } from \"../VTable/VTable.mjs\"; // Composables\nimport { makeDataTableExpandProps, provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders, makeDataTableHeaderProps } from \"./composables/headers.mjs\";\nimport { makeDataTableItemsProps, useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from \"./composables/paginate.mjs\";\nimport { makeDataTableSelectProps, provideSelection } from \"./composables/select.mjs\";\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\"; // Utilities\nimport { computed, toRef, toRefs } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n hideDefaultBody: Boolean,\n hideDefaultFooter: Boolean,\n hideDefaultHeader: Boolean,\n width: [String, Number],\n search: String,\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps()\n}, 'DataTable');\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps()\n}, 'VDataTable');\nexport const VDataTable = genericComponent()({\n name: 'VDataTable',\n props: makeVDataTableProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:page': value => true,\n 'update:itemsPerPage': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:groupBy': value => true,\n 'update:expanded': value => true,\n 'update:currentItems': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n disableSort\n } = toRefs(props);\n const {\n columns,\n headers,\n sortFunctions,\n sortRawFunctions,\n filterFunctions\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const search = toRef(props, 'search');\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions\n });\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({\n ...item.raw,\n ...item.columns\n }),\n sortFunctions,\n sortRawFunctions\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const itemsLength = computed(() => flatItems.value.length);\n const {\n startIndex,\n stopIndex,\n pageCount,\n setItemsPerPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n paginatedItems\n } = usePaginatedItems({\n items: flatItems,\n startIndex,\n stopIndex,\n itemsPerPage\n });\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems: items,\n currentPage: paginatedItemsWithoutGroups\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value.map(item => item.raw),\n internalItems: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props);\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--show-select': props.showSelect,\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\"\n }, [_createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && _createVNode(\"tbody\", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": paginatedItems.value\n }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && _createVNode(_Fragment, null, [_createVNode(VDivider, null, null), _createVNode(VDataTableFooter, dataTableFooterProps, {\n prepend: slots['footer.prepend']\n })])\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VDataTable.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeDataTableProps } from \"./VDataTable.mjs\";\nimport { VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { VDataTableRow } from \"./VDataTableRow.mjs\";\nimport { VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VTable } from \"../VTable/index.mjs\";\nimport { VVirtualScrollItem } from \"../VVirtualScroll/VVirtualScrollItem.mjs\"; // Composables\nimport { provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders } from \"./composables/headers.mjs\";\nimport { useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { provideSelection } from \"./composables/select.mjs\";\nimport { createSort, provideSort, useSortedItems } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeFilterProps, useFilter } from \"../../composables/filter.mjs\";\nimport { makeVirtualProps, useVirtual } from \"../../composables/virtual.mjs\"; // Utilities\nimport { computed, shallowRef, toRef, toRefs } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps()\n}, 'VDataTableVirtual');\nexport const VDataTableVirtual = genericComponent()({\n name: 'VDataTableVirtual',\n props: makeVDataTableVirtualProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:sortBy': value => true,\n 'update:options': value => true,\n 'update:groupBy': value => true,\n 'update:expanded': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n disableSort\n } = toRefs(props);\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const search = toRef(props, 'search');\n const {\n filteredItems\n } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions\n });\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort\n });\n const {\n sortByWithGroups,\n opened,\n extractRows,\n isGroupOpen,\n toggleGroup\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n sortedItems\n } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({\n ...item.raw,\n ...item.columns\n }),\n sortFunctions,\n sortRawFunctions\n });\n const {\n flatItems\n } = useGroupedItems(sortedItems, groupBy, opened);\n const allItems = computed(() => extractRows(flatItems.value));\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems,\n currentPage: allItems\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend\n } = useVirtual(props, flatItems);\n const displayItems = computed(() => computedItems.value.map(item => item.raw));\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n wrapper: () => _createVNode(\"div\", {\n \"ref\": containerRef,\n \"onScrollPassive\": handleScroll,\n \"onScrollend\": handleScrollend,\n \"class\": \"v-table__wrapper\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"table\", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\"\n }, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {\n \"sticky\": props.fixedHeader\n }), slots)]), !props.hideDefaultBody && _createVNode(\"tbody\", null, [_createVNode(\"tr\", {\n \"ref\": markerRef,\n \"style\": {\n height: convertToUnit(paddingTop.value),\n border: 0\n }\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length,\n \"style\": {\n height: 0,\n border: 0\n }\n }, null)]), slots['body.prepend']?.(slotProps.value), _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": displayItems.value\n }), {\n ...slots,\n item: itemSlotProps => _createVNode(VVirtualScrollItem, {\n \"key\": itemSlotProps.internalItem.index,\n \"renderless\": true,\n \"onUpdate:height\": height => handleItemResize(itemSlotProps.internalItem.index, height)\n }, {\n default: _ref2 => {\n let {\n itemRef\n } = _ref2;\n return slots.item?.({\n ...itemSlotProps,\n itemRef\n }) ?? _createVNode(VDataTableRow, _mergeProps(itemSlotProps.props, {\n \"ref\": itemRef,\n \"key\": itemSlotProps.internalItem.index,\n \"index\": itemSlotProps.internalItem.index\n }), slots);\n }\n })\n }), slots['body.append']?.(slotProps.value), _createVNode(\"tr\", {\n \"style\": {\n height: convertToUnit(paddingBottom.value),\n border: 0\n }\n }, [_createVNode(\"td\", {\n \"colspan\": columns.value.length,\n \"style\": {\n height: 0,\n border: 0\n }\n }, null)])])])]),\n bottom: () => slots.bottom?.(slotProps.value)\n });\n });\n }\n});\n//# sourceMappingURL=VDataTableVirtual.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Components\nimport { makeDataTableProps } from \"./VDataTable.mjs\";\nimport { makeVDataTableFooterProps, VDataTableFooter } from \"./VDataTableFooter.mjs\";\nimport { VDataTableHeaders } from \"./VDataTableHeaders.mjs\";\nimport { VDataTableRows } from \"./VDataTableRows.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { VTable } from \"../VTable/index.mjs\"; // Composables\nimport { provideExpanded } from \"./composables/expand.mjs\";\nimport { createGroupBy, provideGroupBy, useGroupedItems } from \"./composables/group.mjs\";\nimport { createHeaders } from \"./composables/headers.mjs\";\nimport { useDataTableItems } from \"./composables/items.mjs\";\nimport { useOptions } from \"./composables/options.mjs\";\nimport { createPagination, makeDataTablePaginateProps, providePagination } from \"./composables/paginate.mjs\";\nimport { provideSelection } from \"./composables/select.mjs\";\nimport { createSort, provideSort } from \"./composables/sort.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\"; // Utilities\nimport { computed, provide, toRef, toRefs } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true\n },\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps()\n}, 'VDataTableServer');\nexport const VDataTableServer = genericComponent()({\n name: 'VDataTableServer',\n props: makeVDataTableServerProps(),\n emits: {\n 'update:modelValue': value => true,\n 'update:page': page => true,\n 'update:itemsPerPage': page => true,\n 'update:sortBy': sortBy => true,\n 'update:options': options => true,\n 'update:expanded': options => true,\n 'update:groupBy': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n groupBy\n } = createGroupBy(props);\n const {\n sortBy,\n multiSort,\n mustSort\n } = createSort(props);\n const {\n page,\n itemsPerPage\n } = createPagination(props);\n const {\n disableSort\n } = toRefs(props);\n const itemsLength = computed(() => parseInt(props.itemsLength, 10));\n const {\n columns,\n headers\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand')\n });\n const {\n items\n } = useDataTableItems(props, columns);\n const {\n toggleSort\n } = provideSort({\n sortBy,\n multiSort,\n mustSort,\n page\n });\n const {\n opened,\n isGroupOpen,\n toggleGroup,\n extractRows\n } = provideGroupBy({\n groupBy,\n sortBy,\n disableSort\n });\n const {\n pageCount,\n setItemsPerPage\n } = providePagination({\n page,\n itemsPerPage,\n itemsLength\n });\n const {\n flatItems\n } = useGroupedItems(items, groupBy, opened);\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected\n } = provideSelection(props, {\n allItems: items,\n currentPage: items\n });\n const {\n isExpanded,\n toggleExpand\n } = provideExpanded(props);\n const itemsWithoutGroups = computed(() => extractRows(items.value));\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search')\n });\n provide('v-data-table', {\n toggleSort,\n sortBy\n });\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText')\n }\n });\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: itemsWithoutGroups.value.map(item => item.raw),\n internalItems: itemsWithoutGroups.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value\n }));\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props);\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props);\n const dataTableRowsProps = VDataTableRows.filterProps(props);\n const tableProps = VTable.filterProps(props);\n return _createVNode(VTable, _mergeProps({\n \"class\": ['v-data-table', {\n 'v-data-table--loading': props.loading\n }, props.class],\n \"style\": props.style\n }, tableProps), {\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && _createVNode(\"thead\", {\n \"key\": \"thead\",\n \"class\": \"v-data-table__thead\",\n \"role\": \"rowgroup\"\n }, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {\n \"sticky\": props.fixedHeader\n }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && _createVNode(\"tbody\", {\n \"class\": \"v-data-table__tbody\",\n \"role\": \"rowgroup\"\n }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(attrs, dataTableRowsProps, {\n \"items\": flatItems.value\n }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && _createVNode(_Fragment, null, [_createVNode(VDivider, null, null), _createVNode(VDataTableFooter, dataTableFooterProps, {\n prepend: slots['footer.prepend']\n })])\n });\n });\n }\n});\n//# sourceMappingURL=VDataTableServer.mjs.map","// Styles\nimport \"./VGrid.css\";\n\n// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VSpacer = createSimpleFunctional('v-spacer', 'div', 'VSpacer');\n//# sourceMappingURL=VSpacer.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerControls.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VSpacer } from \"../VGrid/index.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerControlsProps = propsFactory({\n active: {\n type: [String, Array],\n default: undefined\n },\n disabled: {\n type: [Boolean, String, Array],\n default: false\n },\n nextIcon: {\n type: IconValue,\n default: '$next'\n },\n prevIcon: {\n type: IconValue,\n default: '$prev'\n },\n modeIcon: {\n type: IconValue,\n default: '$subgroup'\n },\n text: String,\n viewMode: {\n type: String,\n default: 'month'\n }\n}, 'VDatePickerControls');\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n props: makeVDatePickerControlsProps(),\n emits: {\n 'click:year': () => true,\n 'click:month': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n 'click:text': () => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const disableMonth = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('text') : !!props.disabled;\n });\n const disableYear = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('mode') : !!props.disabled;\n });\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('prev') : !!props.disabled;\n });\n const disableNext = computed(() => {\n return Array.isArray(props.disabled) ? props.disabled.includes('next') : !!props.disabled;\n });\n function onClickPrev() {\n emit('click:prev');\n }\n function onClickNext() {\n emit('click:next');\n }\n function onClickYear() {\n emit('click:year');\n }\n function onClickMonth() {\n emit('click:month');\n }\n useRender(() => {\n // TODO: add slot support and scope defaults\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-controls']\n }, [_createVNode(VBtn, {\n \"class\": \"v-date-picker-controls__month-btn\",\n \"disabled\": disableMonth.value,\n \"text\": props.text,\n \"variant\": \"text\",\n \"rounded\": true,\n \"onClick\": onClickMonth\n }, null), _createVNode(VBtn, {\n \"key\": \"mode-btn\",\n \"class\": \"v-date-picker-controls__mode-btn\",\n \"disabled\": disableYear.value,\n \"density\": \"comfortable\",\n \"icon\": props.modeIcon,\n \"variant\": \"text\",\n \"onClick\": onClickYear\n }, null), _createVNode(VSpacer, {\n \"key\": \"mode-spacer\"\n }, null), _createVNode(\"div\", {\n \"key\": \"month-buttons\",\n \"class\": \"v-date-picker-controls__month\"\n }, [_createVNode(VBtn, {\n \"disabled\": disablePrev.value,\n \"icon\": props.prevIcon,\n \"variant\": \"text\",\n \"onClick\": onClickPrev\n }, null), _createVNode(VBtn, {\n \"disabled\": disableNext.value,\n \"icon\": props.nextIcon,\n \"variant\": \"text\",\n \"onClick\": onClickNext\n }, null)])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerControls.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerHeader.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n onClick: EventProp()\n}, 'VDatePickerHeader');\nexport const VDatePickerHeader = genericComponent()({\n name: 'VDatePickerHeader',\n props: makeVDatePickerHeaderProps(),\n emits: {\n click: () => true,\n 'click:append': () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n function onClick() {\n emit('click');\n }\n function onClickAppend() {\n emit('click:append');\n }\n useRender(() => {\n const hasContent = !!(slots.default || props.header);\n const hasAppend = !!(slots.append || props.appendIcon);\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-header', {\n 'v-date-picker-header--clickable': !!props.onClick\n }, backgroundColorClasses.value],\n \"style\": backgroundColorStyles.value,\n \"onClick\": onClick\n }, [slots.prepend && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-date-picker-header__prepend\"\n }, [slots.prepend()]), hasContent && _createVNode(MaybeTransition, {\n \"key\": \"content\",\n \"name\": props.transition\n }, {\n default: () => [_createVNode(\"div\", {\n \"key\": props.header,\n \"class\": \"v-date-picker-header__content\"\n }, [slots.default?.() ?? props.header])]\n }), hasAppend && _createVNode(\"div\", {\n \"class\": \"v-date-picker-header__append\"\n }, [!slots.append ? _createVNode(VBtn, {\n \"key\": \"append-btn\",\n \"icon\": props.appendIcon,\n \"variant\": \"text\",\n \"onClick\": onClickAppend\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !props.appendIcon,\n \"defaults\": {\n VBtn: {\n icon: props.appendIcon,\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.append?.()]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerHeader.mjs.map","// Composables\nimport { getWeek, useDate } from \"./date/date.mjs\";\nimport { useProxiedModel } from \"./proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { propsFactory, wrapInArray } from \"../util/index.mjs\"; // Types\n// Types\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function],\n disabled: Boolean,\n displayValue: null,\n modelValue: Array,\n month: [Number, String],\n max: null,\n min: null,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array,\n default: () => [0, 1, 2, 3, 4, 5, 6]\n },\n weeksInMonth: {\n type: String,\n default: 'dynamic'\n },\n firstDayOfWeek: [Number, String]\n}, 'calendar');\nexport function useCalendar(props) {\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue);\n if (model.value.length > 0) return adapter.date(model.value[0]);\n if (props.min) return adapter.date(props.min);\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0]);\n return adapter.date();\n });\n const year = useProxiedModel(props, 'year', undefined, v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value);\n return adapter.startOfYear(adapter.setYear(adapter.date(), value));\n }, v => adapter.getYear(v));\n const month = useProxiedModel(props, 'month', undefined, v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value);\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));\n return adapter.setMonth(date, value);\n }, v => adapter.getMonth(v));\n const weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0);\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7);\n });\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);\n const days = weeks.flat();\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7;\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1];\n let week = [];\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day));\n if (day % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n }\n }\n return weeks;\n });\n function genDays(days, today) {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay());\n }).map((date, index) => {\n const isoDate = adapter.toISO(date);\n const isAdjacent = !adapter.isSameMonth(date, month.value);\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));\n const isSame = adapter.isSameDay(date, month.value);\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth')\n };\n });\n }\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek);\n const week = [];\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day));\n }\n const today = adapter.date();\n return genDays(week, today);\n });\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat();\n const today = adapter.date();\n return genDays(days, today);\n });\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null;\n });\n });\n function isDisabled(value) {\n if (props.disabled) return true;\n const date = adapter.date(value);\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true;\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true;\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));\n }\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date);\n }\n return false;\n }\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers\n };\n}\n//# sourceMappingURL=calendar.mjs.map","import { createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\";\n// Styles\nimport \"./VDatePickerMonth.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { makeCalendarProps, useCalendar } from \"../../composables/calendar.mjs\";\nimport { useDate } from \"../../composables/date/date.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String],\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition'\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition'\n },\n ...makeCalendarProps()\n}, 'VDatePickerMonth');\nexport const VDatePickerMonth = genericComponent()({\n name: 'VDatePickerMonth',\n props: makeVDatePickerMonthProps(),\n emits: {\n 'update:modelValue': date => true,\n 'update:month': date => true,\n 'update:year': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const daysRef = ref();\n const {\n daysInMonth,\n model,\n weekNumbers\n } = useCalendar(props);\n const adapter = useDate();\n const rangeStart = shallowRef();\n const rangeStop = shallowRef();\n const isReverse = shallowRef(false);\n const transition = computed(() => {\n return !isReverse.value ? props.transition : props.reverseTransition;\n });\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0];\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1];\n }\n }\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;\n return model.value.length >= max;\n });\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return;\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date);\n });\n function onRangeClick(value) {\n const _value = adapter.startOfDay(value);\n if (model.value.length === 0) {\n rangeStart.value = undefined;\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0];\n rangeStop.value = undefined;\n }\n if (!rangeStart.value) {\n rangeStart.value = _value;\n model.value = [rangeStart.value];\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined;\n model.value = [];\n return;\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value);\n rangeStart.value = _value;\n } else {\n rangeStop.value = adapter.endOfDay(_value);\n }\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');\n const datesInRange = [rangeStart.value];\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i);\n datesInRange.push(nextDate);\n }\n datesInRange.push(rangeStop.value);\n model.value = datesInRange;\n } else {\n rangeStart.value = value;\n rangeStop.value = undefined;\n model.value = [rangeStart.value];\n }\n }\n function onMultipleClick(value) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value));\n if (index === -1) {\n model.value = [...model.value, value];\n } else {\n const value = [...model.value];\n value.splice(index, 1);\n model.value = value;\n }\n }\n function onClick(value) {\n if (props.multiple === 'range') {\n onRangeClick(value);\n } else if (props.multiple) {\n onMultipleClick(value);\n } else {\n model.value = [value];\n }\n }\n return () => _createVNode(\"div\", {\n \"class\": \"v-date-picker-month\"\n }, [props.showWeek && _createVNode(\"div\", {\n \"key\": \"weeks\",\n \"class\": \"v-date-picker-month__weeks\"\n }, [!props.hideWeekdays && _createVNode(\"div\", {\n \"key\": \"hide-week-days\",\n \"class\": \"v-date-picker-month__day\"\n }, [_createTextVNode(\"\\xA0\")]), weekNumbers.value.map(week => _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']\n }, [week]))]), _createVNode(MaybeTransition, {\n \"name\": transition.value\n }, {\n default: () => [_createVNode(\"div\", {\n \"ref\": daysRef,\n \"key\": daysInMonth.value[0].date?.toString(),\n \"class\": \"v-date-picker-month__days\"\n }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', 'v-date-picker-month__weekday']\n }, [weekDay])), daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date)\n },\n item,\n i\n };\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true;\n }\n return _createVNode(\"div\", {\n \"class\": ['v-date-picker-month__day', {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart\n }],\n \"data-v-date\": !item.isDisabled ? item.isoDate : undefined\n }, [(props.showAdjacentMonths || !item.isAdjacent) && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n class: 'v-date-picker-month__day-btn',\n color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date)\n }\n }\n }, {\n default: () => [slots.day?.(slotProps) ?? _createVNode(VBtn, slotProps.props, null)]\n })]);\n })])]\n })]);\n }\n});\n//# sourceMappingURL=VDatePickerMonth.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VDatePickerMonths.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, watchEffect } from 'vue';\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVDatePickerMonthsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null,\n max: null,\n modelValue: Number,\n year: Number\n}, 'VDatePickerMonths');\nexport const VDatePickerMonths = genericComponent()({\n name: 'VDatePickerMonths',\n props: makeVDatePickerMonthsProps(),\n emits: {\n 'update:modelValue': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue');\n const months = computed(() => {\n let date = adapter.startOfYear(adapter.date());\n if (props.year) {\n date = adapter.setYear(date, props.year);\n }\n return createRange(12).map(i => {\n const text = adapter.format(date, 'monthShort');\n const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));\n date = adapter.getNextMonth(date);\n return {\n isDisabled,\n text,\n value: i\n };\n });\n });\n watchEffect(() => {\n model.value = model.value ?? adapter.getMonth(adapter.date());\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-date-picker-months\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"div\", {\n \"class\": \"v-date-picker-months__content\"\n }, [months.value.map((month, i) => {\n const btnProps = {\n active: model.value === i,\n color: model.value === i ? props.color : undefined,\n disabled: month.isDisabled,\n rounded: true,\n text: month.text,\n variant: model.value === month.value ? 'flat' : 'text',\n onClick: () => onClick(i)\n };\n function onClick(i) {\n if (model.value === i) {\n emit('update:modelValue', model.value);\n return;\n }\n model.value = i;\n }\n return slots.month?.({\n month,\n i,\n props: btnProps\n }) ?? _createVNode(VBtn, _mergeProps({\n \"key\": \"month\"\n }, btnProps), null);\n })])]));\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerMonths.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VDatePickerYears.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, onMounted, watchEffect } from 'vue';\nimport { convertToUnit, createRange, genericComponent, propsFactory, templateRef, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVDatePickerYearsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null,\n max: null,\n modelValue: Number\n}, 'VDatePickerYears');\nexport const VDatePickerYears = genericComponent()({\n name: 'VDatePickerYears',\n props: makeVDatePickerYearsProps(),\n emits: {\n 'update:modelValue': year => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const model = useProxiedModel(props, 'modelValue');\n const years = computed(() => {\n const year = adapter.getYear(adapter.date());\n let min = year - 100;\n let max = year + 52;\n if (props.min) {\n min = adapter.getYear(adapter.date(props.min));\n }\n if (props.max) {\n max = adapter.getYear(adapter.date(props.max));\n }\n let date = adapter.startOfYear(adapter.date());\n date = adapter.setYear(date, min);\n return createRange(max - min + 1, min).map(i => {\n const text = adapter.format(date, 'year');\n date = adapter.setYear(date, adapter.getYear(date) + 1);\n return {\n text,\n value: i\n };\n });\n });\n watchEffect(() => {\n model.value = model.value ?? adapter.getYear(adapter.date());\n });\n const yearRef = templateRef();\n onMounted(async () => {\n await nextTick();\n yearRef.el?.scrollIntoView({\n block: 'center'\n });\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-date-picker-years\",\n \"style\": {\n height: convertToUnit(props.height)\n }\n }, [_createVNode(\"div\", {\n \"class\": \"v-date-picker-years__content\"\n }, [years.value.map((year, i) => {\n const btnProps = {\n ref: model.value === year.value ? yearRef : undefined,\n active: model.value === year.value,\n color: model.value === year.value ? props.color : undefined,\n rounded: true,\n text: year.text,\n variant: model.value === year.value ? 'flat' : 'text',\n onClick: () => {\n if (model.value === year.value) {\n emit('update:modelValue', model.value);\n return;\n }\n model.value = year.value;\n }\n };\n return slots.year?.({\n year,\n i,\n props: btnProps\n }) ?? _createVNode(VBtn, _mergeProps({\n \"key\": \"month\"\n }, btnProps), null);\n })])]));\n return {};\n }\n});\n//# sourceMappingURL=VDatePickerYears.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VPickerTitle = createSimpleFunctional('v-picker-title');\n//# sourceMappingURL=VPickerTitle.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VPicker.css\";\n\n// Components\nimport { VPickerTitle } from \"./VPickerTitle.mjs\";\nimport { VDefaultsProvider } from \"../../components/VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { makeVSheetProps, VSheet } from \"../../components/VSheet/VSheet.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVPickerProps = propsFactory({\n bgColor: String,\n landscape: Boolean,\n title: String,\n hideHeader: Boolean,\n ...makeVSheetProps()\n}, 'VPicker');\nexport const VPicker = genericComponent()({\n name: 'VPicker',\n props: makeVPickerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n const hasTitle = !!(props.title || slots.title);\n return _createVNode(VSheet, _mergeProps(sheetProps, {\n \"color\": props.bgColor,\n \"class\": ['v-picker', {\n 'v-picker--landscape': props.landscape,\n 'v-picker--with-actions': !!slots.actions\n }, props.class],\n \"style\": props.style\n }), {\n default: () => [!props.hideHeader && _createVNode(\"div\", {\n \"key\": \"header\",\n \"class\": [backgroundColorClasses.value],\n \"style\": [backgroundColorStyles.value]\n }, [hasTitle && _createVNode(VPickerTitle, {\n \"key\": \"picker-title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), slots.header && _createVNode(\"div\", {\n \"class\": \"v-picker__header\"\n }, [slots.header()])]), _createVNode(\"div\", {\n \"class\": \"v-picker__body\"\n }, [slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n slim: true,\n variant: 'text'\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-picker__actions\"\n }, [slots.actions()])]\n })]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VPicker.mjs.map","import { Fragment as _Fragment, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VDatePicker.css\";\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from \"./VDatePickerControls.mjs\";\nimport { VDatePickerHeader } from \"./VDatePickerHeader.mjs\";\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from \"./VDatePickerMonth.mjs\";\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from \"./VDatePickerMonths.mjs\";\nimport { makeVDatePickerYearsProps, VDatePickerYears } from \"./VDatePickerYears.mjs\";\nimport { VFadeTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { makeVPickerProps, VPicker } from \"../../labs/VPicker/VPicker.mjs\"; // Composables\nimport { useDate } from \"../../composables/date/index.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref, shallowRef, watch } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header'\n },\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static'\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({\n title: '$vuetify.datePicker.title'\n }),\n modelValue: null\n}, 'VDatePicker');\nexport const VDatePicker = genericComponent()({\n name: 'VDatePicker',\n props: makeVDatePickerProps(),\n emits: {\n 'update:modelValue': date => true,\n 'update:month': date => true,\n 'update:year': date => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': date => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const adapter = useDate();\n const {\n t\n } = useLocale();\n const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);\n const viewMode = useProxiedModel(props, 'viewMode');\n // const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0]);\n return value && adapter.isValid(value) ? value : adapter.date();\n });\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));\n const isReversing = shallowRef(false);\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length);\n }\n return model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday') : t(props.header);\n });\n const text = computed(() => {\n let date = adapter.date();\n date = adapter.setDate(date, 1);\n date = adapter.setMonth(date, month.value);\n date = adapter.setYear(date, year.value);\n return adapter.format(date, 'monthAndYear');\n });\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);\n const minDate = computed(() => {\n const date = adapter.date(props.min);\n return props.min && adapter.isValid(date) ? date : null;\n });\n const maxDate = computed(() => {\n const date = adapter.date(props.max);\n return props.max && adapter.isValid(date) ? date : null;\n });\n const disabled = computed(() => {\n if (props.disabled) return true;\n const targets = [];\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next']);\n } else {\n let _date = adapter.date();\n _date = adapter.setYear(_date, year.value);\n _date = adapter.setMonth(_date, month.value);\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1);\n adapter.isAfter(minDate.value, date) && targets.push('prev');\n }\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1);\n adapter.isAfter(date, maxDate.value) && targets.push('next');\n }\n }\n return targets;\n });\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext() {\n if (month.value < 11) {\n month.value++;\n } else {\n year.value++;\n month.value = 0;\n onUpdateYear(year.value);\n }\n onUpdateMonth(month.value);\n }\n function onClickPrev() {\n if (month.value > 0) {\n month.value--;\n } else {\n year.value--;\n month.value = 11;\n onUpdateYear(year.value);\n }\n onUpdateMonth(month.value);\n }\n function onClickDate() {\n viewMode.value = 'month';\n }\n function onClickMonth() {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months';\n }\n function onClickYear() {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year';\n }\n function onUpdateMonth(value) {\n if (viewMode.value === 'months') onClickMonth();\n emit('update:month', value);\n }\n function onUpdateYear(value) {\n if (viewMode.value === 'year') onClickYear();\n emit('update:year', value);\n }\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal);\n const arrAfter = wrapInArray(val);\n if (!arrAfter.length) return;\n const before = adapter.date(arrBefore[arrBefore.length - 1]);\n const after = adapter.date(arrAfter[arrAfter.length - 1]);\n const newMonth = adapter.getMonth(after);\n const newYear = adapter.getYear(after);\n if (newMonth !== month.value) {\n month.value = newMonth;\n onUpdateMonth(month.value);\n }\n if (newYear !== year.value) {\n year.value = newYear;\n onUpdateYear(year.value);\n }\n isReversing.value = adapter.isBefore(before, after);\n });\n useRender(() => {\n const pickerProps = VPicker.filterProps(props);\n const datePickerControlsProps = VDatePickerControls.filterProps(props);\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props);\n const datePickerMonthProps = VDatePickerMonth.filterProps(props);\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue']);\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue']);\n const headerProps = {\n header: header.value,\n transition: headerTransition.value\n };\n return _createVNode(VPicker, _mergeProps(pickerProps, {\n \"class\": ['v-date-picker', `v-date-picker--${viewMode.value}`, {\n 'v-date-picker--show-week': props.showWeek\n }, props.class],\n \"style\": props.style\n }), {\n title: () => slots.title?.() ?? _createVNode(\"div\", {\n \"class\": \"v-date-picker__title\"\n }, [t(props.title)]),\n header: () => slots.header ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VDatePickerHeader: {\n ...headerProps\n }\n }\n }, {\n default: () => [slots.header?.(headerProps)]\n }) : _createVNode(VDatePickerHeader, _mergeProps({\n \"key\": \"header\"\n }, datePickerHeaderProps, headerProps, {\n \"onClick\": viewMode.value !== 'month' ? onClickDate : undefined\n }), {\n ...slots,\n default: undefined\n }),\n default: () => _createVNode(_Fragment, null, [_createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {\n \"disabled\": disabled.value,\n \"text\": text.value,\n \"onClick:next\": onClickNext,\n \"onClick:prev\": onClickPrev,\n \"onClick:month\": onClickMonth,\n \"onClick:year\": onClickYear\n }), null), _createVNode(VFadeTransition, {\n \"hideOnLeave\": true\n }, {\n default: () => [viewMode.value === 'months' ? _createVNode(VDatePickerMonths, _mergeProps({\n \"key\": \"date-picker-months\"\n }, datePickerMonthsProps, {\n \"modelValue\": month.value,\n \"onUpdate:modelValue\": [$event => month.value = $event, onUpdateMonth],\n \"min\": minDate.value,\n \"max\": maxDate.value,\n \"year\": year.value\n }), null) : viewMode.value === 'year' ? _createVNode(VDatePickerYears, _mergeProps({\n \"key\": \"date-picker-years\"\n }, datePickerYearsProps, {\n \"modelValue\": year.value,\n \"onUpdate:modelValue\": [$event => year.value = $event, onUpdateYear],\n \"min\": minDate.value,\n \"max\": maxDate.value\n }), null) : _createVNode(VDatePickerMonth, _mergeProps({\n \"key\": \"date-picker-month\"\n }, datePickerMonthProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"month\": month.value,\n \"onUpdate:month\": [$event => month.value = $event, onUpdateMonth],\n \"year\": year.value,\n \"onUpdate:year\": [$event => year.value = $event, onUpdateYear],\n \"min\": minDate.value,\n \"max\": maxDate.value\n }), null)]\n })]),\n actions: slots.actions\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VDatePicker.mjs.map","import { createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VEmptyState.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useDisplay } from \"../../composables/display.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVEmptyStateProps = propsFactory({\n actionText: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n image: String,\n justify: {\n type: String,\n default: 'center'\n },\n headline: String,\n title: String,\n text: String,\n textWidth: {\n type: [Number, String],\n default: 500\n },\n href: String,\n to: String,\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeSizeProps({\n size: undefined\n }),\n ...makeThemeProps()\n}, 'VEmptyState');\nexport const VEmptyState = genericComponent()({\n name: 'VEmptyState',\n props: makeVEmptyStateProps(),\n emits: {\n 'click:action': e => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n displayClasses\n } = useDisplay();\n function onClickAction(e) {\n emit('click:action', e);\n }\n useRender(() => {\n const hasActions = !!(slots.actions || props.actionText);\n const hasHeadline = !!(slots.headline || props.headline);\n const hasTitle = !!(slots.title || props.title);\n const hasText = !!(slots.text || props.text);\n const hasMedia = !!(slots.media || props.image || props.icon);\n const size = props.size || (props.image ? 200 : 96);\n return _createVNode(\"div\", {\n \"class\": ['v-empty-state', {\n [`v-empty-state--${props.justify}`]: true\n }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, props.style]\n }, [hasMedia && _createVNode(\"div\", {\n \"key\": \"media\",\n \"class\": \"v-empty-state__media\"\n }, [!slots.media ? _createVNode(_Fragment, null, [props.image ? _createVNode(VImg, {\n \"key\": \"image\",\n \"src\": props.image,\n \"height\": size\n }, null) : props.icon ? _createVNode(VIcon, {\n \"key\": \"icon\",\n \"color\": props.color,\n \"size\": size,\n \"icon\": props.icon\n }, null) : undefined]) : _createVNode(VDefaultsProvider, {\n \"key\": \"media-defaults\",\n \"defaults\": {\n VImg: {\n src: props.image,\n height: size\n },\n VIcon: {\n size,\n icon: props.icon\n }\n }\n }, {\n default: () => [slots.media()]\n })]), hasHeadline && _createVNode(\"div\", {\n \"key\": \"headline\",\n \"class\": \"v-empty-state__headline\"\n }, [slots.headline?.() ?? props.headline]), hasTitle && _createVNode(\"div\", {\n \"key\": \"title\",\n \"class\": \"v-empty-state__title\"\n }, [slots.title?.() ?? props.title]), hasText && _createVNode(\"div\", {\n \"key\": \"text\",\n \"class\": \"v-empty-state__text\",\n \"style\": {\n maxWidth: convertToUnit(props.textWidth)\n }\n }, [slots.text?.() ?? props.text]), slots.default && _createVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-empty-state__content\"\n }, [slots.default()]), hasActions && _createVNode(\"div\", {\n \"key\": \"actions\",\n \"class\": \"v-empty-state__actions\"\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n class: 'v-empty-state__action-btn',\n color: props.color ?? 'surface-variant',\n text: props.actionText\n }\n }\n }, {\n default: () => [slots.actions?.({\n props: {\n onClick: onClickAction\n }\n }) ?? _createVNode(VBtn, {\n \"onClick\": onClickAction\n }, null)]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VEmptyState.mjs.map","// Types\n\nexport const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');\n//# sourceMappingURL=shared.mjs.map","import { withDirectives as _withDirectives, vShow as _vShow, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { VExpandTransition } from \"../transitions/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.mjs\"; // Utilities\nimport { inject } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVExpansionPanelTextProps = propsFactory({\n ...makeComponentProps(),\n ...makeLazyProps()\n}, 'VExpansionPanelText');\nexport const VExpansionPanelText = genericComponent()({\n name: 'VExpansionPanelText',\n props: makeVExpansionPanelTextProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const expansionPanel = inject(VExpansionPanelSymbol);\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel');\n const {\n hasContent,\n onAfterLeave\n } = useLazy(props, expansionPanel.isSelected);\n useRender(() => _createVNode(VExpandTransition, {\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"class\": ['v-expansion-panel-text', props.class],\n \"style\": props.style\n }, [slots.default && hasContent.value && _createVNode(\"div\", {\n \"class\": \"v-expansion-panel-text__wrapper\"\n }, [slots.default?.()])]), [[_vShow, expansionPanel.isSelected.value]])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VExpansionPanelText.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand'\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse'\n },\n hideActions: Boolean,\n focusable: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false\n },\n readonly: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VExpansionPanelTitle');\nexport const VExpansionPanelTitle = genericComponent()({\n name: 'VExpansionPanelTitle',\n directives: {\n Ripple\n },\n props: makeVExpansionPanelTitleProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const expansionPanel = inject(VExpansionPanelSymbol);\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel');\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'color');\n const {\n dimensionStyles\n } = useDimension(props);\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly\n }));\n const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);\n useRender(() => _withDirectives(_createVNode(\"button\", {\n \"class\": ['v-expansion-panel-title', {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n 'v-expansion-panel-title--focusable': props.focusable,\n 'v-expansion-panel-title--static': props.static\n }, backgroundColorClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, props.style],\n \"type\": \"button\",\n \"tabindex\": expansionPanel.disabled.value ? -1 : undefined,\n \"disabled\": expansionPanel.disabled.value,\n \"aria-expanded\": expansionPanel.isSelected.value,\n \"onClick\": !props.readonly ? expansionPanel.toggle : undefined\n }, [_createVNode(\"span\", {\n \"class\": \"v-expansion-panel-title__overlay\"\n }, null), slots.default?.(slotProps.value), !props.hideActions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon: icon.value\n }\n }\n }, {\n default: () => [_createVNode(\"span\", {\n \"class\": \"v-expansion-panel-title__icon\"\n }, [slots.actions?.(slotProps.value) ?? _createVNode(VIcon, null, null)])]\n })]), [[_resolveDirective(\"ripple\"), props.ripple]]));\n return {};\n }\n});\n//# sourceMappingURL=VExpansionPanelTitle.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { makeVExpansionPanelTextProps, VExpansionPanelText } from \"./VExpansionPanelText.mjs\";\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from \"./VExpansionPanelTitle.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, provide } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVExpansionPanelProps = propsFactory({\n title: String,\n text: String,\n bgColor: String,\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n ...makeVExpansionPanelTextProps()\n}, 'VExpansionPanel');\nexport const VExpansionPanel = genericComponent()({\n name: 'VExpansionPanel',\n props: makeVExpansionPanelProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const groupItem = useGroupItem(props, VExpansionPanelSymbol);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(props, 'bgColor');\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled);\n const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index);\n return arr;\n }, []));\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);\n return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === 1);\n });\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);\n return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === -1);\n });\n provide(VExpansionPanelSymbol, groupItem);\n useRender(() => {\n const hasText = !!(slots.text || props.text);\n const hasTitle = !!(slots.title || props.title);\n const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props);\n const expansionPanelTextProps = VExpansionPanelText.filterProps(props);\n return _createVNode(props.tag, {\n \"class\": ['v-expansion-panel', {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': isDisabled.value\n }, roundedClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.style]\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": ['v-expansion-panel__shadow', ...elevationClasses.value]\n }, null), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VExpansionPanelTitle: {\n ...expansionPanelTitleProps\n },\n VExpansionPanelText: {\n ...expansionPanelTextProps\n }\n }\n }, {\n default: () => [hasTitle && _createVNode(VExpansionPanelTitle, {\n \"key\": \"title\"\n }, {\n default: () => [slots.title ? slots.title() : props.title]\n }), hasText && _createVNode(VExpansionPanelText, {\n \"key\": \"text\"\n }, {\n default: () => [slots.text ? slots.text() : props.text]\n }), slots.default?.()]\n })]\n });\n });\n return {\n groupItem\n };\n }\n});\n//# sourceMappingURL=VExpansionPanel.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VExpansionPanel.css\";\n\n// Components\nimport { VExpansionPanelSymbol } from \"./shared.mjs\";\nimport { makeVExpansionPanelProps } from \"./VExpansionPanel.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, pick, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'];\nexport const makeVExpansionPanelsProps = propsFactory({\n flat: Boolean,\n ...makeGroupProps(),\n ...pick(makeVExpansionPanelProps(), ['bgColor', 'collapseIcon', 'color', 'eager', 'elevation', 'expandIcon', 'focusable', 'hideActions', 'readonly', 'ripple', 'rounded', 'tile', 'static']),\n ...makeThemeProps(),\n ...makeComponentProps(),\n ...makeTagProps(),\n variant: {\n type: String,\n default: 'default',\n validator: v => allowedVariants.includes(v)\n }\n}, 'VExpansionPanels');\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n props: makeVExpansionPanelsProps(),\n emits: {\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n next,\n prev\n } = useGroup(props, VExpansionPanelSymbol);\n const {\n themeClasses\n } = provideTheme(props);\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);\n provideDefaults({\n VExpansionPanel: {\n bgColor: toRef(props, 'bgColor'),\n collapseIcon: toRef(props, 'collapseIcon'),\n color: toRef(props, 'color'),\n eager: toRef(props, 'eager'),\n elevation: toRef(props, 'elevation'),\n expandIcon: toRef(props, 'expandIcon'),\n focusable: toRef(props, 'focusable'),\n hideActions: toRef(props, 'hideActions'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n rounded: toRef(props, 'rounded'),\n static: toRef(props, 'static')\n }\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-expansion-panels', {\n 'v-expansion-panels--flat': props.flat,\n 'v-expansion-panels--tile': props.tile\n }, themeClasses.value, variantClass.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.({\n prev,\n next\n })]\n }));\n return {\n next,\n prev\n };\n }\n});\n//# sourceMappingURL=VExpansionPanels.mjs.map","import { withDirectives as _withDirectives, createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, vShow as _vShow } from \"vue\";\n// Styles\nimport \"./VFab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.mjs\"; // Composables\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { makeLocationProps } from \"../../composables/location.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVFabProps = propsFactory({\n app: Boolean,\n appear: Boolean,\n extended: Boolean,\n layout: Boolean,\n offset: Boolean,\n modelValue: {\n type: Boolean,\n default: true\n },\n ...omit(makeVBtnProps({\n active: true\n }), ['location']),\n ...makeLayoutItemProps(),\n ...makeLocationProps(),\n ...makeTransitionProps({\n transition: 'fab-transition'\n })\n}, 'VFab');\nexport const VFab = genericComponent()({\n name: 'VFab',\n props: makeVFabProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const height = shallowRef(56);\n const layoutItemStyles = ref();\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!entries.length) return;\n height.value = entries[0].target.clientHeight;\n });\n const hasPosition = computed(() => props.app || props.absolute);\n const position = computed(() => {\n if (!hasPosition.value) return false;\n return props.location?.split(' ').shift() ?? 'bottom';\n });\n const orientation = computed(() => {\n if (!hasPosition.value) return false;\n return props.location?.split(' ')[1] ?? 'end';\n });\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position,\n layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n elementSize: computed(() => height.value + 24),\n active: computed(() => props.app && model.value),\n absolute: toRef(props, 'absolute')\n });\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value;\n });\n });\n const vFabRef = ref();\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(\"div\", {\n \"ref\": vFabRef,\n \"class\": ['v-fab', {\n 'v-fab--absolute': props.absolute,\n 'v-fab--app': !!props.app,\n 'v-fab--extended': props.extended,\n 'v-fab--offset': props.offset,\n [`v-fab--${position.value}`]: hasPosition.value,\n [`v-fab--${orientation.value}`]: hasPosition.value\n }, props.class],\n \"style\": [props.app ? {\n ...layoutItemStyles.value\n } : {\n height: 'inherit',\n width: undefined\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-fab__container\"\n }, [_createVNode(MaybeTransition, {\n \"appear\": props.appear,\n \"transition\": props.transition\n }, {\n default: () => [_withDirectives(_createVNode(VBtn, _mergeProps({\n \"ref\": resizeRef\n }, btnProps, {\n \"active\": undefined,\n \"location\": undefined\n }), slots), [[_vShow, props.active]])]\n })])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VFab.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VFileInput.css\";\n\n// Components\nimport { VChip } from \"../VChip/index.mjs\";\nimport { VCounter } from \"../VCounter/index.mjs\";\nimport { VField } from \"../VField/index.mjs\";\nimport { filterFieldProps, makeVFieldProps } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { callEvent, filterInputAttrs, genericComponent, humanReadableFileSize, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize'\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter'\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String],\n default: false,\n validator: v => {\n return typeof v === 'boolean' || [1000, 1024].includes(Number(v));\n }\n },\n ...makeVInputProps({\n prependIcon: '$file'\n }),\n modelValue: {\n type: [Array, Object],\n default: props => props.multiple ? [] : null,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object');\n }\n },\n ...makeVFieldProps({\n clearable: true\n })\n}, 'VFileInput');\nexport const VFileInput = genericComponent()({\n name: 'VFileInput',\n inheritAttrs: false,\n props: makeVFileInputProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': files => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined);\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, _ref2) => {\n let {\n size = 0\n } = _ref2;\n return bytes + size;\n }, 0));\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value));\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const {\n name = '',\n size = 0\n } = file;\n return !props.showSize ? name : `${name} (${humanReadableFileSize(size, base.value)})`;\n }));\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0;\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value);else return t(props.counterString, fileCount);\n });\n const vInputRef = ref();\n const vFieldRef = ref();\n const inputRef = ref();\n const isActive = computed(() => isFocused.value || props.active);\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n function onFocus() {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onClickPrepend(e) {\n inputRef.value?.click();\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n }\n function onControlClick(e) {\n inputRef.value?.click();\n emit('click:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = [];\n callEvent(props['onClick:clear'], e);\n });\n }\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length;\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = '';\n }\n });\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-file-input', {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style,\n \"onClick:prepend\": onClickPrepend\n }, rootAttrs, inputProps, {\n \"centerAffix\": !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref3 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref3;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"prepend-icon\": props.prependIcon,\n \"onMousedown\": onControlMousedown,\n \"onClick\": onControlClick,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner']\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref4 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref4;\n return _createVNode(_Fragment, null, [_createVNode(\"input\", _mergeProps({\n \"ref\": inputRef,\n \"type\": \"file\",\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"multiple\": props.multiple,\n \"name\": props.name,\n \"onClick\": e => {\n e.stopPropagation();\n if (isReadonly.value) e.preventDefault();\n onFocus();\n },\n \"onChange\": e => {\n if (!e.target) return;\n const target = e.target;\n model.value = [...(target.files ?? [])];\n },\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), _createVNode(\"div\", {\n \"class\": fieldClass\n }, [!!model.value?.length && !props.hideInput && (slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value\n }) : props.chips ? fileNames.value.map(text => _createVNode(VChip, {\n \"key\": text,\n \"size\": \"small\",\n \"text\": text\n }, null)) : fileNames.value.join(', '))])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": !!model.value?.length,\n \"value\": counterValue.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, inputRef);\n }\n});\n//# sourceMappingURL=VFileInput.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VFooter.css\";\n\n// Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVFooterProps = propsFactory({\n app: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 'auto'\n },\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'footer'\n }),\n ...makeThemeProps()\n}, 'VFooter');\nexport const VFooter = genericComponent()({\n name: 'VFooter',\n props: makeVFooterProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const layoutItemStyles = ref();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n borderClasses\n } = useBorder(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const autoHeight = shallowRef(32);\n const {\n resizeRef\n } = useResizeObserver(entries => {\n if (!entries.length) return;\n autoHeight.value = entries[0].target.clientHeight;\n });\n const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10));\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: height,\n elementSize: computed(() => props.height === 'auto' ? undefined : height.value),\n active: computed(() => props.app),\n absolute: toRef(props, 'absolute')\n });\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value;\n });\n });\n useRender(() => _createVNode(props.tag, {\n \"ref\": resizeRef,\n \"class\": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : {\n height: convertToUnit(props.height)\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VFooter.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { createForm, makeFormProps } from \"../../composables/form.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\"; // Utilities\nimport { ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVFormProps = propsFactory({\n ...makeComponentProps(),\n ...makeFormProps()\n}, 'VForm');\nexport const VForm = genericComponent()({\n name: 'VForm',\n props: makeVFormProps(),\n emits: {\n 'update:modelValue': val => true,\n submit: e => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const form = createForm(props);\n const formRef = ref();\n function onReset(e) {\n e.preventDefault();\n form.reset();\n }\n function onSubmit(_e) {\n const e = _e;\n const ready = form.validate();\n e.then = ready.then.bind(ready);\n e.catch = ready.catch.bind(ready);\n e.finally = ready.finally.bind(ready);\n emit('submit', e);\n if (!e.defaultPrevented) {\n ready.then(_ref2 => {\n let {\n valid\n } = _ref2;\n if (valid) {\n formRef.value?.submit();\n }\n });\n }\n e.preventDefault();\n }\n useRender(() => _createVNode(\"form\", {\n \"ref\": formRef,\n \"class\": ['v-form', props.class],\n \"style\": props.style,\n \"novalidate\": true,\n \"onReset\": onReset,\n \"onSubmit\": onSubmit\n }, [slots.default?.(form)]));\n return forwardRefs(form, formRef);\n }\n});\n//# sourceMappingURL=VForm.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VGrid.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVContainerProps = propsFactory({\n fluid: {\n type: Boolean,\n default: false\n },\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps()\n}, 'VContainer');\nexport const VContainer = genericComponent()({\n name: 'VContainer',\n props: makeVContainerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n rtlClasses\n } = useRtl();\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-container', {\n 'v-container--fluid': props.fluid\n }, rtlClasses.value, props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VContainer.mjs.map","// Styles\nimport \"./VGrid.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { breakpoints } from \"../../composables/display.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { capitalize, computed, h } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false\n };\n return props;\n }, {});\n})();\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n const offsetKey = 'offset' + capitalize(val);\n props[offsetKey] = {\n type: [String, Number],\n default: null\n };\n return props;\n }, {});\n})();\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n const orderKey = 'order' + capitalize(val);\n props[orderKey] = {\n type: [String, Number],\n default: null\n };\n return props;\n }, {});\n})();\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps)\n};\nfunction breakpointClass(type, prop, val) {\n let className = type;\n if (val == null || val === false) {\n return undefined;\n }\n if (prop) {\n const breakpoint = prop.replace(type, '');\n className += `-${breakpoint}`;\n }\n if (type === 'col') {\n className = 'v-' + className;\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .v-col-md\n return className.toLowerCase();\n }\n // .order-md-6\n className += `-${val}`;\n return className.toLowerCase();\n}\nconst ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch'];\nexport const makeVColProps = propsFactory({\n cols: {\n type: [Boolean, String, Number],\n default: false\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: str => ALIGN_SELF_VALUES.includes(str)\n },\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VCol');\nexport const VCol = genericComponent()({\n name: 'VCol',\n props: makeVColProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const classes = computed(() => {\n const classList = [];\n\n // Loop through `col`, `offset`, `order` breakpoint props\n let type;\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value = props[prop];\n const className = breakpointClass(type, prop, value);\n if (className) classList.push(className);\n });\n }\n const hasColClasses = classList.some(className => className.startsWith('v-col-'));\n classList.push({\n // Default to .v-col if no other col-{bp}-* classes generated nor `cols` specified.\n 'v-col': !hasColClasses || !props.cols,\n [`v-col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf\n });\n return classList;\n });\n return () => h(props.tag, {\n class: [classes.value, props.class],\n style: props.style\n }, slots.default?.());\n }\n});\n//# sourceMappingURL=VCol.mjs.map","// Styles\nimport \"./VGrid.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { breakpoints } from \"../../composables/display.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { capitalize, computed, h } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nconst ALIGNMENT = ['start', 'end', 'center'];\nconst SPACE = ['space-between', 'space-around', 'space-evenly'];\nfunction makeRowProps(prefix, def) {\n return breakpoints.reduce((props, val) => {\n const prefixKey = prefix + capitalize(val);\n props[prefixKey] = def();\n return props;\n }, {});\n}\nconst ALIGN_VALUES = [...ALIGNMENT, 'baseline', 'stretch'];\nconst alignValidator = str => ALIGN_VALUES.includes(str);\nconst alignProps = makeRowProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator\n}));\nconst JUSTIFY_VALUES = [...ALIGNMENT, ...SPACE];\nconst justifyValidator = str => JUSTIFY_VALUES.includes(str);\nconst justifyProps = makeRowProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator\n}));\nconst ALIGN_CONTENT_VALUES = [...ALIGNMENT, ...SPACE, 'stretch'];\nconst alignContentValidator = str => ALIGN_CONTENT_VALUES.includes(str);\nconst alignContentProps = makeRowProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator\n}));\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps)\n};\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content'\n};\nfunction breakpointClass(type, prop, val) {\n let className = classMap[type];\n if (val == null) {\n return undefined;\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '');\n className += `-${breakpoint}`;\n }\n // .align-items-sm-center\n className += `-${val}`;\n return className.toLowerCase();\n}\nexport const makeVRowProps = propsFactory({\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator\n },\n ...alignContentProps,\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VRow');\nexport const VRow = genericComponent()({\n name: 'VRow',\n props: makeVRowProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const classes = computed(() => {\n const classList = [];\n\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type;\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value = props[prop];\n const className = breakpointClass(type, prop, value);\n if (className) classList.push(className);\n });\n }\n classList.push({\n 'v-row--no-gutters': props.noGutters,\n 'v-row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent\n });\n return classList;\n });\n return () => h(props.tag, {\n class: ['v-row', classes.value, props.class],\n style: props.style\n }, slots.default?.());\n }\n});\n//# sourceMappingURL=VRow.mjs.map","// Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\";\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n ...makeDelayProps()\n}, 'VHover');\nexport const VHover = genericComponent()({\n name: 'VHover',\n props: makeVHoverProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isHovering = useProxiedModel(props, 'modelValue');\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => !props.disabled && (isHovering.value = value));\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay\n }\n });\n }\n});\n//# sourceMappingURL=VHover.mjs.map","import { createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\";\n// Styles\nimport \"./VInfiniteScroll.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/index.mjs\"; // Composables\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue';\nimport { convertToUnit, defineComponent, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVInfiniteScrollProps = propsFactory({\n color: String,\n direction: {\n type: String,\n default: 'vertical',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n side: {\n type: String,\n default: 'end',\n validator: v => ['start', 'end', 'both'].includes(v)\n },\n mode: {\n type: String,\n default: 'intersect',\n validator: v => ['intersect', 'manual'].includes(v)\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore'\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty'\n },\n ...makeDimensionProps(),\n ...makeTagProps()\n}, 'VInfiniteScroll');\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n props: {\n side: {\n type: String,\n required: true\n },\n rootMargin: String\n },\n emits: {\n intersect: (side, isIntersecting) => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n watch(isIntersecting, async val => {\n emit('intersect', props.side, val);\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": \"v-infinite-scroll-intersect\",\n \"style\": {\n '--v-infinite-margin-size': props.rootMargin\n },\n \"ref\": intersectionRef\n }, [_createTextVNode(\"\\xA0\")]));\n return {};\n }\n});\nexport const VInfiniteScroll = genericComponent()({\n name: 'VInfiniteScroll',\n props: makeVInfiniteScrollProps(),\n emits: {\n load: options => true\n },\n setup(props, _ref2) {\n let {\n slots,\n emit\n } = _ref2;\n const rootEl = ref();\n const startStatus = shallowRef('ok');\n const endStatus = shallowRef('ok');\n const margin = computed(() => convertToUnit(props.margin));\n const isIntersecting = shallowRef(false);\n function setScrollAmount(amount) {\n if (!rootEl.value) return;\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n rootEl.value[property] = amount;\n }\n function getScrollAmount() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n return rootEl.value[property];\n }\n function getScrollSize() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';\n return rootEl.value[property];\n }\n function getContainerSize() {\n if (!rootEl.value) return 0;\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';\n return rootEl.value[property];\n }\n onMounted(() => {\n if (!rootEl.value) return;\n if (props.side === 'start') {\n setScrollAmount(getScrollSize());\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);\n }\n });\n function setStatus(side, status) {\n if (side === 'start') {\n startStatus.value = status;\n } else if (side === 'end') {\n endStatus.value = status;\n }\n }\n function getStatus(side) {\n return side === 'start' ? startStatus.value : endStatus.value;\n }\n let previousScrollSize = 0;\n function handleIntersect(side, _isIntersecting) {\n isIntersecting.value = _isIntersecting;\n if (isIntersecting.value) {\n intersecting(side);\n }\n }\n function intersecting(side) {\n if (props.mode !== 'manual' && !isIntersecting.value) return;\n const status = getStatus(side);\n if (!rootEl.value || ['empty', 'loading'].includes(status)) return;\n previousScrollSize = getScrollSize();\n setStatus(side, 'loading');\n function done(status) {\n setStatus(side, status);\n nextTick(() => {\n if (status === 'empty' || status === 'error') return;\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());\n }\n if (props.mode !== 'manual') {\n nextTick(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n intersecting(side);\n });\n });\n });\n });\n }\n });\n }\n emit('load', {\n side,\n done\n });\n }\n const {\n t\n } = useLocale();\n function renderSide(side, status) {\n if (props.side !== side && props.side !== 'both') return;\n const onClick = () => intersecting(side);\n const slotProps = {\n side,\n props: {\n onClick,\n color: props.color\n }\n };\n if (status === 'error') return slots.error?.(slotProps);\n if (status === 'empty') return slots.empty?.(slotProps) ?? _createVNode(\"div\", null, [t(props.emptyText)]);\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {\n \"indeterminate\": true,\n \"color\": props.color\n }, null);\n }\n return slots['load-more']?.(slotProps) ?? _createVNode(VBtn, {\n \"variant\": \"outlined\",\n \"color\": props.color,\n \"onClick\": onClick\n }, {\n default: () => [t(props.loadMoreText)]\n });\n }\n return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {\n \"indeterminate\": true,\n \"color\": props.color\n }, null);\n }\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => {\n const Tag = props.tag;\n const hasStartIntersect = props.side === 'start' || props.side === 'both';\n const hasEndIntersect = props.side === 'end' || props.side === 'both';\n const intersectMode = props.mode === 'intersect';\n return _createVNode(Tag, {\n \"ref\": rootEl,\n \"class\": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {\n 'v-infinite-scroll--start': hasStartIntersect,\n 'v-infinite-scroll--end': hasEndIntersect\n }],\n \"style\": dimensionStyles.value\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-infinite-scroll__side\"\n }, [renderSide('start', startStatus.value)]), hasStartIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {\n \"key\": \"start\",\n \"side\": \"start\",\n \"onIntersect\": handleIntersect,\n \"rootMargin\": margin.value\n }, null), slots.default?.(), hasEndIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {\n \"key\": \"end\",\n \"side\": \"end\",\n \"onIntersect\": handleIntersect,\n \"rootMargin\": margin.value\n }, null), _createVNode(\"div\", {\n \"class\": \"v-infinite-scroll__side\"\n }, [renderSide('end', endStatus.value)])]\n });\n });\n }\n});\n//# sourceMappingURL=VInfiniteScroll.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VItemGroup.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');\nexport const makeVItemGroupProps = propsFactory({\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-item--selected'\n }),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VItemGroup');\nexport const VItemGroup = genericComponent()({\n name: 'VItemGroup',\n props: makeVItemGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n isSelected,\n select,\n next,\n prev,\n selected\n } = useGroup(props, VItemGroupSymbol);\n return () => _createVNode(props.tag, {\n \"class\": ['v-item-group', themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value\n })]\n });\n }\n});\n//# sourceMappingURL=VItemGroup.mjs.map","// Composables\nimport { VItemGroupSymbol } from \"./VItemGroup.mjs\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\"; // Utilities\nimport { genericComponent } from \"../../util/index.mjs\";\nexport const VItem = genericComponent()({\n name: 'VItem',\n props: makeGroupItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isSelected,\n select,\n toggle,\n selectedClass,\n value,\n disabled\n } = useGroupItem(props, VItemGroupSymbol);\n return () => slots.default?.({\n isSelected: isSelected.value,\n selectedClass: selectedClass.value,\n select,\n toggle,\n value: value.value,\n disabled: disabled.value\n });\n }\n});\n//# sourceMappingURL=VItem.mjs.map","// Styles\nimport \"./VKbd.css\";\n\n// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VKbd = createSimpleFunctional('v-kbd', 'kbd');\n//# sourceMappingURL=index.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLayout.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { createLayout, makeLayoutProps } from \"../../composables/layout.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLayoutProps = propsFactory({\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLayoutProps()\n}, 'VLayout');\nexport const VLayout = genericComponent()({\n name: 'VLayout',\n props: makeVLayoutProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRef\n } = createLayout(props);\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => _createVNode(\"div\", {\n \"ref\": layoutRef,\n \"class\": [layoutClasses.value, props.class],\n \"style\": [dimensionStyles.value, layoutStyles.value, props.style]\n }, [slots.default?.()]));\n return {\n getLayoutItem,\n items\n };\n }\n});\n//# sourceMappingURL=VLayout.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLayoutItem.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\"; // Types\nexport const makeVLayoutItemProps = propsFactory({\n position: {\n type: String,\n required: true\n },\n size: {\n type: [Number, String],\n default: 300\n },\n modelValue: Boolean,\n ...makeComponentProps(),\n ...makeLayoutItemProps()\n}, 'VLayoutItem');\nexport const VLayoutItem = genericComponent()({\n name: 'VLayoutItem',\n props: makeVLayoutItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'position'),\n elementSize: toRef(props, 'size'),\n layoutSize: toRef(props, 'size'),\n active: toRef(props, 'modelValue'),\n absolute: toRef(props, 'absolute')\n });\n return () => _createVNode(\"div\", {\n \"class\": ['v-layout-item', props.class],\n \"style\": [layoutItemStyles.value, props.style]\n }, [slots.default?.()]);\n }\n});\n//# sourceMappingURL=VLayoutItem.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.mjs\"; // Directives\nimport intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVLazyProps = propsFactory({\n modelValue: Boolean,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined\n })\n },\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: 'fade-transition'\n })\n}, 'VLazy');\nexport const VLazy = genericComponent()({\n name: 'VLazy',\n directives: {\n intersect\n },\n props: makeVLazyProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const isActive = useProxiedModel(props, 'modelValue');\n function onIntersect(isIntersecting) {\n if (isActive.value) return;\n isActive.value = isIntersecting;\n }\n useRender(() => _withDirectives(_createVNode(props.tag, {\n \"class\": ['v-lazy', props.class],\n \"style\": [dimensionStyles.value, props.style]\n }, {\n default: () => [isActive.value && _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [slots.default?.()]\n })]\n }), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect,\n options: props.options\n }, null]]));\n return {};\n }\n});\n//# sourceMappingURL=VLazy.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VListImg = createSimpleFunctional('v-list-img');\n//# sourceMappingURL=VListImg.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVListItemActionProps = propsFactory({\n start: Boolean,\n end: Boolean,\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VListItemAction');\nexport const VListItemAction = genericComponent()({\n name: 'VListItemAction',\n props: makeVListItemActionProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-list-item-action', {\n 'v-list-item-action--start': props.start,\n 'v-list-item-action--end': props.end\n }, props.class],\n \"style\": props.style\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VListItemAction.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVListItemMediaProps = propsFactory({\n start: Boolean,\n end: Boolean,\n ...makeComponentProps(),\n ...makeTagProps()\n}, 'VListItemMedia');\nexport const VListItemMedia = genericComponent()({\n name: 'VListItemMedia',\n props: makeVListItemMediaProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-list-item-media', {\n 'v-list-item-media--start': props.start,\n 'v-list-item-media--end': props.end\n }, props.class],\n \"style\": props.style\n }, slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VListItemMedia.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VLocaleProvider.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVLocaleProviderProps = propsFactory({\n locale: String,\n fallbackLocale: String,\n messages: Object,\n rtl: {\n type: Boolean,\n default: undefined\n },\n ...makeComponentProps()\n}, 'VLocaleProvider');\nexport const VLocaleProvider = genericComponent()({\n name: 'VLocaleProvider',\n props: makeVLocaleProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n rtlClasses\n } = provideLocale(props);\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-locale-provider', rtlClasses.value, props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VLocaleProvider.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VMain.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { useLayout } from \"../../composables/layout.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps({\n tag: 'main'\n })\n}, 'VMain');\nexport const VMain = genericComponent()({\n name: 'VMain',\n props: makeVMainProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n mainStyles\n } = useLayout();\n const {\n ssrBootStyles\n } = useSsrBoot();\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-main', {\n 'v-main--scrollable': props.scrollable\n }, props.class],\n \"style\": [mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style]\n }, {\n default: () => [props.scrollable ? _createVNode(\"div\", {\n \"class\": \"v-main__scroller\"\n }, [slots.default?.()]) : slots.default?.()]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VMain.mjs.map","// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue';\nimport { convertToUnit } from \"../../util/index.mjs\"; // Types\nexport function useSticky(_ref) {\n let {\n rootEl,\n isSticky,\n layoutItemStyles\n } = _ref;\n const isStuck = shallowRef(false);\n const stuckPosition = shallowRef(0);\n const stickyStyles = computed(() => {\n const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;\n return [isSticky.value ? {\n top: 'auto',\n bottom: 'auto',\n height: undefined\n } : undefined, isStuck.value ? {\n [side]: convertToUnit(stuckPosition.value)\n } : {\n top: layoutItemStyles.value.top\n }];\n });\n onMounted(() => {\n watch(isSticky, val => {\n if (val) {\n window.addEventListener('scroll', onScroll, {\n passive: true\n });\n } else {\n window.removeEventListener('scroll', onScroll);\n }\n }, {\n immediate: true\n });\n });\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', onScroll);\n });\n let lastScrollTop = 0;\n function onScroll() {\n const direction = lastScrollTop > window.scrollY ? 'up' : 'down';\n const rect = rootEl.value.getBoundingClientRect();\n const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);\n const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);\n const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;\n const bodyScroll = parseFloat(getComputedStyle(rootEl.value).getPropertyValue('--v-body-scroll-y')) || 0;\n if (rect.height < window.innerHeight - layoutTop) {\n isStuck.value = 'top';\n stuckPosition.value = layoutTop;\n } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {\n stuckPosition.value = window.scrollY + rect.top - bodyScroll;\n isStuck.value = true;\n } else if (direction === 'down' && bottom <= 0) {\n stuckPosition.value = 0;\n isStuck.value = 'bottom';\n } else if (direction === 'up' && top <= 0) {\n if (!bodyScroll) {\n stuckPosition.value = rect.top + top;\n isStuck.value = 'top';\n } else if (isStuck.value !== 'top') {\n stuckPosition.value = -top + bodyScroll + layoutTop;\n isStuck.value = 'top';\n }\n }\n lastScrollTop = window.scrollY;\n }\n return {\n isStuck,\n stickyStyles\n };\n}\n//# sourceMappingURL=sticky.mjs.map","// Utilities\nimport { CircularBuffer } from \"../util/index.mjs\";\nconst HORIZON = 100; // ms\nconst HISTORY = 20; // number of samples to keep\n\n/** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */\nfunction kineticEnergyToVelocity(work) {\n const sqrt2 = 1.41421356237;\n return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;\n}\n\n/**\n * Returns pointer velocity in px/s\n */\nexport function calculateImpulseVelocity(samples) {\n // The input should be in reversed time order (most recent sample at index i=0)\n if (samples.length < 2) {\n // if 0 or 1 points, velocity is zero\n return 0;\n }\n // if (samples[1].t > samples[0].t) {\n // // Algorithm will still work, but not perfectly\n // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')\n // }\n if (samples.length === 2) {\n // if 2 points, basic linear calculation\n if (samples[1].t === samples[0].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)\n return 0;\n }\n return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);\n }\n // Guaranteed to have at least 3 points here\n // start with the oldest sample and go forward in time\n let work = 0;\n for (let i = samples.length - 1; i > 0; i--) {\n if (samples[i].t === samples[i - 1].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)\n continue;\n }\n const vprev = kineticEnergyToVelocity(work); // v[i-1]\n const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]\n work += (vcurr - vprev) * Math.abs(vcurr);\n if (i === samples.length - 1) {\n work *= 0.5;\n }\n }\n return kineticEnergyToVelocity(work) * 1000;\n}\nexport function useVelocity() {\n const touches = {};\n function addMovement(e) {\n Array.from(e.changedTouches).forEach(touch => {\n const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));\n samples.push([e.timeStamp, touch]);\n });\n }\n function endTouch(e) {\n Array.from(e.changedTouches).forEach(touch => {\n delete touches[touch.identifier];\n });\n }\n function getVelocity(id) {\n const samples = touches[id]?.values().reverse();\n if (!samples) {\n throw new Error(`No samples for touch id ${id}`);\n }\n const newest = samples[0];\n const x = [];\n const y = [];\n for (const val of samples) {\n if (newest[0] - val[0] > HORIZON) break;\n x.push({\n t: val[0],\n d: val[1].clientX\n });\n y.push({\n t: val[0],\n d: val[1].clientY\n });\n }\n return {\n x: calculateImpulseVelocity(x),\n y: calculateImpulseVelocity(y),\n get direction() {\n const {\n x,\n y\n } = this;\n const [absX, absY] = [Math.abs(x), Math.abs(y)];\n return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops();\n }\n };\n }\n return {\n addMovement,\n endTouch,\n getVelocity\n };\n}\nfunction oops() {\n throw new Error();\n}\n//# sourceMappingURL=touch.mjs.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { useVelocity } from \"../../composables/touch.mjs\"; // Utilities\nimport { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue';\n\n// Types\n\nexport function useTouch(_ref) {\n let {\n el,\n isActive,\n isTemporary,\n width,\n touchless,\n position\n } = _ref;\n onMounted(() => {\n window.addEventListener('touchstart', onTouchstart, {\n passive: true\n });\n window.addEventListener('touchmove', onTouchmove, {\n passive: false\n });\n window.addEventListener('touchend', onTouchend, {\n passive: true\n });\n });\n onBeforeUnmount(() => {\n window.removeEventListener('touchstart', onTouchstart);\n window.removeEventListener('touchmove', onTouchmove);\n window.removeEventListener('touchend', onTouchend);\n });\n const isHorizontal = computed(() => ['left', 'right'].includes(position.value));\n const {\n addMovement,\n endTouch,\n getVelocity\n } = useVelocity();\n let maybeDragging = false;\n const isDragging = shallowRef(false);\n const dragProgress = shallowRef(0);\n const offset = shallowRef(0);\n let start;\n function getOffset(pos, active) {\n return (position.value === 'left' ? pos : position.value === 'right' ? document.documentElement.clientWidth - pos : position.value === 'top' ? pos : position.value === 'bottom' ? document.documentElement.clientHeight - pos : oops()) - (active ? width.value : 0);\n }\n function getProgress(pos) {\n let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();\n return limit ? Math.max(0, Math.min(1, progress)) : progress;\n }\n function onTouchstart(e) {\n if (touchless.value) return;\n const touchX = e.changedTouches[0].clientX;\n const touchY = e.changedTouches[0].clientY;\n const touchZone = 25;\n const inTouchZone = position.value === 'left' ? touchX < touchZone : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone : position.value === 'top' ? touchY < touchZone : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone : oops();\n const inElement = isActive.value && (position.value === 'left' ? touchX < width.value : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value : position.value === 'top' ? touchY < width.value : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value : oops());\n if (inTouchZone || inElement || isActive.value && isTemporary.value) {\n start = [touchX, touchY];\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value);\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY);\n maybeDragging = offset.value > -20 && offset.value < 80;\n endTouch(e);\n addMovement(e);\n }\n }\n function onTouchmove(e) {\n const touchX = e.changedTouches[0].clientX;\n const touchY = e.changedTouches[0].clientY;\n if (maybeDragging) {\n if (!e.cancelable) {\n maybeDragging = false;\n return;\n }\n const dx = Math.abs(touchX - start[0]);\n const dy = Math.abs(touchY - start[1]);\n const thresholdMet = isHorizontal.value ? dx > dy && dx > 3 : dy > dx && dy > 3;\n if (thresholdMet) {\n isDragging.value = true;\n maybeDragging = false;\n } else if ((isHorizontal.value ? dy : dx) > 3) {\n maybeDragging = false;\n }\n }\n if (!isDragging.value) return;\n e.preventDefault();\n addMovement(e);\n const progress = getProgress(isHorizontal.value ? touchX : touchY, false);\n dragProgress.value = Math.max(0, Math.min(1, progress));\n if (progress > 1) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, true);\n } else if (progress < 0) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, false);\n }\n }\n function onTouchend(e) {\n maybeDragging = false;\n if (!isDragging.value) return;\n addMovement(e);\n isDragging.value = false;\n const velocity = getVelocity(e.changedTouches[0].identifier);\n const vx = Math.abs(velocity.x);\n const vy = Math.abs(velocity.y);\n const thresholdMet = isHorizontal.value ? vx > vy && vx > 400 : vy > vx && vy > 3;\n if (thresholdMet) {\n isActive.value = velocity.direction === ({\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up'\n }[position.value] || oops());\n } else {\n isActive.value = dragProgress.value > 0.5;\n }\n }\n const dragStyles = computed(() => {\n return isDragging.value ? {\n transform: position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))` : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))` : oops(),\n transition: 'none'\n } : undefined;\n });\n useToggleScope(isDragging, () => {\n const transform = el.value?.style.transform ?? null;\n const transition = el.value?.style.transition ?? null;\n watchEffect(() => {\n el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none');\n el.value?.style.setProperty('transition', dragStyles.value?.transition || null);\n });\n onScopeDispose(() => {\n el.value?.style.setProperty('transform', transform);\n el.value?.style.setProperty('transition', transition);\n });\n });\n return {\n isDragging,\n dragProgress,\n dragStyles\n };\n}\nfunction oops() {\n throw new Error();\n}\n//# sourceMappingURL=touch.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VNavigationDrawer.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useSticky } from \"./sticky.mjs\";\nimport { useTouch } from \"./touch.mjs\";\nimport { useRtl } from \"../../composables/index.mjs\";\nimport { makeBorderProps, useBorder } from \"../../composables/border.mjs\";\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDelayProps, useDelay } from \"../../composables/delay.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useRouter } from \"../../composables/router.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\"; // Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, Transition, watch } from 'vue';\nimport { genericComponent, propsFactory, toPhysical, useRender } from \"../../util/index.mjs\"; // Types\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];\nexport const makeVNavigationDrawerProps = propsFactory({\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n permanent: Boolean,\n rail: {\n type: Boolean,\n default: null\n },\n railWidth: {\n type: [Number, String],\n default: 56\n },\n scrim: {\n type: [Boolean, String],\n default: true\n },\n image: String,\n temporary: Boolean,\n persistent: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256\n },\n location: {\n type: String,\n default: 'start',\n validator: value => locations.includes(value)\n },\n sticky: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDelayProps(),\n ...makeDisplayProps({\n mobile: null\n }),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({\n tag: 'nav'\n }),\n ...makeThemeProps()\n}, 'VNavigationDrawer');\nexport const VNavigationDrawer = genericComponent()({\n name: 'VNavigationDrawer',\n props: makeVNavigationDrawerProps(),\n emits: {\n 'update:modelValue': val => true,\n 'update:rail': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n isRtl\n } = useRtl();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n elevationClasses\n } = useElevation(props);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n roundedClasses\n } = useRounded(props);\n const router = useRouter();\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const {\n scopeId\n } = useScopeId();\n const rootEl = ref();\n const isHovering = shallowRef(false);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n isHovering.value = value;\n });\n const width = computed(() => {\n return props.rail && props.expandOnHover && isHovering.value ? Number(props.width) : Number(props.rail ? props.railWidth : props.width);\n });\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value);\n });\n const isPersistent = computed(() => props.persistent);\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));\n const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');\n useToggleScope(() => props.expandOnHover && props.rail != null, () => {\n watch(isHovering, val => emit('update:rail', !val));\n });\n useToggleScope(() => !props.disableResizeWatcher, () => {\n watch(isTemporary, val => !props.permanent && nextTick(() => isActive.value = !val));\n });\n useToggleScope(() => !props.disableRouteWatcher && !!router, () => {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));\n });\n watch(() => props.permanent, val => {\n if (val) isActive.value = true;\n });\n if (props.modelValue == null && !isTemporary.value) {\n isActive.value = props.permanent || !mobile.value;\n }\n const {\n isDragging,\n dragProgress\n } = useTouch({\n el: rootEl,\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location\n });\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;\n return isDragging.value ? size * dragProgress.value : size;\n });\n const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);\n const {\n layoutItemStyles,\n layoutItemScrimStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || isSticky.value && typeof isStuck.value !== 'string')\n });\n const {\n isStuck,\n stickyStyles\n } = useSticky({\n rootEl,\n isSticky,\n layoutItemStyles\n });\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n }));\n const scrimStyles = computed(() => ({\n ...(isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none'\n } : undefined),\n ...layoutItemScrimStyles.value\n }));\n provideDefaults({\n VList: {\n bgColor: 'transparent'\n }\n });\n useRender(() => {\n const hasImage = slots.image || props.image;\n return _createVNode(_Fragment, null, [_createVNode(props.tag, _mergeProps({\n \"ref\": rootEl,\n \"onMouseenter\": runOpenDelay,\n \"onMouseleave\": runCloseDelay,\n \"class\": ['v-navigation-drawer', `v-navigation-drawer--${location.value}`, {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--persistent': isPersistent.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value\n }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, ['top', 'bottom'].includes(location.value) ? {\n height: 'auto'\n } : {}]\n }, scopeId, attrs), {\n default: () => [hasImage && _createVNode(\"div\", {\n \"key\": \"image\",\n \"class\": \"v-navigation-drawer__img\"\n }, [!slots.image ? _createVNode(VImg, {\n \"key\": \"image-img\",\n \"alt\": \"\",\n \"cover\": true,\n \"height\": \"inherit\",\n \"src\": props.image\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"image-defaults\",\n \"disabled\": !props.image,\n \"defaults\": {\n VImg: {\n alt: '',\n cover: true,\n height: 'inherit',\n src: props.image\n }\n }\n }, slots.image)]), slots.prepend && _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__prepend\"\n }, [slots.prepend?.()]), _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__content\"\n }, [slots.default?.()]), slots.append && _createVNode(\"div\", {\n \"class\": \"v-navigation-drawer__append\"\n }, [slots.append?.()])]\n }), _createVNode(Transition, {\n \"name\": \"fade-transition\"\n }, {\n default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && _createVNode(\"div\", _mergeProps({\n \"class\": ['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value],\n \"style\": [scrimStyles.value, scrimColor.backgroundColorStyles.value],\n \"onClick\": () => {\n if (isPersistent.value) return;\n isActive.value = false;\n }\n }, scopeId), null)]\n })]);\n });\n return {\n isStuck\n };\n }\n});\n//# sourceMappingURL=VNavigationDrawer.mjs.map","// Composables\nimport { useHydration } from \"../../composables/hydration.mjs\"; // Utilities\nimport { defineComponent } from \"../../util/index.mjs\";\nexport const VNoSsr = defineComponent({\n name: 'VNoSsr',\n setup(_, _ref) {\n let {\n slots\n } = _ref;\n const show = useHydration();\n return () => show.value && slots.default?.();\n }\n});\n//# sourceMappingURL=VNoSsr.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VOtpInput.css\";\n\n// Components\nimport { makeVFieldProps, VField } from \"../VField/VField.mjs\";\nimport { VOverlay } from \"../VOverlay/VOverlay.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/VProgressCircular.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp'\n },\n length: {\n type: [Number, String],\n default: 6\n },\n modelValue: {\n type: [Number, String],\n default: undefined\n },\n placeholder: String,\n type: {\n type: String,\n default: 'number'\n },\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined'\n }), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'rounded', 'style', 'theme', 'variant'])\n}, 'VOtpInput');\nexport const VOtpInput = genericComponent()({\n name: 'VOtpInput',\n props: makeVOtpInputProps(),\n emits: {\n finish: val => true,\n 'update:focused': val => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const model = useProxiedModel(props, 'modelValue', '', val => val == null ? [] : String(val).split(''), val => val.join(''));\n const {\n t\n } = useLocale();\n const length = computed(() => Number(props.length));\n const fields = computed(() => Array(length.value).fill(0));\n const focusIndex = ref(-1);\n const contentRef = ref();\n const inputRef = ref([]);\n const current = computed(() => inputRef.value[focusIndex.value]);\n function onInput() {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = '';\n return;\n }\n const array = model.value.slice();\n const value = current.value.value;\n array[focusIndex.value] = value;\n let target = null;\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1;\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next';\n }\n model.value = array;\n if (target) focusChild(contentRef.value, target);\n }\n function onKeydown(e) {\n const array = model.value.slice();\n const index = focusIndex.value;\n let target = null;\n if (!['ArrowLeft', 'ArrowRight', 'Backspace', 'Delete'].includes(e.key)) return;\n e.preventDefault();\n if (e.key === 'ArrowLeft') {\n target = 'prev';\n } else if (e.key === 'ArrowRight') {\n target = 'next';\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = '';\n model.value = array;\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev';\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select();\n });\n }\n }\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value, target);\n }\n });\n }\n function onPaste(index, e) {\n e.preventDefault();\n e.stopPropagation();\n const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';\n if (isValidNumber(clipboardText)) return;\n model.value = clipboardText.split('');\n inputRef.value?.[index].blur();\n }\n function reset() {\n model.value = [];\n }\n function onFocus(e, index) {\n focus();\n focusIndex.value = index;\n }\n function onBlur() {\n blur();\n focusIndex.value = -1;\n }\n function isValidNumber(value) {\n return props.type === 'number' && /[^0-9]/g.test(value);\n }\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant)\n }\n }, {\n scoped: true\n });\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''));\n }, {\n deep: true\n });\n watch(focusIndex, val => {\n if (val < 0) return;\n nextTick(() => {\n inputRef.value[val]?.select();\n });\n });\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-otp-input', {\n 'v-otp-input--divided': !!props.divider\n }, props.class],\n \"style\": [props.style]\n }, rootAttrs), [_createVNode(\"div\", {\n \"ref\": contentRef,\n \"class\": \"v-otp-input__content\",\n \"style\": [dimensionStyles.value]\n }, [fields.value.map((_, i) => _createVNode(_Fragment, null, [props.divider && i !== 0 && _createVNode(\"span\", {\n \"class\": \"v-otp-input__divider\"\n }, [props.divider]), _createVNode(VField, {\n \"focused\": isFocused.value && props.focusAll || focusIndex.value === i,\n \"key\": i\n }, {\n ...slots,\n loader: undefined,\n default: () => {\n return _createVNode(\"input\", {\n \"ref\": val => inputRef.value[i] = val,\n \"aria-label\": t(props.label, i + 1),\n \"autofocus\": i === 0 && props.autofocus,\n \"autocomplete\": \"one-time-code\",\n \"class\": ['v-otp-input__field'],\n \"disabled\": props.disabled,\n \"inputmode\": props.type === 'number' ? 'numeric' : 'text',\n \"min\": props.type === 'number' ? 0 : undefined,\n \"maxlength\": \"1\",\n \"placeholder\": props.placeholder,\n \"type\": props.type === 'number' ? 'text' : props.type,\n \"value\": model.value[i],\n \"onInput\": onInput,\n \"onFocus\": e => onFocus(e, i),\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"onPaste\": event => onPaste(i, event)\n }, null);\n }\n })])), _createVNode(\"input\", _mergeProps({\n \"class\": \"v-otp-input-input\",\n \"type\": \"hidden\"\n }, inputAttrs, {\n \"value\": model.value.join('')\n }), null), _createVNode(VOverlay, {\n \"contained\": true,\n \"content-class\": \"v-otp-input__loader\",\n \"model-value\": !!props.loading,\n \"persistent\": true\n }, {\n default: () => [slots.loader?.() ?? _createVNode(VProgressCircular, {\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true,\n \"size\": \"24\",\n \"width\": \"2\"\n }, null)]\n }), slots.default?.()])]);\n });\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur());\n },\n focus: () => {\n inputRef.value?.[0].focus();\n },\n reset,\n isFocused\n };\n }\n});\n//# sourceMappingURL=VOtpInput.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VParallax.css\";\n\n// Components\nimport { VImg } from \"../VImg/index.mjs\"; // Composables\nimport { useDisplay } from \"../../composables/index.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.mjs\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.mjs\"; // Utilities\nimport { computed, onBeforeUnmount, ref, watch, watchEffect } from 'vue';\nimport { clamp, genericComponent, getScrollParent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nfunction floor(val) {\n return Math.floor(Math.abs(val)) * Math.sign(val);\n}\nexport const makeVParallaxProps = propsFactory({\n scale: {\n type: [Number, String],\n default: 0.5\n },\n ...makeComponentProps()\n}, 'VParallax');\nexport const VParallax = genericComponent()({\n name: 'VParallax',\n props: makeVParallaxProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n const {\n height: displayHeight\n } = useDisplay();\n const root = ref();\n watchEffect(() => {\n intersectionRef.value = resizeRef.value = root.value?.$el;\n });\n let scrollParent;\n watch(isIntersecting, val => {\n if (val) {\n scrollParent = getScrollParent(intersectionRef.value);\n scrollParent = scrollParent === document.scrollingElement ? document : scrollParent;\n scrollParent.addEventListener('scroll', onScroll, {\n passive: true\n });\n onScroll();\n } else {\n scrollParent.removeEventListener('scroll', onScroll);\n }\n });\n onBeforeUnmount(() => {\n scrollParent?.removeEventListener('scroll', onScroll);\n });\n watch(displayHeight, onScroll);\n watch(() => contentRect.value?.height, onScroll);\n const scale = computed(() => {\n return 1 - clamp(+props.scale);\n });\n let frame = -1;\n function onScroll() {\n if (!isIntersecting.value) return;\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n const el = (root.value?.$el).querySelector('.v-img__img');\n if (!el) return;\n const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;\n const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;\n const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;\n const height = contentRect.value.height;\n const center = top + (height - scrollHeight) / 2;\n const translate = floor((scrollPos - center) * scale.value);\n const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height);\n el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`);\n });\n }\n useRender(() => _createVNode(VImg, {\n \"class\": ['v-parallax', {\n 'v-parallax--active': isIntersecting.value\n }, props.class],\n \"style\": props.style,\n \"ref\": root,\n \"cover\": true,\n \"onLoadstart\": onScroll,\n \"onLoad\": onScroll\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VParallax.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRadioProps = propsFactory({\n ...makeVSelectionControlProps({\n falseIcon: '$radioOff',\n trueIcon: '$radioOn'\n })\n}, 'VRadio');\nexport const VRadio = genericComponent()({\n name: 'VRadio',\n props: makeVRadioProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VSelectionControl, _mergeProps(controlProps, {\n \"class\": ['v-radio', props.class],\n \"style\": props.style,\n \"type\": \"radio\"\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VRadio.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VRadioGroup.css\";\n\n// Components\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { VSelectionControl } from \"../VSelectionControl/index.mjs\";\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from \"../VSelectionControlGroup/VSelectionControlGroup.mjs\"; // Composables\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRadioGroupProps = propsFactory({\n height: {\n type: [Number, String],\n default: 'auto'\n },\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n trueIcon: {\n type: IconValue,\n default: '$radioOn'\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff'\n },\n type: {\n type: String,\n default: 'radio'\n }\n}, 'VRadioGroup');\nexport const VRadioGroup = genericComponent()({\n name: 'VRadioGroup',\n inheritAttrs: false,\n props: makeVRadioGroupProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `radio-group-${uid}`);\n const model = useProxiedModel(props, 'modelValue');\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n const label = slots.label ? slots.label({\n label: props.label,\n props: {\n for: id.value\n }\n }) : props.label;\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-radio-group', props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly\n } = _ref2;\n return _createVNode(_Fragment, null, [label && _createVNode(VLabel, {\n \"id\": id.value\n }, {\n default: () => [label]\n }), _createVNode(VSelectionControlGroup, _mergeProps(controlProps, {\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"defaultsTarget\": \"VRadio\",\n \"trueIcon\": props.trueIcon,\n \"falseIcon\": props.falseIcon,\n \"type\": props.type,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"aria-labelledby\": label ? id.value : undefined,\n \"multiple\": false\n }, controlAttrs, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event\n }), slots)]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRadioGroup.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"../VSlider/VSlider.css\";\n\n// Components\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VLabel } from \"../VLabel/index.mjs\";\nimport { getOffset, makeSliderProps, useSlider, useSteps } from \"../VSlider/slider.mjs\";\nimport { VSliderThumb } from \"../VSlider/VSliderThumb.mjs\";\nimport { VSliderTrack } from \"../VSlider/VSliderTrack.mjs\"; // Composables\nimport { makeFocusProps, useFocus } from \"../../composables/focus.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n strict: Boolean,\n modelValue: {\n type: Array,\n default: () => [0, 0]\n }\n}, 'VRangeSlider');\nexport const VRangeSlider = genericComponent()({\n name: 'VRangeSlider',\n props: makeVRangeSliderProps(),\n emits: {\n 'update:focused': value => true,\n 'update:modelValue': value => true,\n end: value => true,\n start: value => true\n },\n setup(props, _ref) {\n let {\n slots,\n emit\n } = _ref;\n const startThumbRef = ref();\n const stopThumbRef = ref();\n const inputRef = ref();\n const {\n rtlClasses\n } = useRtl();\n function getActiveThumb(e) {\n if (!startThumbRef.value || !stopThumbRef.value) return;\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction);\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction);\n const a = Math.abs(startOffset);\n const b = Math.abs(stopOffset);\n return a < b || a === b && startOffset < 0 ? startThumbRef.value.$el : stopThumbRef.value.$el;\n }\n const steps = useSteps(props);\n const model = useProxiedModel(props, 'modelValue', undefined, arr => {\n if (!arr?.length) return [0, 0];\n return arr.map(value => steps.roundValue(value));\n });\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n readonly\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value);\n },\n onSliderEnd: _ref2 => {\n let {\n value\n } = _ref2;\n const newValue = activeThumbRef.value === startThumbRef.value?.$el ? [value, model.value[1]] : [model.value[0], value];\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue;\n }\n emit('end', model.value);\n },\n onSliderMove: _ref3 => {\n let {\n value\n } = _ref3;\n const [start, stop] = model.value;\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;\n activeThumbRef.value?.focus();\n }\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop];\n } else {\n model.value = [start, Math.max(start, value)];\n }\n },\n getActiveThumb\n });\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const trackStart = computed(() => position(model.value[0]));\n const trackStop = computed(() => position(model.value[1]));\n useRender(() => {\n const inputProps = VInput.filterProps(props);\n const hasPrepend = !!(props.label || slots.label || slots.prepend);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-slider', 'v-range-slider', {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled\n }, rtlClasses.value, props.class],\n \"style\": props.style,\n \"ref\": inputRef\n }, inputProps, {\n \"focused\": isFocused.value\n }), {\n ...slots,\n prepend: hasPrepend ? slotProps => _createVNode(_Fragment, null, [slots.label?.(slotProps) ?? (props.label ? _createVNode(VLabel, {\n \"class\": \"v-slider__label\",\n \"text\": props.label\n }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,\n default: _ref4 => {\n let {\n id,\n messagesId\n } = _ref4;\n return _createVNode(\"div\", {\n \"class\": \"v-slider__container\",\n \"onMousedown\": !readonly.value ? onSliderMousedown : undefined,\n \"onTouchstartPassive\": !readonly.value ? onSliderTouchstart : undefined\n }, [_createVNode(\"input\", {\n \"id\": `${id.value}_start`,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value[0]\n }, null), _createVNode(\"input\", {\n \"id\": `${id.value}_stop`,\n \"name\": props.name || id.value,\n \"disabled\": !!props.disabled,\n \"readonly\": !!props.readonly,\n \"tabindex\": \"-1\",\n \"value\": model.value[1]\n }, null), _createVNode(VSliderTrack, {\n \"ref\": trackContainerRef,\n \"start\": trackStart.value,\n \"stop\": trackStop.value\n }, {\n 'tick-label': slots['tick-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": startThumbRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused && activeThumbRef.value === startThumbRef.value?.$el,\n \"modelValue\": model.value[0],\n \"onUpdate:modelValue\": v => model.value = [v, model.value[1]],\n \"onFocus\": e => {\n focus();\n activeThumbRef.value = startThumbRef.value?.$el;\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (model.value[0] === model.value[1] && model.value[1] === min.value && e.relatedTarget !== stopThumbRef.value?.$el) {\n startThumbRef.value?.$el.blur();\n stopThumbRef.value?.$el.focus();\n }\n },\n \"onBlur\": () => {\n blur();\n activeThumbRef.value = undefined;\n },\n \"min\": min.value,\n \"max\": model.value[1],\n \"position\": trackStart.value,\n \"ripple\": props.ripple\n }, {\n 'thumb-label': slots['thumb-label']\n }), _createVNode(VSliderThumb, {\n \"ref\": stopThumbRef,\n \"aria-describedby\": messagesId.value,\n \"focused\": isFocused && activeThumbRef.value === stopThumbRef.value?.$el,\n \"modelValue\": model.value[1],\n \"onUpdate:modelValue\": v => model.value = [model.value[0], v],\n \"onFocus\": e => {\n focus();\n activeThumbRef.value = stopThumbRef.value?.$el;\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (model.value[0] === model.value[1] && model.value[0] === max.value && e.relatedTarget !== startThumbRef.value?.$el) {\n stopThumbRef.value?.$el.blur();\n startThumbRef.value?.$el.focus();\n }\n },\n \"onBlur\": () => {\n blur();\n activeThumbRef.value = undefined;\n },\n \"min\": model.value[0],\n \"max\": max.value,\n \"position\": trackStop.value,\n \"ripple\": props.ripple\n }, {\n 'thumb-label': slots['thumb-label']\n })]);\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRangeSlider.mjs.map","import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VRating.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDensityProps } from \"../../composables/density.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, shallowRef } from 'vue';\nimport { clamp, createRange, genericComponent, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVRatingProps = propsFactory({\n name: String,\n itemAriaLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.item'\n },\n activeColor: String,\n color: String,\n clearable: Boolean,\n disabled: Boolean,\n emptyIcon: {\n type: IconValue,\n default: '$ratingEmpty'\n },\n fullIcon: {\n type: IconValue,\n default: '$ratingFull'\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5\n },\n readonly: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0\n },\n itemLabels: Array,\n itemLabelPosition: {\n type: String,\n default: 'top',\n validator: v => ['top', 'bottom'].includes(v)\n },\n ripple: Boolean,\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VRating');\nexport const VRating = genericComponent()({\n name: 'VRating',\n props: makeVRatingProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const {\n themeClasses\n } = provideTheme(props);\n const rating = useProxiedModel(props, 'modelValue');\n const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length));\n const range = computed(() => createRange(Number(props.length), 1));\n const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));\n const hoverIndex = shallowRef(-1);\n const itemState = computed(() => increments.value.map(value => {\n const isHovering = props.hover && hoverIndex.value > -1;\n const isFilled = normalizedValue.value >= value;\n const isHovered = hoverIndex.value >= value;\n const isFullIcon = isHovering ? isHovered : isFilled;\n const icon = isFullIcon ? props.fullIcon : props.emptyIcon;\n const activeColor = props.activeColor ?? props.color;\n const color = isFilled || isHovered ? activeColor : props.color;\n return {\n isFilled,\n isHovered,\n icon,\n color\n };\n }));\n const eventState = computed(() => [0, ...increments.value].map(value => {\n function onMouseenter() {\n hoverIndex.value = value;\n }\n function onMouseleave() {\n hoverIndex.value = -1;\n }\n function onClick() {\n if (props.disabled || props.readonly) return;\n rating.value = normalizedValue.value === value && props.clearable ? 0 : value;\n }\n return {\n onMouseenter: props.hover ? onMouseenter : undefined,\n onMouseleave: props.hover ? onMouseleave : undefined,\n onClick\n };\n }));\n const name = computed(() => props.name ?? `v-rating-${getUid()}`);\n function VRatingItem(_ref2) {\n let {\n value,\n index,\n showStar = true\n } = _ref2;\n const {\n onMouseenter,\n onMouseleave,\n onClick\n } = eventState.value[index + 1];\n const id = `${name.value}-${String(value).replace('.', '-')}`;\n const btnProps = {\n color: itemState.value[index]?.color,\n density: props.density,\n disabled: props.disabled,\n icon: itemState.value[index]?.icon,\n ripple: props.ripple,\n size: props.size,\n variant: 'plain'\n };\n return _createVNode(_Fragment, null, [_createVNode(\"label\", {\n \"for\": id,\n \"class\": {\n 'v-rating__item--half': props.halfIncrements && value % 1 > 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0\n },\n \"onMouseenter\": onMouseenter,\n \"onMouseleave\": onMouseleave,\n \"onClick\": onClick\n }, [_createVNode(\"span\", {\n \"class\": \"v-rating__hidden\"\n }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({\n ...itemState.value[index],\n props: btnProps,\n value,\n index,\n rating: normalizedValue.value\n }) : _createVNode(VBtn, _mergeProps({\n \"aria-label\": t(props.itemAriaLabel, value, props.length)\n }, btnProps), null)]), _createVNode(\"input\", {\n \"class\": \"v-rating__hidden\",\n \"name\": name.value,\n \"id\": id,\n \"type\": \"radio\",\n \"value\": value,\n \"checked\": normalizedValue.value === value,\n \"tabindex\": -1,\n \"readonly\": props.readonly,\n \"disabled\": props.disabled\n }, null)]);\n }\n function createLabel(labelProps) {\n if (slots['item-label']) return slots['item-label'](labelProps);\n if (labelProps.label) return _createVNode(\"span\", null, [labelProps.label]);\n return _createVNode(\"span\", null, [_createTextVNode(\"\\xA0\")]);\n }\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label'];\n return _createVNode(props.tag, {\n \"class\": ['v-rating', {\n 'v-rating--hover': props.hover,\n 'v-rating--readonly': props.readonly\n }, themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [_createVNode(VRatingItem, {\n \"value\": 0,\n \"index\": -1,\n \"showStar\": false\n }, null), range.value.map((value, i) => _createVNode(\"div\", {\n \"class\": \"v-rating__wrapper\"\n }, [hasLabels && props.itemLabelPosition === 'top' ? createLabel({\n value,\n index: i,\n label: props.itemLabels?.[i]\n }) : undefined, _createVNode(\"div\", {\n \"class\": \"v-rating__item\"\n }, [props.halfIncrements ? _createVNode(_Fragment, null, [_createVNode(VRatingItem, {\n \"value\": value - 0.5,\n \"index\": i * 2\n }, null), _createVNode(VRatingItem, {\n \"value\": value,\n \"index\": i * 2 + 1\n }, null)]) : _createVNode(VRatingItem, {\n \"value\": value,\n \"index\": i\n }, null)]), hasLabels && props.itemLabelPosition === 'bottom' ? createLabel({\n value,\n index: i,\n label: props.itemLabels?.[i]\n }) : undefined]))]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VRating.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSkeletonLoader.css\";\n\n// Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { useLocale } from \"../../composables/locale.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender, wrapInArray } from \"../../util/index.mjs\"; // Types\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text'\n};\nfunction genBone(type) {\n let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return _createVNode(\"div\", {\n \"class\": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]\n }, [children]);\n}\nfunction genBones(bone) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@');\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({\n length\n }).map(() => genStructure(type));\n}\nfunction genStructure(type) {\n let children = [];\n if (!type) return children;\n\n // TODO: figure out a better way to type this\n const bone = rootTypes[type];\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type);\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type);\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone);\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone);\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone));\n return [genBone(type, children)];\n}\nfunction mapBones(bones) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure);\n}\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading'\n },\n type: {\n type: [String, Array],\n default: 'ossein'\n },\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps()\n}, 'VSkeletonLoader');\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n props: makeVSkeletonLoaderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n themeClasses\n } = provideTheme(props);\n const {\n t\n } = useLocale();\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')));\n useRender(() => {\n const isLoading = !slots.default || props.loading;\n const loadingProps = props.boilerplate || !isLoading ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert'\n };\n return _createVNode(\"div\", _mergeProps({\n \"class\": ['v-skeleton-loader', {\n 'v-skeleton-loader--boilerplate': props.boilerplate\n }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],\n \"style\": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]\n }, loadingProps), [isLoading ? items.value : slots.default?.()]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VSkeletonLoader.mjs.map","// Composables\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\"; // Utilities\nimport { VSlideGroupSymbol } from \"./VSlideGroup.mjs\";\nimport { genericComponent } from \"../../util/index.mjs\"; // Types\nexport const VSlideGroupItem = genericComponent()({\n name: 'VSlideGroupItem',\n props: makeGroupItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const slideGroupItem = useGroupItem(props, VSlideGroupSymbol);\n return () => slots.default?.({\n isSelected: slideGroupItem.isSelected.value,\n select: slideGroupItem.select,\n toggle: slideGroupItem.toggle,\n selectedClass: slideGroupItem.selectedClass.value\n });\n }\n});\n//# sourceMappingURL=VSlideGroupItem.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSnackbar.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VOverlay } from \"../VOverlay/index.mjs\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.mjs\";\nimport { VProgressLinear } from \"../VProgressLinear/index.mjs\"; // Composables\nimport { useLayout } from \"../../composables/index.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { VuetifyLayoutKey } from \"../../composables/layout.mjs\";\nimport { makeLocationProps } from \"../../composables/location.mjs\";\nimport { makePositionProps, usePosition } from \"../../composables/position.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\";\nimport { useToggleScope } from \"../../composables/toggleScope.mjs\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.mjs\"; // Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { genericComponent, omit, propsFactory, refElement, useRender } from \"../../util/index.mjs\"; // Types\nfunction useCountdown(milliseconds) {\n const time = shallowRef(milliseconds());\n let timer = -1;\n function clear() {\n clearInterval(timer);\n }\n function reset() {\n clear();\n nextTick(() => time.value = milliseconds());\n }\n function start(el) {\n const style = el ? getComputedStyle(el) : {\n transitionDuration: 0.2\n };\n const interval = parseFloat(style.transitionDuration) * 1000 || 200;\n clear();\n if (time.value <= 0) return;\n const startTime = performance.now();\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval;\n time.value = Math.max(milliseconds() - elapsed, 0);\n if (time.value <= 0) clear();\n }, interval);\n }\n onScopeDispose(clear);\n return {\n clear,\n time,\n start,\n reset\n };\n}\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000\n },\n vertical: Boolean,\n ...makeLocationProps({\n location: 'bottom'\n }),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition'\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy'])\n}, 'VSnackbar');\nexport const VSnackbar = genericComponent()({\n name: 'VSnackbar',\n props: makeVSnackbarProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n positionClasses\n } = usePosition(props);\n const {\n scopeId\n } = useScopeId();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(props);\n const {\n roundedClasses\n } = useRounded(props);\n const countdown = useCountdown(() => Number(props.timeout));\n const overlay = ref();\n const timerRef = ref();\n const isHovering = shallowRef(false);\n const startY = shallowRef(0);\n const mainStyles = ref();\n const hasLayout = inject(VuetifyLayoutKey, undefined);\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout();\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value;\n });\n });\n watch(isActive, startTimeout);\n watch(() => props.timeout, startTimeout);\n onMounted(() => {\n if (isActive.value) startTimeout();\n });\n let activeTimeout = -1;\n function startTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n const timeout = Number(props.timeout);\n if (!isActive.value || timeout === -1) return;\n const element = refElement(timerRef.value);\n countdown.start(element);\n activeTimeout = window.setTimeout(() => {\n isActive.value = false;\n }, timeout);\n }\n function clearTimeout() {\n countdown.reset();\n window.clearTimeout(activeTimeout);\n }\n function onPointerenter() {\n isHovering.value = true;\n clearTimeout();\n }\n function onPointerleave() {\n isHovering.value = false;\n startTimeout();\n }\n function onTouchstart(event) {\n startY.value = event.touches[0].clientY;\n }\n function onTouchend(event) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false;\n }\n }\n function onAfterLeave() {\n if (isHovering.value) onPointerleave();\n }\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true;\n return acc;\n }, {});\n });\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n const hasContent = !!(slots.default || slots.text || props.text);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-snackbar', {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical\n }, locationClasses.value, positionClasses.value, props.class],\n \"style\": [mainStyles.value, props.style]\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"contentProps\": mergeProps({\n class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],\n style: [colorStyles.value],\n onPointerenter,\n onPointerleave\n }, overlayProps.contentProps),\n \"persistent\": true,\n \"noClickAnimation\": true,\n \"scrim\": false,\n \"scrollStrategy\": \"none\",\n \"_disableGlobalStack\": true,\n \"onTouchstartPassive\": onTouchstart,\n \"onTouchend\": onTouchend,\n \"onAfterLeave\": onAfterLeave\n }, scopeId), {\n default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && _createVNode(\"div\", {\n \"key\": \"timer\",\n \"class\": \"v-snackbar__timer\"\n }, [_createVNode(VProgressLinear, {\n \"ref\": timerRef,\n \"color\": typeof props.timer === 'string' ? props.timer : 'info',\n \"max\": props.timeout,\n \"model-value\": countdown.time.value\n }, null)]), hasContent && _createVNode(\"div\", {\n \"key\": \"content\",\n \"class\": \"v-snackbar__content\",\n \"role\": \"status\",\n \"aria-live\": \"polite\"\n }, [slots.text?.() ?? props.text, slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-snackbar__actions\"\n }, [slots.actions({\n isActive\n })])]\n })],\n activator: slots.activator\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VSnackbar.mjs.map","// Utilities\nimport { propsFactory } from \"../../../util/index.mjs\"; // Types\nexport const makeLineProps = propsFactory({\n autoDraw: Boolean,\n autoDrawDuration: [Number, String],\n autoDrawEasing: {\n type: String,\n default: 'ease'\n },\n color: String,\n gradient: {\n type: Array,\n default: () => []\n },\n gradientDirection: {\n type: String,\n validator: val => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top'\n },\n height: {\n type: [String, Number],\n default: 75\n },\n labels: {\n type: Array,\n default: () => []\n },\n labelSize: {\n type: [Number, String],\n default: 7\n },\n lineWidth: {\n type: [String, Number],\n default: 4\n },\n id: String,\n itemValue: {\n type: String,\n default: 'value'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n min: [String, Number],\n max: [String, Number],\n padding: {\n type: [String, Number],\n default: 8\n },\n showLabels: Boolean,\n smooth: Boolean,\n width: {\n type: [Number, String],\n default: 300\n }\n}, 'Line');\n//# sourceMappingURL=line.mjs.map","import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { computed } from 'vue';\nimport { makeLineProps } from \"./util/line.mjs\";\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVBarlineProps = propsFactory({\n autoLineWidth: Boolean,\n ...makeLineProps()\n}, 'VBarline');\nexport const VBarline = genericComponent()({\n name: 'VBarline',\n props: makeVBarlineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `barline-${uid}`);\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || 500);\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const lineWidth = computed(() => parseFloat(props.lineWidth) || 4);\n const totalWidth = computed(() => Math.max(props.modelValue.length * lineWidth.value, Number(props.width)));\n const boundary = computed(() => {\n return {\n minX: 0,\n maxX: totalWidth.value,\n minY: 0,\n maxY: parseInt(props.height, 10)\n };\n });\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));\n function genBars(values, boundary) {\n const {\n minX,\n maxX,\n minY,\n maxY\n } = boundary;\n const totalValues = values.length;\n let maxValue = props.max != null ? Number(props.max) : Math.max(...values);\n let minValue = props.min != null ? Number(props.min) : Math.min(...values);\n if (minValue > 0 && props.min == null) minValue = 0;\n if (maxValue < 0 && props.max == null) maxValue = 0;\n const gridX = maxX / totalValues;\n const gridY = (maxY - minY) / (maxValue - minValue || 1);\n const horizonY = maxY - Math.abs(minValue * gridY);\n return values.map((value, index) => {\n const height = Math.abs(gridY * value);\n return {\n x: minX + index * gridX,\n y: horizonY - height + +(value < 0) * height,\n height,\n value\n };\n });\n }\n const parsedLabels = computed(() => {\n const labels = [];\n const points = genBars(items.value, boundary.value);\n const len = points.length;\n for (let i = 0; labels.length < len; i++) {\n const item = points[i];\n let value = props.labels[i];\n if (!value) {\n value = typeof item === 'object' ? item.value : item;\n }\n labels.push({\n x: item.x,\n value: String(value)\n });\n }\n return labels;\n });\n const bars = computed(() => genBars(items.value, boundary.value));\n const offsetX = computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();\n return _createVNode(\"svg\", {\n \"display\": \"block\"\n }, [_createVNode(\"defs\", null, [_createVNode(\"linearGradient\", {\n \"id\": id.value,\n \"gradientUnits\": \"userSpaceOnUse\",\n \"x1\": props.gradientDirection === 'left' ? '100%' : '0',\n \"y1\": props.gradientDirection === 'top' ? '100%' : '0',\n \"x2\": props.gradientDirection === 'right' ? '100%' : '0',\n \"y2\": props.gradientDirection === 'bottom' ? '100%' : '0'\n }, [gradientData.map((color, index) => _createVNode(\"stop\", {\n \"offset\": index / Math.max(gradientData.length - 1, 1),\n \"stop-color\": color || 'currentColor'\n }, null))])]), _createVNode(\"clipPath\", {\n \"id\": `${id.value}-clip`\n }, [bars.value.map(item => _createVNode(\"rect\", {\n \"x\": item.x + offsetX.value,\n \"y\": item.y,\n \"width\": lineWidth.value,\n \"height\": item.height,\n \"rx\": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0,\n \"ry\": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0\n }, [props.autoDraw && _createVNode(_Fragment, null, [_createVNode(\"animate\", {\n \"attributeName\": \"y\",\n \"from\": item.y + item.height,\n \"to\": item.y,\n \"dur\": `${autoDrawDuration.value}ms`,\n \"fill\": \"freeze\"\n }, null), _createVNode(\"animate\", {\n \"attributeName\": \"height\",\n \"from\": \"0\",\n \"to\": item.height,\n \"dur\": `${autoDrawDuration.value}ms`,\n \"fill\": \"freeze\"\n }, null)])]))]), hasLabels.value && _createVNode(\"g\", {\n \"key\": \"labels\",\n \"style\": {\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor'\n }\n }, [parsedLabels.value.map((item, i) => _createVNode(\"text\", {\n \"x\": item.x + offsetX.value + lineWidth.value / 2,\n \"y\": parseInt(props.height, 10) - 2 + (parseInt(props.labelSize, 10) || 7 * 0.75),\n \"font-size\": Number(props.labelSize) || 7\n }, [slots.label?.({\n index: i,\n value: item.value\n }) ?? item.value]))]), _createVNode(\"g\", {\n \"clip-path\": `url(#${id.value}-clip)`,\n \"fill\": `url(#${id.value})`\n }, [_createVNode(\"rect\", {\n \"x\": 0,\n \"y\": 0,\n \"width\": Math.max(props.modelValue.length * lineWidth.value, Number(props.width)),\n \"height\": props.height\n }, null)])]);\n });\n }\n});\n//# sourceMappingURL=VBarline.mjs.map","// @ts-nocheck\n/* eslint-disable */\n\n// import { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath(points, radius) {\n let fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 75;\n if (points.length === 0) return '';\n const start = points.shift();\n const end = points[points.length - 1];\n return (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) + points.map((point, index) => {\n const next = points[index + 1];\n const prev = points[index - 1] || start;\n const isCollinear = next && checkCollinear(next, point, prev);\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`;\n }\n const threshold = Math.min(getDistance(prev, point), getDistance(next, point));\n const isTooCloseForRadius = threshold / 2 < radius;\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;\n const before = moveTo(prev, point, radiusForPoint);\n const after = moveTo(next, point, radiusForPoint);\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`;\n }).join('') + (fill ? `L${end.x} ${height - start.x + 2} Z` : '');\n}\nfunction int(value) {\n return parseInt(value, 10);\n}\n\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nexport function checkCollinear(p0, p1, p2) {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);\n}\nexport function getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nexport function moveTo(to, from, radius) {\n const vector = {\n x: to.x - from.x,\n y: to.y - from.y\n };\n const length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n const unitVector = {\n x: vector.x / length,\n y: vector.y / length\n };\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius\n };\n}\n//# sourceMappingURL=path.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { makeLineProps } from \"./util/line.mjs\";\nimport { genPath as _genPath } from \"./util/path.mjs\";\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTrendlineProps = propsFactory({\n fill: Boolean,\n ...makeLineProps()\n}, 'VTrendline');\nexport const VTrendline = genericComponent()({\n name: 'VTrendline',\n props: makeVTrendlineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const uid = getUid();\n const id = computed(() => props.id || `trendline-${uid}`);\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000));\n const lastLength = ref(0);\n const path = ref(null);\n function genPoints(values, boundary) {\n const {\n minX,\n maxX,\n minY,\n maxY\n } = boundary;\n const totalValues = values.length;\n const maxValue = props.max != null ? Number(props.max) : Math.max(...values);\n const minValue = props.min != null ? Number(props.min) : Math.min(...values);\n const gridX = (maxX - minX) / (totalValues - 1);\n const gridY = (maxY - minY) / (maxValue - minValue || 1);\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY,\n value\n };\n });\n }\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const lineWidth = computed(() => {\n return parseFloat(props.lineWidth) || 4;\n });\n const totalWidth = computed(() => Number(props.width));\n const boundary = computed(() => {\n const padding = Number(props.padding);\n return {\n minX: padding,\n maxX: totalWidth.value - padding,\n minY: padding,\n maxY: parseInt(props.height, 10) - padding\n };\n });\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));\n const parsedLabels = computed(() => {\n const labels = [];\n const points = genPoints(items.value, boundary.value);\n const len = points.length;\n for (let i = 0; labels.length < len; i++) {\n const item = points[i];\n let value = props.labels[i];\n if (!value) {\n value = typeof item === 'object' ? item.value : item;\n }\n labels.push({\n x: item.x,\n value: String(value)\n });\n }\n return labels;\n });\n watch(() => props.modelValue, async () => {\n await nextTick();\n if (!props.autoDraw || !path.value) return;\n const pathRef = path.value;\n const length = pathRef.getTotalLength();\n if (!props.fill) {\n // Initial setup to \"hide\" the line by using the stroke dash array\n pathRef.style.strokeDasharray = `${length}`;\n pathRef.style.strokeDashoffset = `${length}`;\n\n // Force reflow to ensure the transition starts from this state\n pathRef.getBoundingClientRect();\n\n // Animate the stroke dash offset to \"draw\" the line\n pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;\n pathRef.style.strokeDashoffset = '0';\n } else {\n // Your existing logic for filled paths remains the same\n pathRef.style.transformOrigin = 'bottom center';\n pathRef.style.transition = 'none';\n pathRef.style.transform = `scaleY(0)`;\n pathRef.getBoundingClientRect();\n pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;\n pathRef.style.transform = `scaleY(1)`;\n }\n lastLength.value = length;\n }, {\n immediate: true\n });\n function genPath(fill) {\n return _genPath(genPoints(items.value, boundary.value), props.smooth ? 8 : Number(props.smooth), fill, parseInt(props.height, 10));\n }\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();\n return _createVNode(\"svg\", {\n \"display\": \"block\",\n \"stroke-width\": parseFloat(props.lineWidth) ?? 4\n }, [_createVNode(\"defs\", null, [_createVNode(\"linearGradient\", {\n \"id\": id.value,\n \"gradientUnits\": \"userSpaceOnUse\",\n \"x1\": props.gradientDirection === 'left' ? '100%' : '0',\n \"y1\": props.gradientDirection === 'top' ? '100%' : '0',\n \"x2\": props.gradientDirection === 'right' ? '100%' : '0',\n \"y2\": props.gradientDirection === 'bottom' ? '100%' : '0'\n }, [gradientData.map((color, index) => _createVNode(\"stop\", {\n \"offset\": index / Math.max(gradientData.length - 1, 1),\n \"stop-color\": color || 'currentColor'\n }, null))])]), hasLabels.value && _createVNode(\"g\", {\n \"key\": \"labels\",\n \"style\": {\n textAnchor: 'middle',\n dominantBaseline: 'mathematical',\n fill: 'currentColor'\n }\n }, [parsedLabels.value.map((item, i) => _createVNode(\"text\", {\n \"x\": item.x + lineWidth.value / 2 + lineWidth.value / 2,\n \"y\": parseInt(props.height, 10) - 4 + (parseInt(props.labelSize, 10) || 7 * 0.75),\n \"font-size\": Number(props.labelSize) || 7\n }, [slots.label?.({\n index: i,\n value: item.value\n }) ?? item.value]))]), _createVNode(\"path\", {\n \"ref\": path,\n \"d\": genPath(props.fill),\n \"fill\": props.fill ? `url(#${id.value})` : 'none',\n \"stroke\": props.fill ? 'none' : `url(#${id.value})`\n }, null), props.fill && _createVNode(\"path\", {\n \"d\": genPath(false),\n \"fill\": \"none\",\n \"stroke\": props.color ?? props.gradient?.[0]\n }, null)]);\n });\n }\n});\n//# sourceMappingURL=VTrendline.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVBarlineProps, VBarline } from \"./VBarline.mjs\";\nimport { makeVTrendlineProps, VTrendline } from \"./VTrendline.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\n\nexport const makeVSparklineProps = propsFactory({\n type: {\n type: String,\n default: 'trend'\n },\n ...makeVBarlineProps(),\n ...makeVTrendlineProps()\n}, 'VSparkline');\nexport const VSparkline = genericComponent()({\n name: 'VSparkline',\n props: makeVSparklineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n const hasLabels = computed(() => {\n return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);\n });\n const totalHeight = computed(() => {\n let height = parseInt(props.height, 10);\n if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5;\n return height;\n });\n useRender(() => {\n const Tag = props.type === 'trend' ? VTrendline : VBarline;\n const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props);\n return _createVNode(Tag, _mergeProps({\n \"key\": props.type,\n \"class\": textColorClasses.value,\n \"style\": textColorStyles.value,\n \"viewBox\": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}`\n }, lineProps), slots);\n });\n }\n});\n//# sourceMappingURL=VSparkline.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSpeedDial.css\";\n\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { makeVMenuProps, VMenu } from \"../VMenu/VMenu.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { MaybeTransition } from \"../../composables/transition.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSpeedDialProps = propsFactory({\n ...makeComponentProps(),\n ...makeVMenuProps({\n offset: 8,\n minWidth: 0,\n openDelay: 0,\n closeDelay: 100,\n location: 'top center',\n transition: 'scale-transition'\n })\n}, 'VSpeedDial');\nexport const VSpeedDial = genericComponent()({\n name: 'VSpeedDial',\n props: makeVSpeedDialProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const menuRef = ref();\n const location = computed(() => {\n const [y, x = 'center'] = props.location?.split(' ') ?? [];\n return `${y} ${x}`;\n });\n const locationClasses = computed(() => ({\n [`v-speed-dial__content--${location.value.replace(' ', '-')}`]: true\n }));\n useRender(() => {\n const menuProps = VMenu.filterProps(props);\n return _createVNode(VMenu, _mergeProps(menuProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": props.class,\n \"style\": props.style,\n \"contentClass\": ['v-speed-dial__content', locationClasses.value, props.contentClass],\n \"location\": location.value,\n \"ref\": menuRef,\n \"transition\": \"fade-transition\"\n }), {\n ...slots,\n default: slotProps => _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n size: 'small'\n }\n }\n }, {\n default: () => [_createVNode(MaybeTransition, {\n \"appear\": true,\n \"group\": true,\n \"transition\": props.transition\n }, {\n default: () => [slots.default?.(slotProps)]\n })]\n })\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSpeedDial.mjs.map","// Types\n\nexport const VStepperSymbol = Symbol.for('vuetify:v-stepper');\n//# sourceMappingURL=shared.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VBtn } from \"../VBtn/VBtn.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\"; // Composables\nimport { useLocale } from \"../../composables/locale.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVStepperActionsProps = propsFactory({\n color: String,\n disabled: {\n type: [Boolean, String],\n default: false\n },\n prevText: {\n type: String,\n default: '$vuetify.stepper.prev'\n },\n nextText: {\n type: String,\n default: '$vuetify.stepper.next'\n }\n}, 'VStepperActions');\nexport const VStepperActions = genericComponent()({\n name: 'VStepperActions',\n props: makeVStepperActionsProps(),\n emits: {\n 'click:prev': () => true,\n 'click:next': () => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n function onClickPrev() {\n emit('click:prev');\n }\n function onClickNext() {\n emit('click:next');\n }\n useRender(() => {\n const prevSlotProps = {\n onClick: onClickPrev\n };\n const nextSlotProps = {\n onClick: onClickNext\n };\n return _createVNode(\"div\", {\n \"class\": \"v-stepper-actions\"\n }, [_createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n disabled: ['prev', true].includes(props.disabled),\n text: t(props.prevText),\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.prev?.({\n props: prevSlotProps\n }) ?? _createVNode(VBtn, prevSlotProps, null)]\n }), _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n color: props.color,\n disabled: ['next', true].includes(props.disabled),\n text: t(props.nextText),\n variant: 'tonal'\n }\n }\n }, {\n default: () => [slots.next?.({\n props: nextSlotProps\n }) ?? _createVNode(VBtn, nextSlotProps, null)]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperActions.mjs.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.mjs\";\nexport const VStepperHeader = createSimpleFunctional('v-stepper-header');\n//# sourceMappingURL=VStepperHeader.mjs.map","import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VStepperItem.css\";\n\n// Components\nimport { VAvatar } from \"../VAvatar/VAvatar.mjs\";\nimport { VIcon } from \"../VIcon/VIcon.mjs\"; // Composables\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.mjs\";\nimport { genOverlays } from \"../../composables/variant.mjs\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.mjs\"; // Utilities\nimport { computed } from 'vue';\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeStepperItemProps = propsFactory({\n color: String,\n title: String,\n subtitle: String,\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete'\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit'\n },\n error: Boolean,\n errorIcon: {\n type: String,\n default: '$error'\n },\n icon: String,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n rules: {\n type: Array,\n default: () => []\n }\n}, 'StepperItem');\nexport const makeVStepperItemProps = propsFactory({\n ...makeStepperItemProps(),\n ...makeGroupItemProps()\n}, 'VStepperItem');\nexport const VStepperItem = genericComponent()({\n name: 'VStepperItem',\n directives: {\n Ripple\n },\n props: makeVStepperItemProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = useGroupItem(props, VStepperSymbol, true);\n const step = computed(() => group?.value.value ?? props.value);\n const isValid = computed(() => props.rules.every(handler => handler() === true));\n const isClickable = computed(() => !props.disabled && props.editable);\n const canEdit = computed(() => !props.disabled && props.editable);\n const hasError = computed(() => props.error || !isValid.value);\n const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value);\n const icon = computed(() => {\n if (hasError.value) return props.errorIcon;\n if (hasCompleted.value) return props.completeIcon;\n if (group.isSelected.value && props.editable) return props.editIcon;\n return props.icon;\n });\n const slotProps = computed(() => ({\n canEdit: canEdit.value,\n hasError: hasError.value,\n hasCompleted: hasCompleted.value,\n title: props.title,\n subtitle: props.subtitle,\n step: step.value,\n value: props.value\n }));\n useRender(() => {\n const hasColor = (!group || group.isSelected.value || hasCompleted.value || canEdit.value) && !hasError.value && !props.disabled;\n const hasTitle = !!(props.title != null || slots.title);\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle);\n function onClick() {\n group?.toggle();\n }\n return _withDirectives(_createVNode(\"button\", {\n \"class\": ['v-stepper-item', {\n 'v-stepper-item--complete': hasCompleted.value,\n 'v-stepper-item--disabled': props.disabled,\n 'v-stepper-item--error': hasError.value\n }, group?.selectedClass.value],\n \"disabled\": !props.editable,\n \"onClick\": onClick\n }, [isClickable.value && genOverlays(true, 'v-stepper-item'), _createVNode(VAvatar, {\n \"key\": \"stepper-avatar\",\n \"class\": \"v-stepper-item__avatar\",\n \"color\": hasColor ? props.color : undefined,\n \"size\": 24\n }, {\n default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? _createVNode(VIcon, {\n \"icon\": icon.value\n }, null) : step.value)]\n }), _createVNode(\"div\", {\n \"class\": \"v-stepper-item__content\"\n }, [hasTitle && _createVNode(\"div\", {\n \"key\": \"title\",\n \"class\": \"v-stepper-item__title\"\n }, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && _createVNode(\"div\", {\n \"key\": \"subtitle\",\n \"class\": \"v-stepper-item__subtitle\"\n }, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[_resolveDirective(\"ripple\"), props.ripple && props.editable, null]]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVStepperWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VStepperWindow');\nexport const VStepperWindow = genericComponent()({\n name: 'VStepperWindow',\n props: makeVStepperWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VStepperSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VStepper group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VStepper, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VStepperWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-stepper-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVStepperWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VStepperWindowItem');\nexport const VStepperWindowItem = genericComponent()({\n name: 'VStepperWindowItem',\n props: makeVStepperWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VStepperWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-stepper-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VStepperWindowItem.mjs.map","import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VStepper.css\";\n\n// Components\nimport { VStepperSymbol } from \"./shared.mjs\";\nimport { makeVStepperActionsProps, VStepperActions } from \"./VStepperActions.mjs\";\nimport { VStepperHeader } from \"./VStepperHeader.mjs\";\nimport { VStepperItem } from \"./VStepperItem.mjs\";\nimport { VStepperWindow } from \"./VStepperWindow.mjs\";\nimport { VStepperWindowItem } from \"./VStepperWindowItem.mjs\";\nimport { VDivider } from \"../VDivider/index.mjs\";\nimport { makeVSheetProps, VSheet } from \"../VSheet/VSheet.mjs\"; // Composables\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDisplayProps, useDisplay } from \"../../composables/display.mjs\";\nimport { makeGroupProps, useGroup } from \"../../composables/group.mjs\"; // Utilities\nimport { computed, toRefs } from 'vue';\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeStepperProps = propsFactory({\n altLabels: Boolean,\n bgColor: String,\n completeIcon: String,\n editIcon: String,\n editable: Boolean,\n errorIcon: String,\n hideActions: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n itemTitle: {\n type: String,\n default: 'title'\n },\n itemValue: {\n type: String,\n default: 'value'\n },\n nonLinear: Boolean,\n flat: Boolean,\n ...makeDisplayProps()\n}, 'Stepper');\nexport const makeVStepperProps = propsFactory({\n ...makeStepperProps(),\n ...makeGroupProps({\n mandatory: 'force',\n selectedClass: 'v-stepper-item--selected'\n }),\n ...makeVSheetProps(),\n ...only(makeVStepperActionsProps(), ['prevText', 'nextText'])\n}, 'VStepper');\nexport const VStepper = genericComponent()({\n name: 'VStepper',\n props: makeVStepperProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n items: _items,\n next,\n prev,\n selected\n } = useGroup(props, VStepperSymbol);\n const {\n displayClasses,\n mobile\n } = useDisplay(props);\n const {\n completeIcon,\n editIcon,\n errorIcon,\n color,\n editable,\n prevText,\n nextText\n } = toRefs(props);\n const items = computed(() => props.items.map((item, index) => {\n const title = getPropertyFromItem(item, props.itemTitle, item);\n const value = getPropertyFromItem(item, props.itemValue, index + 1);\n return {\n title,\n value,\n raw: item\n };\n }));\n const activeIndex = computed(() => {\n return _items.value.findIndex(item => selected.value.includes(item.id));\n });\n const disabled = computed(() => {\n if (props.disabled) return props.disabled;\n if (activeIndex.value === 0) return 'prev';\n if (activeIndex.value === _items.value.length - 1) return 'next';\n return false;\n });\n provideDefaults({\n VStepperItem: {\n editable,\n errorIcon,\n completeIcon,\n editIcon,\n prevText,\n nextText\n },\n VStepperActions: {\n color,\n disabled,\n prevText,\n nextText\n }\n });\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n const hasHeader = !!(slots.header || props.items.length);\n const hasWindow = props.items.length > 0;\n const hasActions = !props.hideActions && !!(hasWindow || slots.actions);\n return _createVNode(VSheet, _mergeProps(sheetProps, {\n \"color\": props.bgColor,\n \"class\": ['v-stepper', {\n 'v-stepper--alt-labels': props.altLabels,\n 'v-stepper--flat': props.flat,\n 'v-stepper--non-linear': props.nonLinear,\n 'v-stepper--mobile': mobile.value\n }, displayClasses.value, props.class],\n \"style\": props.style\n }), {\n default: () => [hasHeader && _createVNode(VStepperHeader, {\n \"key\": \"stepper-header\"\n }, {\n default: () => [items.value.map((_ref2, index) => {\n let {\n raw,\n ...item\n } = _ref2;\n return _createVNode(_Fragment, null, [!!index && _createVNode(VDivider, null, null), _createVNode(VStepperItem, item, {\n default: slots[`header-item.${item.value}`] ?? slots.header,\n icon: slots.icon,\n title: slots.title,\n subtitle: slots.subtitle\n })]);\n })]\n }), hasWindow && _createVNode(VStepperWindow, {\n \"key\": \"stepper-window\"\n }, {\n default: () => [items.value.map(item => _createVNode(VStepperWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item)\n }))]\n }), slots.default?.({\n prev,\n next\n }), hasActions && (slots.actions?.({\n next,\n prev\n }) ?? _createVNode(VStepperActions, {\n \"key\": \"stepper-actions\",\n \"onClick:prev\": prev,\n \"onClick:next\": next\n }, slots))]\n });\n });\n return {\n prev,\n next\n };\n }\n});\n//# sourceMappingURL=VStepper.mjs.map","import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSwitch.css\";\n\n// Components\nimport { VScaleTransition } from \"../transitions/index.mjs\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/VDefaultsProvider.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\";\nimport { VProgressCircular } from \"../VProgressCircular/index.mjs\";\nimport { makeVSelectionControlProps, VSelectionControl } from \"../VSelectionControl/VSelectionControl.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { LoaderSlot, useLoader } from \"../../composables/loader.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { filterInputAttrs, genericComponent, getUid, IN_BROWSER, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVSwitchProps = propsFactory({\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false\n },\n ...makeVInputProps(),\n ...makeVSelectionControlProps()\n}, 'VSwitch');\nexport const VSwitch = genericComponent()({\n name: 'VSwitch',\n inheritAttrs: false,\n props: makeVSwitchProps(),\n emits: {\n 'update:focused': focused => true,\n 'update:modelValue': value => true,\n 'update:indeterminate': value => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const indeterminate = useProxiedModel(props, 'indeterminate');\n const model = useProxiedModel(props, 'modelValue');\n const {\n loaderClasses\n } = useLoader(props);\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const control = ref();\n const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;\n });\n const uid = getUid();\n const id = computed(() => props.id || `switch-${uid}`);\n function onChange() {\n if (indeterminate.value) {\n indeterminate.value = false;\n }\n }\n function onTrackClick(e) {\n e.stopPropagation();\n e.preventDefault();\n control.value?.input?.click();\n }\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);\n const inputProps = VInput.filterProps(props);\n const controlProps = VSelectionControl.filterProps(props);\n return _createVNode(VInput, _mergeProps({\n \"class\": ['v-switch', {\n 'v-switch--flat': props.flat\n }, {\n 'v-switch--inset': props.inset\n }, {\n 'v-switch--indeterminate': indeterminate.value\n }, loaderClasses.value, props.class]\n }, rootAttrs, inputProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"id\": id.value,\n \"focused\": isFocused.value,\n \"style\": props.style\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid\n } = _ref2;\n const slotProps = {\n model,\n isValid\n };\n return _createVNode(VSelectionControl, _mergeProps({\n \"ref\": control\n }, controlProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": [$event => model.value = $event, onChange],\n \"id\": id.value,\n \"aria-describedby\": messagesId.value,\n \"type\": \"checkbox\",\n \"aria-checked\": indeterminate.value ? 'mixed' : undefined,\n \"disabled\": isDisabled.value,\n \"readonly\": isReadonly.value,\n \"onFocus\": focus,\n \"onBlur\": blur\n }, controlAttrs), {\n ...slots,\n default: _ref3 => {\n let {\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref3;\n return _createVNode(\"div\", {\n \"class\": ['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],\n \"style\": backgroundColorStyles.value,\n \"onClick\": onTrackClick\n }, [slots['track-true'] && _createVNode(\"div\", {\n \"key\": \"prepend\",\n \"class\": \"v-switch__track-true\"\n }, [slots['track-true'](slotProps)]), slots['track-false'] && _createVNode(\"div\", {\n \"key\": \"append\",\n \"class\": \"v-switch__track-false\"\n }, [slots['track-false'](slotProps)])]);\n },\n input: _ref4 => {\n let {\n inputNode,\n icon,\n backgroundColorClasses,\n backgroundColorStyles\n } = _ref4;\n return _createVNode(_Fragment, null, [inputNode, _createVNode(\"div\", {\n \"class\": ['v-switch__thumb', {\n 'v-switch__thumb--filled': icon || props.loading\n }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value],\n \"style\": props.inset ? undefined : backgroundColorStyles.value\n }, [slots.thumb ? _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VIcon: {\n icon,\n size: 'x-small'\n }\n }\n }, {\n default: () => [slots.thumb({\n ...slotProps,\n icon\n })]\n }) : _createVNode(VScaleTransition, null, {\n default: () => [!props.loading ? icon && _createVNode(VIcon, {\n \"key\": String(icon),\n \"icon\": icon,\n \"size\": \"x-small\"\n }, null) : _createVNode(LoaderSlot, {\n \"name\": \"v-switch\",\n \"active\": true,\n \"color\": isValid.value === false ? undefined : loaderColor.value\n }, {\n default: slotProps => slots.loader ? slots.loader(slotProps) : _createVNode(VProgressCircular, {\n \"active\": slotProps.isActive,\n \"color\": slotProps.color,\n \"indeterminate\": true,\n \"size\": \"16\",\n \"width\": \"2\"\n }, null)\n })]\n })])]);\n }\n });\n }\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VSwitch.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VSystemBar.css\";\n\n// Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, shallowRef, toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVSystemBarProps = propsFactory({\n color: String,\n height: [Number, String],\n window: Boolean,\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VSystemBar');\nexport const VSystemBar = genericComponent()({\n name: 'VSystemBar',\n props: makeVSystemBarProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n ssrBootStyles\n } = useSsrBoot();\n const height = computed(() => props.height ?? (props.window ? 32 : 24));\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: shallowRef('top'),\n layoutSize: height,\n elementSize: height,\n active: computed(() => true),\n absolute: toRef(props, 'absolute')\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-system-bar', {\n 'v-system-bar--window': props.window\n }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VSystemBar.mjs.map","// Types\n\nexport const VTabsSymbol = Symbol.for('vuetify:v-tabs');\n//# sourceMappingURL=shared.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTab.css\";\n\n// Components\nimport { makeVBtnProps, VBtn } from \"../VBtn/VBtn.mjs\"; // Composables\nimport { useTextColor } from \"../../composables/color.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\"; // Utilities\nimport { computed, ref } from 'vue';\nimport { VTabsSymbol } from \"./shared.mjs\";\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n sliderColor: String,\n hideSlider: Boolean,\n direction: {\n type: String,\n default: 'horizontal'\n },\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text'\n }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])\n}, 'VTab');\nexport const VTab = genericComponent()({\n name: 'VTab',\n props: makeVTabProps(),\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles\n } = useTextColor(props, 'sliderColor');\n const rootEl = ref();\n const sliderEl = ref();\n const isHorizontal = computed(() => props.direction === 'horizontal');\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false);\n function updateSlider(_ref2) {\n let {\n value\n } = _ref2;\n if (value) {\n const prevEl = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider');\n const nextEl = sliderEl.value;\n if (!prevEl || !nextEl) return;\n const color = getComputedStyle(prevEl).color;\n const prevBox = prevEl.getBoundingClientRect();\n const nextBox = nextEl.getBoundingClientRect();\n const xy = isHorizontal.value ? 'x' : 'y';\n const XY = isHorizontal.value ? 'X' : 'Y';\n const rightBottom = isHorizontal.value ? 'right' : 'bottom';\n const widthHeight = isHorizontal.value ? 'width' : 'height';\n const prevPos = prevBox[xy];\n const nextPos = nextBox[xy];\n const delta = prevPos > nextPos ? prevBox[rightBottom] - nextBox[rightBottom] : prevBox[xy] - nextBox[xy];\n const origin = Math.sign(delta) > 0 ? isHorizontal.value ? 'right' : 'bottom' : Math.sign(delta) < 0 ? isHorizontal.value ? 'left' : 'top' : 'center';\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight]);\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0;\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0;\n const sigma = 1.5;\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [`translate${XY}(${delta}px) scale${XY}(${initialScale})`, `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`, 'none'],\n transformOrigin: Array(3).fill(origin)\n }, {\n duration: 225,\n easing: standardEasing\n });\n }\n }\n useRender(() => {\n const btnProps = VBtn.filterProps(props);\n return _createVNode(VBtn, _mergeProps({\n \"symbol\": VTabsSymbol,\n \"ref\": rootEl,\n \"class\": ['v-tab', props.class],\n \"style\": props.style,\n \"tabindex\": isSelected.value ? 0 : -1,\n \"role\": \"tab\",\n \"aria-selected\": String(isSelected.value),\n \"active\": false\n }, btnProps, attrs, {\n \"block\": props.fixed,\n \"maxWidth\": props.fixed ? 300 : undefined,\n \"onGroup:selected\": updateSlider\n }), {\n ...slots,\n default: () => _createVNode(_Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && _createVNode(\"div\", {\n \"ref\": sliderEl,\n \"class\": ['v-tab__slider', sliderColorClasses.value],\n \"style\": sliderColorStyles.value\n }, null)])\n });\n });\n return forwardRefs({}, rootEl);\n }\n});\n//# sourceMappingURL=VTab.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowProps, VWindow } from \"../VWindow/VWindow.mjs\"; // Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { computed, inject } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VTabsSymbol } from \"./shared.mjs\";\nexport const makeVTabsWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])\n}, 'VTabsWindow');\nexport const VTabsWindow = genericComponent()({\n name: 'VTabsWindow',\n props: makeVTabsWindowProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const group = inject(VTabsSymbol, null);\n const _model = useProxiedModel(props, 'modelValue');\n const model = computed({\n get() {\n // Always return modelValue if defined\n // or if not within a VTabs group\n if (_model.value != null || !group) return _model.value;\n\n // If inside of a VTabs, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value;\n },\n set(val) {\n _model.value = val;\n }\n });\n useRender(() => {\n const windowProps = VWindow.filterProps(props);\n return _createVNode(VWindow, _mergeProps({\n \"_as\": \"VTabsWindow\"\n }, windowProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs-window', props.class],\n \"style\": props.style,\n \"mandatory\": false,\n \"touch\": false\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindow.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Components\nimport { makeVWindowItemProps, VWindowItem } from \"../VWindow/VWindowItem.mjs\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTabsWindowItemProps = propsFactory({\n ...makeVWindowItemProps()\n}, 'VTabsWindowItem');\nexport const VTabsWindowItem = genericComponent()({\n name: 'VTabsWindowItem',\n props: makeVTabsWindowItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props);\n return _createVNode(VWindowItem, _mergeProps({\n \"_as\": \"VTabsWindowItem\"\n }, windowItemProps, {\n \"class\": ['v-tabs-window-item', props.class],\n \"style\": props.style\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabsWindowItem.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTabs.css\";\n\n// Components\nimport { VTab } from \"./VTab.mjs\";\nimport { VTabsWindow } from \"./VTabsWindow.mjs\";\nimport { VTabsWindowItem } from \"./VTabsWindowItem.mjs\";\nimport { makeVSlideGroupProps, VSlideGroup } from \"../VSlideGroup/VSlideGroup.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { useScopeId } from \"../../composables/scopeId.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, isObject, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { VTabsSymbol } from \"./shared.mjs\";\nfunction parseItems(items) {\n if (!items) return [];\n return items.map(item => {\n if (!isObject(item)) return {\n text: item,\n value: item\n };\n return item;\n });\n}\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String,\n default: 'start'\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array,\n default: () => []\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined\n },\n hideSlider: Boolean,\n sliderColor: String,\n ...makeVSlideGroupProps({\n mandatory: 'force',\n selectedClass: 'v-tab-item--selected'\n }),\n ...makeDensityProps(),\n ...makeTagProps()\n}, 'VTabs');\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n props: makeVTabsProps(),\n emits: {\n 'update:modelValue': v => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const items = computed(() => parseItems(props.items));\n const {\n densityClasses\n } = useDensity(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'bgColor'));\n const {\n scopeId\n } = useScopeId();\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider')\n }\n });\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props);\n const hasWindow = !!(slots.window || props.items.length > 0);\n return _createVNode(_Fragment, null, [_createVNode(VSlideGroup, _mergeProps(slideGroupProps, {\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked\n }, densityClasses.value, backgroundColorClasses.value, props.class],\n \"style\": [{\n '--v-tabs-height': convertToUnit(props.height)\n }, backgroundColorStyles.value, props.style],\n \"role\": \"tablist\",\n \"symbol\": VTabsSymbol\n }, scopeId, attrs), {\n default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({\n item\n }) ?? _createVNode(VTab, _mergeProps(item, {\n \"key\": item.text,\n \"value\": item.value\n }), {\n default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({\n item\n }) : undefined\n }))]\n }), hasWindow && _createVNode(VTabsWindow, _mergeProps({\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"key\": \"tabs-window\"\n }, scopeId), {\n default: () => [items.value.map(item => slots.item?.({\n item\n }) ?? _createVNode(VTabsWindowItem, {\n \"value\": item.value\n }, {\n default: () => slots[`item.${item.value}`]?.({\n item\n })\n })), slots.window?.()]\n })]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTabs.mjs.map","import { vModelText as _vModelText, withDirectives as _withDirectives, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from \"vue\";\n// Styles\nimport \"./VTextarea.css\";\nimport \"../VTextField/VTextField.css\";\n\n// Components\nimport { VCounter } from \"../VCounter/VCounter.mjs\";\nimport { VField } from \"../VField/index.mjs\";\nimport { filterFieldProps, makeVFieldProps } from \"../VField/VField.mjs\";\nimport { makeVInputProps, VInput } from \"../VInput/VInput.mjs\"; // Composables\nimport { useFocus } from \"../../composables/focus.mjs\";\nimport { forwardRefs } from \"../../composables/forwardRefs.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Directives\nimport Intersect from \"../../directives/intersect/index.mjs\"; // Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVTextareaProps = propsFactory({\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: Function,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: v => !isNaN(parseFloat(v))\n },\n maxRows: {\n type: [Number, String],\n validator: v => !isNaN(parseFloat(v))\n },\n suffix: String,\n modelModifiers: Object,\n ...makeVInputProps(),\n ...makeVFieldProps()\n}, 'VTextarea');\nexport const VTextarea = genericComponent()({\n name: 'VTextarea',\n directives: {\n Intersect\n },\n inheritAttrs: false,\n props: makeVTextareaProps(),\n emits: {\n 'click:control': e => true,\n 'mousedown:control': e => true,\n 'update:focused': focused => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const model = useProxiedModel(props, 'modelValue');\n const {\n isFocused,\n focus,\n blur\n } = useFocus(props);\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;\n });\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength;\n if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;\n return props.counter;\n });\n function onIntersect(isIntersecting, entries) {\n if (!props.autofocus || !isIntersecting) return;\n entries[0].target?.focus?.();\n }\n const vInputRef = ref();\n const vFieldRef = ref();\n const controlHeight = shallowRef('');\n const textareaRef = ref();\n const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);\n function onFocus() {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus();\n }\n if (!isFocused.value) focus();\n }\n function onControlClick(e) {\n onFocus();\n emit('click:control', e);\n }\n function onControlMousedown(e) {\n emit('mousedown:control', e);\n }\n function onClear(e) {\n e.stopPropagation();\n onFocus();\n nextTick(() => {\n model.value = '';\n callEvent(props['onClick:clear'], e);\n });\n }\n function onInput(e) {\n const el = e.target;\n model.value = el.value;\n if (props.modelModifiers?.trim) {\n const caretPosition = [el.selectionStart, el.selectionEnd];\n nextTick(() => {\n el.selectionStart = caretPosition[0];\n el.selectionEnd = caretPosition[1];\n });\n }\n }\n const sizerRef = ref();\n const rows = ref(+props.rows);\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));\n watchEffect(() => {\n if (!props.autoGrow) rows.value = +props.rows;\n });\n function calculateInputHeight() {\n if (!props.autoGrow) return;\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return;\n const style = getComputedStyle(sizerRef.value);\n const fieldStyle = getComputedStyle(vFieldRef.value.$el);\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) + parseFloat(style.getPropertyValue('--v-input-padding-top')) + parseFloat(style.getPropertyValue('--v-field-padding-bottom'));\n const height = sizerRef.value.scrollHeight;\n const lineHeight = parseFloat(style.lineHeight);\n const minHeight = Math.max(parseFloat(props.rows) * lineHeight + padding, parseFloat(fieldStyle.getPropertyValue('--v-input-control-height')));\n const maxHeight = parseFloat(props.maxRows) * lineHeight + padding || Infinity;\n const newHeight = clamp(height ?? 0, minHeight, maxHeight);\n rows.value = Math.floor((newHeight - padding) / lineHeight);\n controlHeight.value = convertToUnit(newHeight);\n });\n }\n onMounted(calculateInputHeight);\n watch(model, calculateInputHeight);\n watch(() => props.rows, calculateInputHeight);\n watch(() => props.maxRows, calculateInputHeight);\n watch(() => props.density, calculateInputHeight);\n let observer;\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight);\n observer.observe(sizerRef.value);\n } else {\n observer?.disconnect();\n }\n });\n onBeforeUnmount(() => {\n observer?.disconnect();\n });\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue);\n const hasDetails = !!(hasCounter || slots.details);\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);\n const {\n modelValue: _,\n ...inputProps\n } = VInput.filterProps(props);\n const fieldProps = filterFieldProps(props);\n return _createVNode(VInput, _mergeProps({\n \"ref\": vInputRef,\n \"modelValue\": model.value,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"class\": ['v-textarea v-text-field', {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-input--plain-underlined': isPlainOrUnderlined.value\n }, props.class],\n \"style\": props.style\n }, rootAttrs, inputProps, {\n \"centerAffix\": rows.value === 1 && !isPlainOrUnderlined.value,\n \"focused\": isFocused.value\n }), {\n ...slots,\n default: _ref2 => {\n let {\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid\n } = _ref2;\n return _createVNode(VField, _mergeProps({\n \"ref\": vFieldRef,\n \"style\": {\n '--v-textarea-control-height': controlHeight.value\n },\n \"onClick\": onControlClick,\n \"onMousedown\": onControlMousedown,\n \"onClick:clear\": onClear,\n \"onClick:prependInner\": props['onClick:prependInner'],\n \"onClick:appendInner\": props['onClick:appendInner']\n }, fieldProps, {\n \"id\": id.value,\n \"active\": isActive.value || isDirty.value,\n \"centerAffix\": rows.value === 1 && !isPlainOrUnderlined.value,\n \"dirty\": isDirty.value || props.dirty,\n \"disabled\": isDisabled.value,\n \"focused\": isFocused.value,\n \"error\": isValid.value === false\n }), {\n ...slots,\n default: _ref3 => {\n let {\n props: {\n class: fieldClass,\n ...slotProps\n }\n } = _ref3;\n return _createVNode(_Fragment, null, [props.prefix && _createVNode(\"span\", {\n \"class\": \"v-text-field__prefix\"\n }, [props.prefix]), _withDirectives(_createVNode(\"textarea\", _mergeProps({\n \"ref\": textareaRef,\n \"class\": fieldClass,\n \"value\": model.value,\n \"onInput\": onInput,\n \"autofocus\": props.autofocus,\n \"readonly\": isReadonly.value,\n \"disabled\": isDisabled.value,\n \"placeholder\": props.placeholder,\n \"rows\": props.rows,\n \"name\": props.name,\n \"onFocus\": onFocus,\n \"onBlur\": blur\n }, slotProps, inputAttrs), null), [[_resolveDirective(\"intersect\"), {\n handler: onIntersect\n }, null, {\n once: true\n }]]), props.autoGrow && _withDirectives(_createVNode(\"textarea\", {\n \"class\": [fieldClass, 'v-textarea__sizer'],\n \"id\": `${slotProps.id}-sizer`,\n \"onUpdate:modelValue\": $event => model.value = $event,\n \"ref\": sizerRef,\n \"readonly\": true,\n \"aria-hidden\": \"true\"\n }, null), [[_vModelText, model.value]]), props.suffix && _createVNode(\"span\", {\n \"class\": \"v-text-field__suffix\"\n }, [props.suffix])]);\n }\n });\n },\n details: hasDetails ? slotProps => _createVNode(_Fragment, null, [slots.details?.(slotProps), hasCounter && _createVNode(_Fragment, null, [_createVNode(\"span\", null, null), _createVNode(VCounter, {\n \"active\": props.persistentCounter || isFocused.value,\n \"value\": counterValue.value,\n \"max\": max.value,\n \"disabled\": props.disabled\n }, slots.counter)])]) : undefined\n });\n });\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef);\n }\n});\n//# sourceMappingURL=VTextarea.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VThemeProvider.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.mjs\";\nexport const makeVThemeProviderProps = propsFactory({\n withBackground: Boolean,\n ...makeComponentProps(),\n ...makeThemeProps(),\n ...makeTagProps()\n}, 'VThemeProvider');\nexport const VThemeProvider = genericComponent()({\n name: 'VThemeProvider',\n props: makeVThemeProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n return () => {\n if (!props.withBackground) return slots.default?.();\n return _createVNode(props.tag, {\n \"class\": ['v-theme-provider', themeClasses.value, props.class],\n \"style\": props.style\n }, {\n default: () => [slots.default?.()]\n });\n };\n }\n});\n//# sourceMappingURL=VThemeProvider.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.mjs\";\nimport { VIcon } from \"../VIcon/index.mjs\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.mjs\";\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps, useSize } from \"../../composables/size.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVTimelineDividerProps = propsFactory({\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n icon: IconValue,\n iconColor: String,\n lineColor: String,\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeElevationProps()\n}, 'VTimelineDivider');\nexport const VTimelineDivider = genericComponent()({\n name: 'VTimelineDivider',\n props: makeVTimelineDividerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props, 'v-timeline-divider__dot');\n const {\n backgroundColorStyles,\n backgroundColorClasses\n } = useBackgroundColor(toRef(props, 'dotColor'));\n const {\n roundedClasses\n } = useRounded(props, 'v-timeline-divider__dot');\n const {\n elevationClasses\n } = useElevation(props);\n const {\n backgroundColorClasses: lineColorClasses,\n backgroundColorStyles: lineColorStyles\n } = useBackgroundColor(toRef(props, 'lineColor'));\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-timeline-divider', {\n 'v-timeline-divider--fill-dot': props.fillDot\n }, props.class],\n \"style\": props.style\n }, [_createVNode(\"div\", {\n \"class\": ['v-timeline-divider__before', lineColorClasses.value],\n \"style\": lineColorStyles.value\n }, null), !props.hideDot && _createVNode(\"div\", {\n \"key\": \"dot\",\n \"class\": ['v-timeline-divider__dot', elevationClasses.value, roundedClasses.value, sizeClasses.value],\n \"style\": sizeStyles.value\n }, [_createVNode(\"div\", {\n \"class\": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],\n \"style\": backgroundColorStyles.value\n }, [!slots.default ? _createVNode(VIcon, {\n \"key\": \"icon\",\n \"color\": props.iconColor,\n \"icon\": props.icon,\n \"size\": props.size\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"icon-defaults\",\n \"disabled\": !props.icon,\n \"defaults\": {\n VIcon: {\n color: props.iconColor,\n icon: props.icon,\n size: props.size\n }\n }\n }, slots.default)])]), _createVNode(\"div\", {\n \"class\": ['v-timeline-divider__after', lineColorClasses.value],\n \"style\": lineColorStyles.value\n }, null)]));\n return {};\n }\n});\n//# sourceMappingURL=VTimelineDivider.mjs.map","import { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\n// Components\nimport { VTimelineDivider } from \"./VTimelineDivider.mjs\"; // Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.mjs\";\nimport { makeElevationProps } from \"../../composables/elevation.mjs\";\nimport { IconValue } from \"../../composables/icons.mjs\";\nimport { makeRoundedProps } from \"../../composables/rounded.mjs\";\nimport { makeSizeProps } from \"../../composables/size.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\"; // Utilities\nimport { ref, shallowRef, watch } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\n// Types\nexport const makeVTimelineItemProps = propsFactory({\n density: String,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps()\n}, 'VTimelineItem');\nexport const VTimelineItem = genericComponent()({\n name: 'VTimelineItem',\n props: makeVTimelineItemProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n dimensionStyles\n } = useDimension(props);\n const dotSize = shallowRef(0);\n const dotRef = ref();\n watch(dotRef, newValue => {\n if (!newValue) return;\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0;\n }, {\n flush: 'post'\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-timeline-item', {\n 'v-timeline-item--fill-dot': props.fillDot\n }, props.class],\n \"style\": [{\n '--v-timeline-dot-size': convertToUnit(dotSize.value),\n '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)\n }, props.style]\n }, [_createVNode(\"div\", {\n \"class\": \"v-timeline-item__body\",\n \"style\": dimensionStyles.value\n }, [slots.default?.()]), _createVNode(VTimelineDivider, {\n \"ref\": dotRef,\n \"hideDot\": props.hideDot,\n \"icon\": props.icon,\n \"iconColor\": props.iconColor,\n \"size\": props.size,\n \"elevation\": props.elevation,\n \"dotColor\": props.dotColor,\n \"fillDot\": props.fillDot,\n \"rounded\": props.rounded\n }, {\n default: slots.icon\n }), props.density !== 'compact' && _createVNode(\"div\", {\n \"class\": \"v-timeline-item__opposite\"\n }, [!props.hideOpposite && slots.opposite?.()])]));\n return {};\n }\n});\n//# sourceMappingURL=VTimelineItem.mjs.map","import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VTimeline.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.mjs\";\nimport { useRtl } from \"../../composables/locale.mjs\";\nimport { makeTagProps } from \"../../composables/tag.mjs\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.mjs\"; // Utilities\nimport { computed, toRef } from 'vue';\nimport { convertToUnit, genericComponent, only, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nimport { makeVTimelineItemProps } from \"./VTimelineItem.mjs\";\nexport const makeVTimelineProps = propsFactory({\n align: {\n type: String,\n default: 'center',\n validator: v => ['center', 'start'].includes(v)\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: v => ['vertical', 'horizontal'].includes(v)\n },\n justify: {\n type: String,\n default: 'auto',\n validator: v => ['auto', 'center'].includes(v)\n },\n side: {\n type: String,\n validator: v => v == null || ['start', 'end'].includes(v)\n },\n lineThickness: {\n type: [String, Number],\n default: 2\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: v => ['start', 'end', 'both'].includes(v)\n },\n ...only(makeVTimelineItemProps({\n lineInset: 0\n }), ['dotColor', 'fillDot', 'hideOpposite', 'iconColor', 'lineInset', 'size']),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VTimeline');\nexport const VTimeline = genericComponent()({\n name: 'VTimeline',\n props: makeVTimelineProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n rtlClasses\n } = useRtl();\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor')\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n dotColor: toRef(props, 'dotColor'),\n fillDot: toRef(props, 'fillDot'),\n hideOpposite: toRef(props, 'hideOpposite'),\n iconColor: toRef(props, 'iconColor'),\n lineColor: toRef(props, 'lineColor'),\n lineInset: toRef(props, 'lineInset'),\n size: toRef(props, 'size')\n }\n });\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null;\n return side && `v-timeline--side-${side}`;\n });\n const truncateClasses = computed(() => {\n const classes = ['v-timeline--truncate-line-start', 'v-timeline--truncate-line-end'];\n switch (props.truncateLine) {\n case 'both':\n return classes;\n case 'start':\n return classes[0];\n case 'end':\n return classes[1];\n default:\n return null;\n }\n });\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {\n 'v-timeline--inset-line': !!props.lineInset\n }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class],\n \"style\": [{\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness)\n }, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VTimeline.mjs.map","import { createVNode as _createVNode } from \"vue\";\n// Composables\nimport { makeComponentProps } from \"../../composables/component.mjs\";\nimport { provideDefaults } from \"../../composables/defaults.mjs\";\nimport { makeVariantProps } from \"../../composables/variant.mjs\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\";\nexport const makeVToolbarItemsProps = propsFactory({\n ...makeComponentProps(),\n ...makeVariantProps({\n variant: 'text'\n })\n}, 'VToolbarItems');\nexport const VToolbarItems = genericComponent()({\n name: 'VToolbarItems',\n props: makeVToolbarItemsProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provideDefaults({\n VBtn: {\n color: toRef(props, 'color'),\n height: 'inherit',\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => _createVNode(\"div\", {\n \"class\": ['v-toolbar-items', props.class],\n \"style\": props.style\n }, [slots.default?.()]));\n return {};\n }\n});\n//# sourceMappingURL=VToolbarItems.mjs.map","// Composables\nimport { makeValidationProps, useValidation } from \"../../composables/validation.mjs\"; // Utilities\nimport { genericComponent } from \"../../util/index.mjs\"; // Types\nexport const VValidation = genericComponent()({\n name: 'VValidation',\n props: makeValidationProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const validation = useValidation(props, 'validation');\n return () => slots.default?.(validation);\n }\n});\n//# sourceMappingURL=VValidation.mjs.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { destructComputed, getForeground, isCssColor, isParsableColor, parseColor } from \"../util/index.mjs\"; // Types\n// Composables\nexport function useColor(colors) {\n return destructComputed(() => {\n const classes = [];\n const styles = {};\n if (colors.value.background) {\n if (isCssColor(colors.value.background)) {\n styles.backgroundColor = colors.value.background;\n if (!colors.value.text && isParsableColor(colors.value.background)) {\n const backgroundColor = parseColor(colors.value.background);\n if (backgroundColor.a == null || backgroundColor.a === 1) {\n const textColor = getForeground(backgroundColor);\n styles.color = textColor;\n styles.caretColor = textColor;\n }\n }\n } else {\n classes.push(`bg-${colors.value.background}`);\n }\n }\n if (colors.value.text) {\n if (isCssColor(colors.value.text)) {\n styles.color = colors.value.text;\n styles.caretColor = colors.value.text;\n } else {\n classes.push(`text-${colors.value.text}`);\n }\n }\n return {\n colorClasses: classes,\n colorStyles: styles\n };\n });\n}\nexport function useTextColor(props, name) {\n const colors = computed(() => ({\n text: isRef(props) ? props.value : name ? props[name] : null\n }));\n const {\n colorClasses: textColorClasses,\n colorStyles: textColorStyles\n } = useColor(colors);\n return {\n textColorClasses,\n textColorStyles\n };\n}\nexport function useBackgroundColor(props, name) {\n const colors = computed(() => ({\n background: isRef(props) ? props.value : name ? props[name] : null\n }));\n const {\n colorClasses: backgroundColorClasses,\n colorStyles: backgroundColorStyles\n } = useColor(colors);\n return {\n backgroundColorClasses,\n backgroundColorStyles\n };\n}\n//# sourceMappingURL=color.mjs.map","// Utilities\nimport { propsFactory } from \"../util/propsFactory.mjs\"; // Types\n// Composables\nexport const makeComponentProps = propsFactory({\n class: [String, Array, Object],\n style: {\n type: [String, Array, Object],\n default: null\n }\n}, 'component');\n//# sourceMappingURL=component.mjs.map","// Utilities\nimport { createRange, padStart } from \"../../../util/index.mjs\"; // Types\nconst firstDay = {\n '001': 1,\n AD: 1,\n AE: 6,\n AF: 6,\n AG: 0,\n AI: 1,\n AL: 1,\n AM: 1,\n AN: 1,\n AR: 1,\n AS: 0,\n AT: 1,\n AU: 1,\n AX: 1,\n AZ: 1,\n BA: 1,\n BD: 0,\n BE: 1,\n BG: 1,\n BH: 6,\n BM: 1,\n BN: 1,\n BR: 0,\n BS: 0,\n BT: 0,\n BW: 0,\n BY: 1,\n BZ: 0,\n CA: 0,\n CH: 1,\n CL: 1,\n CM: 1,\n CN: 1,\n CO: 0,\n CR: 1,\n CY: 1,\n CZ: 1,\n DE: 1,\n DJ: 6,\n DK: 1,\n DM: 0,\n DO: 0,\n DZ: 6,\n EC: 1,\n EE: 1,\n EG: 6,\n ES: 1,\n ET: 0,\n FI: 1,\n FJ: 1,\n FO: 1,\n FR: 1,\n GB: 1,\n 'GB-alt-variant': 0,\n GE: 1,\n GF: 1,\n GP: 1,\n GR: 1,\n GT: 0,\n GU: 0,\n HK: 0,\n HN: 0,\n HR: 1,\n HU: 1,\n ID: 0,\n IE: 1,\n IL: 0,\n IN: 0,\n IQ: 6,\n IR: 6,\n IS: 1,\n IT: 1,\n JM: 0,\n JO: 6,\n JP: 0,\n KE: 0,\n KG: 1,\n KH: 0,\n KR: 0,\n KW: 6,\n KZ: 1,\n LA: 0,\n LB: 1,\n LI: 1,\n LK: 1,\n LT: 1,\n LU: 1,\n LV: 1,\n LY: 6,\n MC: 1,\n MD: 1,\n ME: 1,\n MH: 0,\n MK: 1,\n MM: 0,\n MN: 1,\n MO: 0,\n MQ: 1,\n MT: 0,\n MV: 5,\n MX: 0,\n MY: 1,\n MZ: 0,\n NI: 0,\n NL: 1,\n NO: 1,\n NP: 0,\n NZ: 1,\n OM: 6,\n PA: 0,\n PE: 0,\n PH: 0,\n PK: 0,\n PL: 1,\n PR: 0,\n PT: 0,\n PY: 0,\n QA: 6,\n RE: 1,\n RO: 1,\n RS: 1,\n RU: 1,\n SA: 0,\n SD: 6,\n SE: 1,\n SG: 0,\n SI: 1,\n SK: 1,\n SM: 1,\n SV: 0,\n SY: 6,\n TH: 0,\n TJ: 1,\n TM: 1,\n TR: 1,\n TT: 0,\n TW: 0,\n UA: 1,\n UM: 0,\n US: 0,\n UY: 1,\n UZ: 1,\n VA: 1,\n VE: 0,\n VI: 0,\n VN: 1,\n WS: 0,\n XK: 1,\n YE: 0,\n ZA: 0,\n ZW: 0\n};\nfunction getWeekArray(date, locale, firstDayOfWeek) {\n const weeks = [];\n let currentWeek = [];\n const firstDayOfMonth = startOfMonth(date);\n const lastDayOfMonth = endOfMonth(date);\n const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;\n const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;\n for (let i = 0; i < firstDayWeekIndex; i++) {\n const adjacentDay = new Date(firstDayOfMonth);\n adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i));\n currentWeek.push(adjacentDay);\n }\n for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n const day = new Date(date.getFullYear(), date.getMonth(), i);\n\n // Add the day to the current week\n currentWeek.push(day);\n\n // If the current week has 7 days, add it to the weeks array and start a new week\n if (currentWeek.length === 7) {\n weeks.push(currentWeek);\n currentWeek = [];\n }\n }\n for (let i = 1; i < 7 - lastDayWeekIndex; i++) {\n const adjacentDay = new Date(lastDayOfMonth);\n adjacentDay.setDate(adjacentDay.getDate() + i);\n currentWeek.push(adjacentDay);\n }\n if (currentWeek.length > 0) {\n weeks.push(currentWeek);\n }\n return weeks;\n}\nfunction startOfWeek(date, locale, firstDayOfWeek) {\n const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n const d = new Date(date);\n while (d.getDay() !== day) {\n d.setDate(d.getDate() - 1);\n }\n return d;\n}\nfunction endOfWeek(date, locale) {\n const d = new Date(date);\n const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;\n while (d.getDay() !== lastDay) {\n d.setDate(d.getDate() + 1);\n }\n return d;\n}\nfunction startOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\nfunction endOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\nfunction parseLocalDate(value) {\n const parts = value.split('-').map(Number);\n\n // new Date() uses local time zone when passing individual date component values\n return new Date(parts[0], parts[1] - 1, parts[2]);\n}\nconst _YYYMMDD = /^([12]\\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\\d|3[01]))$/;\nfunction date(value) {\n if (value == null) return new Date();\n if (value instanceof Date) return value;\n if (typeof value === 'string') {\n let parsed;\n if (_YYYMMDD.test(value)) {\n return parseLocalDate(value);\n } else {\n parsed = Date.parse(value);\n }\n if (!isNaN(parsed)) return new Date(parsed);\n }\n return null;\n}\nconst sundayJanuarySecond2000 = new Date(2000, 0, 2);\nfunction getWeekdays(locale, firstDayOfWeek) {\n const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;\n return createRange(7).map(i => {\n const weekday = new Date(sundayJanuarySecond2000);\n weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);\n return new Intl.DateTimeFormat(locale, {\n weekday: 'narrow'\n }).format(weekday);\n });\n}\nfunction format(value, formatString, locale, formats) {\n const newDate = date(value) ?? new Date();\n const customFormat = formats?.[formatString];\n if (typeof customFormat === 'function') {\n return customFormat(newDate, formatString, locale);\n }\n let options = {};\n switch (formatString) {\n case 'fullDate':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'fullDateWithWeekday':\n options = {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'normalDate':\n const day = newDate.getDate();\n const month = new Intl.DateTimeFormat(locale, {\n month: 'long'\n }).format(newDate);\n return `${day} ${month}`;\n case 'normalDateWithWeekday':\n options = {\n weekday: 'short',\n day: 'numeric',\n month: 'short'\n };\n break;\n case 'shortDate':\n options = {\n month: 'short',\n day: 'numeric'\n };\n break;\n case 'year':\n options = {\n year: 'numeric'\n };\n break;\n case 'month':\n options = {\n month: 'long'\n };\n break;\n case 'monthShort':\n options = {\n month: 'short'\n };\n break;\n case 'monthAndYear':\n options = {\n month: 'long',\n year: 'numeric'\n };\n break;\n case 'monthAndDate':\n options = {\n month: 'long',\n day: 'numeric'\n };\n break;\n case 'weekday':\n options = {\n weekday: 'long'\n };\n break;\n case 'weekdayShort':\n options = {\n weekday: 'short'\n };\n break;\n case 'dayOfMonth':\n return new Intl.NumberFormat(locale).format(newDate.getDate());\n case 'hours12h':\n options = {\n hour: 'numeric',\n hour12: true\n };\n break;\n case 'hours24h':\n options = {\n hour: 'numeric',\n hour12: false\n };\n break;\n case 'minutes':\n options = {\n minute: 'numeric'\n };\n break;\n case 'seconds':\n options = {\n second: 'numeric'\n };\n break;\n case 'fullTime':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullTime12h':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullTime24h':\n options = {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'fullDateTime':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullDateTime12h':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'fullDateTime24h':\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'keyboardDate':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n };\n break;\n case 'keyboardDateTime':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n case 'keyboardDateTime12h':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true\n };\n break;\n case 'keyboardDateTime24h':\n options = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n break;\n default:\n options = customFormat ?? {\n timeZone: 'UTC',\n timeZoneName: 'short'\n };\n }\n return new Intl.DateTimeFormat(locale, options).format(newDate);\n}\nfunction toISO(adapter, value) {\n const date = adapter.toJsDate(value);\n const year = date.getFullYear();\n const month = padStart(String(date.getMonth() + 1), 2, '0');\n const day = padStart(String(date.getDate()), 2, '0');\n return `${year}-${month}-${day}`;\n}\nfunction parseISO(value) {\n const [year, month, day] = value.split('-').map(Number);\n return new Date(year, month - 1, day);\n}\nfunction addMinutes(date, amount) {\n const d = new Date(date);\n d.setMinutes(d.getMinutes() + amount);\n return d;\n}\nfunction addHours(date, amount) {\n const d = new Date(date);\n d.setHours(d.getHours() + amount);\n return d;\n}\nfunction addDays(date, amount) {\n const d = new Date(date);\n d.setDate(d.getDate() + amount);\n return d;\n}\nfunction addWeeks(date, amount) {\n const d = new Date(date);\n d.setDate(d.getDate() + amount * 7);\n return d;\n}\nfunction addMonths(date, amount) {\n const d = new Date(date);\n d.setDate(1);\n d.setMonth(d.getMonth() + amount);\n return d;\n}\nfunction getYear(date) {\n return date.getFullYear();\n}\nfunction getMonth(date) {\n return date.getMonth();\n}\nfunction getDate(date) {\n return date.getDate();\n}\nfunction getNextMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 1);\n}\nfunction getPreviousMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() - 1, 1);\n}\nfunction getHours(date) {\n return date.getHours();\n}\nfunction getMinutes(date) {\n return date.getMinutes();\n}\nfunction startOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n}\nfunction endOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n}\nfunction isWithinRange(date, range) {\n return isAfter(date, range[0]) && isBefore(date, range[1]);\n}\nfunction isValid(date) {\n const d = new Date(date);\n return d instanceof Date && !isNaN(d.getTime());\n}\nfunction isAfter(date, comparing) {\n return date.getTime() > comparing.getTime();\n}\nfunction isAfterDay(date, comparing) {\n return isAfter(startOfDay(date), startOfDay(comparing));\n}\nfunction isBefore(date, comparing) {\n return date.getTime() < comparing.getTime();\n}\nfunction isEqual(date, comparing) {\n return date.getTime() === comparing.getTime();\n}\nfunction isSameDay(date, comparing) {\n return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();\n}\nfunction isSameMonth(date, comparing) {\n return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();\n}\nfunction isSameYear(date, comparing) {\n return date.getFullYear() === comparing.getFullYear();\n}\nfunction getDiff(date, comparing, unit) {\n const d = new Date(date);\n const c = new Date(comparing);\n switch (unit) {\n case 'years':\n return d.getFullYear() - c.getFullYear();\n case 'quarters':\n return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4);\n case 'months':\n return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;\n case 'weeks':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7));\n case 'days':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));\n case 'hours':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60));\n case 'minutes':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60));\n case 'seconds':\n return Math.floor((d.getTime() - c.getTime()) / 1000);\n default:\n {\n return d.getTime() - c.getTime();\n }\n }\n}\nfunction setHours(date, count) {\n const d = new Date(date);\n d.setHours(count);\n return d;\n}\nfunction setMinutes(date, count) {\n const d = new Date(date);\n d.setMinutes(count);\n return d;\n}\nfunction setMonth(date, count) {\n const d = new Date(date);\n d.setMonth(count);\n return d;\n}\nfunction setDate(date, day) {\n const d = new Date(date);\n d.setDate(day);\n return d;\n}\nfunction setYear(date, year) {\n const d = new Date(date);\n d.setFullYear(year);\n return d;\n}\nfunction startOfDay(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);\n}\nfunction endOfDay(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\n}\nexport class VuetifyDateAdapter {\n constructor(options) {\n this.locale = options.locale;\n this.formats = options.formats;\n }\n date(value) {\n return date(value);\n }\n toJsDate(date) {\n return date;\n }\n toISO(date) {\n return toISO(this, date);\n }\n parseISO(date) {\n return parseISO(date);\n }\n addMinutes(date, amount) {\n return addMinutes(date, amount);\n }\n addHours(date, amount) {\n return addHours(date, amount);\n }\n addDays(date, amount) {\n return addDays(date, amount);\n }\n addWeeks(date, amount) {\n return addWeeks(date, amount);\n }\n addMonths(date, amount) {\n return addMonths(date, amount);\n }\n getWeekArray(date, firstDayOfWeek) {\n return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n startOfWeek(date, firstDayOfWeek) {\n return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n endOfWeek(date) {\n return endOfWeek(date, this.locale);\n }\n startOfMonth(date) {\n return startOfMonth(date);\n }\n endOfMonth(date) {\n return endOfMonth(date);\n }\n format(date, formatString) {\n return format(date, formatString, this.locale, this.formats);\n }\n isEqual(date, comparing) {\n return isEqual(date, comparing);\n }\n isValid(date) {\n return isValid(date);\n }\n isWithinRange(date, range) {\n return isWithinRange(date, range);\n }\n isAfter(date, comparing) {\n return isAfter(date, comparing);\n }\n isAfterDay(date, comparing) {\n return isAfterDay(date, comparing);\n }\n isBefore(date, comparing) {\n return !isAfter(date, comparing) && !isEqual(date, comparing);\n }\n isSameDay(date, comparing) {\n return isSameDay(date, comparing);\n }\n isSameMonth(date, comparing) {\n return isSameMonth(date, comparing);\n }\n isSameYear(date, comparing) {\n return isSameYear(date, comparing);\n }\n setMinutes(date, count) {\n return setMinutes(date, count);\n }\n setHours(date, count) {\n return setHours(date, count);\n }\n setMonth(date, count) {\n return setMonth(date, count);\n }\n setDate(date, day) {\n return setDate(date, day);\n }\n setYear(date, year) {\n return setYear(date, year);\n }\n getDiff(date, comparing, unit) {\n return getDiff(date, comparing, unit);\n }\n getWeekdays(firstDayOfWeek) {\n return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);\n }\n getYear(date) {\n return getYear(date);\n }\n getMonth(date) {\n return getMonth(date);\n }\n getDate(date) {\n return getDate(date);\n }\n getNextMonth(date) {\n return getNextMonth(date);\n }\n getPreviousMonth(date) {\n return getPreviousMonth(date);\n }\n getHours(date) {\n return getHours(date);\n }\n getMinutes(date) {\n return getMinutes(date);\n }\n startOfDay(date) {\n return startOfDay(date);\n }\n endOfDay(date) {\n return endOfDay(date);\n }\n startOfYear(date) {\n return startOfYear(date);\n }\n endOfYear(date) {\n return endOfYear(date);\n }\n}\n//# sourceMappingURL=vuetify.mjs.map","// Composables\nimport { useLocale } from \"../locale.mjs\"; // Utilities\nimport { inject, reactive, watch } from 'vue';\nimport { mergeDeep } from \"../../util/index.mjs\"; // Types\n// Adapters\nimport { VuetifyDateAdapter } from \"./adapters/vuetify.mjs\";\n/** Supports module augmentation to specify date adapter types */\nexport let DateModule;\nexport const DateOptionsSymbol = Symbol.for('vuetify:date-options');\nexport const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');\nexport function createDate(options, locale) {\n const _options = mergeDeep({\n adapter: VuetifyDateAdapter,\n locale: {\n af: 'af-ZA',\n // ar: '', # not the same value for all variants\n bg: 'bg-BG',\n ca: 'ca-ES',\n ckb: '',\n cs: 'cs-CZ',\n de: 'de-DE',\n el: 'el-GR',\n en: 'en-US',\n // es: '', # not the same value for all variants\n et: 'et-EE',\n fa: 'fa-IR',\n fi: 'fi-FI',\n // fr: '', #not the same value for all variants\n hr: 'hr-HR',\n hu: 'hu-HU',\n he: 'he-IL',\n id: 'id-ID',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko-KR',\n lv: 'lv-LV',\n lt: 'lt-LT',\n nl: 'nl-NL',\n no: 'no-NO',\n pl: 'pl-PL',\n pt: 'pt-PT',\n ro: 'ro-RO',\n ru: 'ru-RU',\n sk: 'sk-SK',\n sl: 'sl-SI',\n srCyrl: 'sr-SP',\n srLatn: 'sr-SP',\n sv: 'sv-SE',\n th: 'th-TH',\n tr: 'tr-TR',\n az: 'az-AZ',\n uk: 'uk-UA',\n vi: 'vi-VN',\n zhHans: 'zh-CN',\n zhHant: 'zh-TW'\n }\n }, options);\n return {\n options: _options,\n instance: createInstance(_options, locale)\n };\n}\nfunction createInstance(options, locale) {\n const instance = reactive(typeof options.adapter === 'function'\n // eslint-disable-next-line new-cap\n ? new options.adapter({\n locale: options.locale[locale.current.value] ?? locale.current.value,\n formats: options.formats\n }) : options.adapter);\n watch(locale.current, value => {\n instance.locale = options.locale[value] ?? value ?? instance.locale;\n });\n return instance;\n}\nexport function useDate() {\n const options = inject(DateOptionsSymbol);\n if (!options) throw new Error('[Vuetify] Could not find injected date options');\n const locale = useLocale();\n return createInstance(options, locale);\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek(adapter, value) {\n const date = adapter.toJsDate(value);\n let year = date.getFullYear();\n let d1w1 = new Date(year, 0, 1);\n if (date < d1w1) {\n year = year - 1;\n d1w1 = new Date(year, 0, 1);\n } else {\n const tv = new Date(year + 1, 0, 1);\n if (date >= tv) {\n year = year + 1;\n d1w1 = tv;\n }\n }\n const diffTime = Math.abs(date.getTime() - d1w1.getTime());\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n return Math.floor(diffDays / 7) + 1;\n}\n//# sourceMappingURL=date.mjs.map","// Utilities\nimport { getCurrentInstance } from \"./getCurrentInstance.mjs\"; // Types\nexport function injectSelf(key) {\n let vm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstance('injectSelf');\n const {\n provides\n } = vm;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n return undefined;\n}\n//# sourceMappingURL=injectSelf.mjs.map","// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue';\nimport { getCurrentInstance } from \"../util/getCurrentInstance.mjs\";\nimport { mergeDeep, toKebabCase } from \"../util/helpers.mjs\";\nimport { injectSelf } from \"../util/injectSelf.mjs\"; // Types\nexport const DefaultsSymbol = Symbol.for('vuetify:defaults');\nexport function createDefaults(options) {\n return ref(options);\n}\nexport function injectDefaults() {\n const defaults = inject(DefaultsSymbol);\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');\n return defaults;\n}\nexport function provideDefaults(defaults, options) {\n const injectedDefaults = injectDefaults();\n const providedDefaults = ref(defaults);\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled);\n if (disabled) return injectedDefaults.value;\n const scoped = unref(options?.scoped);\n const reset = unref(options?.reset);\n const root = unref(options?.root);\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value;\n let properties = mergeDeep(providedDefaults.value, {\n prev: injectedDefaults.value\n });\n if (scoped) return properties;\n if (reset || root) {\n const len = Number(reset || Infinity);\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break;\n }\n properties = properties.prev;\n }\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, {\n prev: properties\n }), properties[root]);\n }\n return properties;\n }\n return properties.prev ? mergeDeep(properties.prev, properties) : properties;\n });\n provide(DefaultsSymbol, newDefaults);\n return newDefaults;\n}\nfunction propIsDefined(vnode, prop) {\n return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';\n}\nexport function internalUseDefaults() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let name = arguments.length > 1 ? arguments[1] : undefined;\n let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();\n const vm = getCurrentInstance('useDefaults');\n name = name ?? vm.type.name ?? vm.type.__name;\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name');\n }\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name]);\n const _props = new Proxy(props, {\n get(target, prop) {\n const propValue = Reflect.get(target, prop);\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null);\n } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {\n return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;\n }\n return propValue;\n }\n });\n const _subcomponentDefaults = shallowRef();\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value).filter(_ref => {\n let [key] = _ref;\n return key.startsWith(key[0].toUpperCase());\n });\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined;\n } else {\n _subcomponentDefaults.value = undefined;\n }\n });\n function provideSubDefaults() {\n const injected = injectSelf(DefaultsSymbol, vm);\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(injected?.value ?? {}, _subcomponentDefaults.value) : injected?.value;\n }));\n }\n return {\n props: _props,\n provideSubDefaults\n };\n}\nexport function useDefaults() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let name = arguments.length > 1 ? arguments[1] : undefined;\n const {\n props: _props,\n provideSubDefaults\n } = internalUseDefaults(props, name);\n provideSubDefaults();\n return _props;\n}\n//# sourceMappingURL=defaults.mjs.map","// Utilities\nimport { defer, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeDelayProps = propsFactory({\n closeDelay: [Number, String],\n openDelay: [Number, String]\n}, 'delay');\nexport function useDelay(props, cb) {\n let clearDelay = () => {};\n function runDelay(isOpening) {\n clearDelay?.();\n const delay = Number(isOpening ? props.openDelay : props.closeDelay);\n return new Promise(resolve => {\n clearDelay = defer(delay, () => {\n cb?.(isOpening);\n resolve(isOpening);\n });\n });\n }\n function runOpenDelay() {\n return runDelay(true);\n }\n function runCloseDelay() {\n return runDelay(false);\n }\n return {\n clearDelay,\n runOpenDelay,\n runCloseDelay\n };\n}\n//# sourceMappingURL=delay.mjs.map","// Utilities\nimport { computed } from 'vue';\nimport { convertToUnit, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeDimensionProps = propsFactory({\n height: [Number, String],\n maxHeight: [Number, String],\n maxWidth: [Number, String],\n minHeight: [Number, String],\n minWidth: [Number, String],\n width: [Number, String]\n}, 'dimension');\nexport function useDimension(props) {\n const dimensionStyles = computed(() => {\n const styles = {};\n const height = convertToUnit(props.height);\n const maxHeight = convertToUnit(props.maxHeight);\n const maxWidth = convertToUnit(props.maxWidth);\n const minHeight = convertToUnit(props.minHeight);\n const minWidth = convertToUnit(props.minWidth);\n const width = convertToUnit(props.width);\n if (height != null) styles.height = height;\n if (maxHeight != null) styles.maxHeight = maxHeight;\n if (maxWidth != null) styles.maxWidth = maxWidth;\n if (minHeight != null) styles.minHeight = minHeight;\n if (minWidth != null) styles.minWidth = minWidth;\n if (width != null) styles.width = width;\n return styles;\n });\n return {\n dimensionStyles\n };\n}\n//# sourceMappingURL=dimensions.mjs.map","// Utilities\nimport { computed, inject, reactive, shallowRef, toRefs, watchEffect } from 'vue';\nimport { getCurrentInstanceName, mergeDeep, propsFactory } from \"../util/index.mjs\";\nimport { IN_BROWSER, SUPPORTS_TOUCH } from \"../util/globals.mjs\"; // Types\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs\n\nexport const DisplaySymbol = Symbol.for('vuetify:display');\nconst defaultDisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n }\n};\nconst parseDisplayOptions = function () {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;\n return mergeDeep(defaultDisplayOptions, options);\n};\nfunction getClientWidth(ssr) {\n return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;\n}\nfunction getClientHeight(ssr) {\n return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;\n}\nfunction getPlatform(ssr) {\n const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';\n function match(regexp) {\n return Boolean(userAgent.match(regexp));\n }\n const android = match(/android/i);\n const ios = match(/iphone|ipad|ipod/i);\n const cordova = match(/cordova/i);\n const electron = match(/electron/i);\n const chrome = match(/chrome/i);\n const edge = match(/edge/i);\n const firefox = match(/firefox/i);\n const opera = match(/opera/i);\n const win = match(/win/i);\n const mac = match(/mac/i);\n const linux = match(/linux/i);\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr'\n };\n}\nexport function createDisplay(options, ssr) {\n const {\n thresholds,\n mobileBreakpoint\n } = parseDisplayOptions(options);\n const height = shallowRef(getClientHeight(ssr));\n const platform = shallowRef(getPlatform(ssr));\n const state = reactive({});\n const width = shallowRef(getClientWidth(ssr));\n function updateSize() {\n height.value = getClientHeight();\n width.value = getClientWidth();\n }\n function update() {\n updateSize();\n platform.value = getPlatform();\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm;\n const sm = width.value < thresholds.md && !xs;\n const md = width.value < thresholds.lg && !(sm || xs);\n const lg = width.value < thresholds.xl && !(md || sm || xs);\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);\n const xxl = width.value >= thresholds.xxl;\n const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];\n const mobile = width.value < breakpointValue;\n state.xs = xs;\n state.sm = sm;\n state.md = md;\n state.lg = lg;\n state.xl = xl;\n state.xxl = xxl;\n state.smAndUp = !xs;\n state.mdAndUp = !(xs || sm);\n state.lgAndUp = !(xs || sm || md);\n state.xlAndUp = !(xs || sm || md || lg);\n state.smAndDown = !(md || lg || xl || xxl);\n state.mdAndDown = !(lg || xl || xxl);\n state.lgAndDown = !(xl || xxl);\n state.xlAndDown = !xxl;\n state.name = name;\n state.height = height.value;\n state.width = width.value;\n state.mobile = mobile;\n state.mobileBreakpoint = mobileBreakpoint;\n state.platform = platform.value;\n state.thresholds = thresholds;\n });\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, {\n passive: true\n });\n }\n return {\n ...toRefs(state),\n update,\n ssr: !!ssr\n };\n}\nexport const makeDisplayProps = propsFactory({\n mobile: {\n type: Boolean,\n default: false\n },\n mobileBreakpoint: [Number, String]\n}, 'display');\nexport function useDisplay() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const display = inject(DisplaySymbol);\n if (!display) throw new Error('Could not find Vuetify display injection');\n const mobile = computed(() => {\n if (props.mobile != null) return props.mobile;\n if (!props.mobileBreakpoint) return display.mobile.value;\n const breakpointValue = typeof props.mobileBreakpoint === 'number' ? props.mobileBreakpoint : display.thresholds.value[props.mobileBreakpoint];\n return display.width.value < breakpointValue;\n });\n const displayClasses = computed(() => {\n if (!name) return {};\n return {\n [`${name}--mobile`]: mobile.value\n };\n });\n return {\n ...display,\n displayClasses,\n mobile\n };\n}\n//# sourceMappingURL=display.mjs.map","// Types\n\nconst Refs = Symbol('Forwarded refs');\n\n/** Omit properties starting with P */\n\n/** Omit keyof $props from T */\n\nfunction getDescriptor(obj, key) {\n let currentObj = obj;\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);\n if (descriptor) return descriptor;\n currentObj = Object.getPrototypeOf(currentObj);\n }\n return undefined;\n}\nexport function forwardRefs(target) {\n for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n refs[_key - 1] = arguments[_key];\n }\n target[Refs] = refs;\n return new Proxy(target, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key);\n return typeof val === 'function' ? val.bind(ref.value) : val;\n }\n }\n },\n has(target, key) {\n if (Reflect.has(target, key)) {\n return true;\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true;\n }\n }\n return false;\n },\n set(target, key, value) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return Reflect.set(ref.value, key, value);\n }\n }\n return false;\n },\n getOwnPropertyDescriptor(target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key);\n if (descriptor) return descriptor;\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue;\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined);\n if (descriptor) return descriptor;\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && ref.value[Refs];\n if (!childRefs) continue;\n const queue = childRefs.slice();\n while (queue.length) {\n const ref = queue.shift();\n const descriptor = getDescriptor(ref.value, key);\n if (descriptor) return descriptor;\n const childRefs = ref.value && ref.value[Refs];\n if (childRefs) queue.push(...childRefs);\n }\n }\n return undefined;\n }\n });\n}\n//# sourceMappingURL=forwardRefs.mjs.map","// Utilities\nimport { computed, inject } from 'vue';\nimport { useRtl } from \"./locale.mjs\";\nimport { clamp, consoleWarn, mergeDeep, refElement } from \"../util/index.mjs\"; // Types\nexport const GoToSymbol = Symbol.for('vuetify:goto');\nfunction genDefaults() {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: t => t,\n easeInQuad: t => t ** 2,\n easeOutQuad: t => t * (2 - t),\n easeInOutQuad: t => t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t,\n easeInCubic: t => t ** 3,\n easeOutCubic: t => --t ** 3 + 1,\n easeInOutCubic: t => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: t => t ** 4,\n easeOutQuart: t => 1 - --t ** 4,\n easeInOutQuart: t => t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4,\n easeInQuint: t => t ** 5,\n easeOutQuint: t => 1 + --t ** 5,\n easeInOutQuint: t => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5\n }\n };\n}\nfunction getContainer(el) {\n return getTarget(el) ?? (document.scrollingElement || document.body);\n}\nfunction getTarget(el) {\n return typeof el === 'string' ? document.querySelector(el) : refElement(el);\n}\nfunction getOffset(target, horizontal, rtl) {\n if (typeof target === 'number') return horizontal && rtl ? -target : target;\n let el = getTarget(target);\n let totalOffset = 0;\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop;\n el = el.offsetParent;\n }\n return totalOffset;\n}\nexport function createGoTo(options, locale) {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options)\n };\n}\nexport async function scrollTo(_target, _options, horizontal, goTo) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop';\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options);\n const rtl = goTo?.rtl.value;\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0;\n const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`);\n let targetLocation;\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl);\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl);\n if (options.layout) {\n const styles = window.getComputedStyle(target);\n const layoutOffset = styles.getPropertyValue('--v-layout-top');\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10);\n }\n }\n targetLocation += options.offset;\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal);\n const startLocation = container[property] ?? 0;\n if (targetLocation === startLocation) return Promise.resolve(targetLocation);\n const startTime = performance.now();\n return new Promise(resolve => requestAnimationFrame(function step(currentTime) {\n const timeElapsed = currentTime - startTime;\n const progress = timeElapsed / options.duration;\n const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(clamp(progress, 0, 1)));\n container[property] = location;\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation);\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable');\n return resolve(container[property]);\n }\n requestAnimationFrame(step);\n }));\n}\nexport function useGoTo() {\n let _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const goToInstance = inject(GoToSymbol);\n const {\n isRtl\n } = useRtl();\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance');\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: computed(() => goToInstance.rtl.value || isRtl.value)\n };\n async function go(target, options) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo);\n }\n go.horizontal = async (target, options) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo);\n };\n return go;\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget(container, value, rtl, horizontal) {\n const {\n scrollWidth,\n scrollHeight\n } = container;\n const [containerWidth, containerHeight] = container === document.scrollingElement ? [window.innerWidth, window.innerHeight] : [container.offsetWidth, container.offsetHeight];\n let min;\n let max;\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth);\n max = 0;\n } else {\n min = 0;\n max = scrollWidth - containerWidth;\n }\n } else {\n min = 0;\n max = scrollHeight + -containerHeight;\n }\n return Math.max(Math.min(value, max), min);\n}\n//# sourceMappingURL=goto.mjs.map","// Composables\nimport { useDisplay } from \"./display.mjs\"; // Utilities\nimport { onMounted, shallowRef } from 'vue';\nimport { IN_BROWSER } from \"../util/index.mjs\";\nexport function useHydration() {\n if (!IN_BROWSER) return shallowRef(false);\n const {\n ssr\n } = useDisplay();\n if (ssr) {\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n } else {\n return shallowRef(true);\n }\n}\n//# sourceMappingURL=hydration.mjs.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Icons\nimport { aliases, mdi } from \"../iconsets/mdi.mjs\"; // Utilities\nimport { computed, inject, unref } from 'vue';\nimport { consoleWarn, defineComponent, genericComponent, mergeDeep, propsFactory } from \"../util/index.mjs\"; // Types\nexport const IconValue = [String, Function, Object, Array];\nexport const IconSymbol = Symbol.for('vuetify:icons');\nexport const makeIconProps = propsFactory({\n icon: {\n type: IconValue\n },\n // Could not remove this and use makeTagProps, types complained because it is not required\n tag: {\n type: String,\n required: true\n }\n}, 'icon');\nexport const VComponentIcon = genericComponent()({\n name: 'VComponentIcon',\n props: makeIconProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n return () => {\n const Icon = props.icon;\n return _createVNode(props.tag, null, {\n default: () => [props.icon ? _createVNode(Icon, null, null) : slots.default?.()]\n });\n };\n }\n});\nexport const VSvgIcon = defineComponent({\n name: 'VSvgIcon',\n inheritAttrs: false,\n props: makeIconProps(),\n setup(props, _ref2) {\n let {\n attrs\n } = _ref2;\n return () => {\n return _createVNode(props.tag, _mergeProps(attrs, {\n \"style\": null\n }), {\n default: () => [_createVNode(\"svg\", {\n \"class\": \"v-icon__svg\",\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 24 24\",\n \"role\": \"img\",\n \"aria-hidden\": \"true\"\n }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? _createVNode(\"path\", {\n \"d\": path[0],\n \"fill-opacity\": path[1]\n }, null) : _createVNode(\"path\", {\n \"d\": path\n }, null)) : _createVNode(\"path\", {\n \"d\": props.icon\n }, null)])]\n });\n };\n }\n});\nexport const VLigatureIcon = defineComponent({\n name: 'VLigatureIcon',\n props: makeIconProps(),\n setup(props) {\n return () => {\n return _createVNode(props.tag, null, {\n default: () => [props.icon]\n });\n };\n }\n});\nexport const VClassIcon = defineComponent({\n name: 'VClassIcon',\n props: makeIconProps(),\n setup(props) {\n return () => {\n return _createVNode(props.tag, {\n \"class\": props.icon\n }, null);\n };\n }\n});\nfunction genDefaults() {\n return {\n svg: {\n component: VSvgIcon\n },\n class: {\n component: VClassIcon\n }\n };\n}\n\n// Composables\nexport function createIcons(options) {\n const sets = genDefaults();\n const defaultSet = options?.defaultSet ?? 'mdi';\n if (defaultSet === 'mdi' && !sets.mdi) {\n sets.mdi = mdi;\n }\n return mergeDeep({\n defaultSet,\n sets,\n aliases: {\n ...aliases,\n /* eslint-disable max-len */\n vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],\n 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',\n 'vuetify-play': ['m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z', ['M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z', 0.6]]\n /* eslint-enable max-len */\n }\n }, options);\n}\nexport const useIcon = props => {\n const icons = inject(IconSymbol);\n if (!icons) throw new Error('Missing Vuetify Icons provide!');\n const iconData = computed(() => {\n const iconAlias = unref(props);\n if (!iconAlias) return {\n component: VComponentIcon\n };\n let icon = iconAlias;\n if (typeof icon === 'string') {\n icon = icon.trim();\n if (icon.startsWith('$')) {\n icon = icons.aliases?.[icon.slice(1)];\n }\n }\n if (!icon) consoleWarn(`Could not find aliased icon \"${iconAlias}\"`);\n if (Array.isArray(icon)) {\n return {\n component: VSvgIcon,\n icon\n };\n } else if (typeof icon !== 'string') {\n return {\n component: VComponentIcon,\n icon\n };\n }\n const iconSetName = Object.keys(icons.sets).find(setName => typeof icon === 'string' && icon.startsWith(`${setName}:`));\n const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;\n const iconSet = icons.sets[iconSetName ?? icons.defaultSet];\n return {\n component: iconSet.component,\n icon: iconName\n };\n });\n return {\n iconData\n };\n};\n//# sourceMappingURL=icons.mjs.map","// Utilities\nimport { computed, shallowRef, watch } from 'vue';\nimport { propsFactory } from \"../util/index.mjs\"; // Types\nexport const makeLazyProps = propsFactory({\n eager: Boolean\n}, 'lazy');\nexport function useLazy(props, active) {\n const isBooted = shallowRef(false);\n const hasContent = computed(() => isBooted.value || props.eager || active.value);\n watch(active, () => isBooted.value = true);\n function onAfterLeave() {\n if (!props.eager) isBooted.value = false;\n }\n return {\n isBooted,\n hasContent,\n onAfterLeave\n };\n}\n//# sourceMappingURL=lazy.mjs.map","export default {\n badge: 'Badge',\n open: 'Open',\n close: 'Close',\n dismiss: 'Dismiss',\n confirmEdit: {\n ok: 'OK',\n cancel: 'Cancel'\n },\n dataIterator: {\n noResultsText: 'No matching records found',\n loadingText: 'Loading items...'\n },\n dataTable: {\n itemsPerPageText: 'Rows per page:',\n ariaLabel: {\n sortDescending: 'Sorted descending.',\n sortAscending: 'Sorted ascending.',\n sortNone: 'Not sorted.',\n activateNone: 'Activate to remove sorting.',\n activateDescending: 'Activate to sort descending.',\n activateAscending: 'Activate to sort ascending.'\n },\n sortBy: 'Sort by'\n },\n dataFooter: {\n itemsPerPageText: 'Items per page:',\n itemsPerPageAll: 'All',\n nextPage: 'Next page',\n prevPage: 'Previous page',\n firstPage: 'First page',\n lastPage: 'Last page',\n pageText: '{0}-{1} of {2}'\n },\n dateRangeInput: {\n divider: 'to'\n },\n datePicker: {\n itemsSelected: '{0} selected',\n range: {\n title: 'Select dates',\n header: 'Enter dates'\n },\n title: 'Select date',\n header: 'Enter date',\n input: {\n placeholder: 'Enter date'\n }\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual',\n ariaLabel: {\n delimiter: 'Carousel slide {0} of {1}'\n }\n },\n calendar: {\n moreEvents: '{0} more',\n today: 'Today'\n },\n input: {\n clear: 'Clear {0}',\n prependAction: '{0} prepended action',\n appendAction: '{0} appended action',\n otp: 'Please enter OTP character {0}'\n },\n fileInput: {\n counter: '{0} files',\n counterSize: '{0} files ({1} in total)'\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n title: 'Select Time'\n },\n pagination: {\n ariaLabel: {\n root: 'Pagination Navigation',\n next: 'Next page',\n previous: 'Previous page',\n page: 'Go to page {0}',\n currentPage: 'Page {0}, Current page',\n first: 'First page',\n last: 'Last page'\n }\n },\n stepper: {\n next: 'Next',\n prev: 'Previous'\n },\n rating: {\n ariaLabel: {\n item: 'Rating {0} of {1}'\n }\n },\n loading: 'Loading...',\n infiniteScroll: {\n loadMore: 'Load more',\n empty: 'No more'\n }\n};\n//# sourceMappingURL=en.mjs.map","// Composables\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\"; // Utilities\nimport { ref, shallowRef, watch } from 'vue';\nimport { consoleError, consoleWarn, getObjectValueByPath } from \"../../util/index.mjs\"; // Locales\nimport en from \"../en.mjs\"; // Types\nconst LANG_PREFIX = '$vuetify.';\nconst replace = (str, params) => {\n return str.replace(/\\{(\\d+)\\}/g, (match, index) => {\n return String(params[+index]);\n });\n};\nconst createTranslateFunction = (current, fallback, messages) => {\n return function (key) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n if (!key.startsWith(LANG_PREFIX)) {\n return replace(key, params);\n }\n const shortKey = key.replace(LANG_PREFIX, '');\n const currentLocale = current.value && messages.value[current.value];\n const fallbackLocale = fallback.value && messages.value[fallback.value];\n let str = getObjectValueByPath(currentLocale, shortKey, null);\n if (!str) {\n consoleWarn(`Translation key \"${key}\" not found in \"${current.value}\", trying fallback locale`);\n str = getObjectValueByPath(fallbackLocale, shortKey, null);\n }\n if (!str) {\n consoleError(`Translation key \"${key}\" not found in fallback`);\n str = key;\n }\n if (typeof str !== 'string') {\n consoleError(`Translation key \"${key}\" has a non-string value`);\n str = key;\n }\n return replace(str, params);\n };\n};\nfunction createNumberFunction(current, fallback) {\n return (value, options) => {\n const numberFormat = new Intl.NumberFormat([current.value, fallback.value], options);\n return numberFormat.format(value);\n };\n}\nfunction useProvided(props, prop, provided) {\n const internal = useProxiedModel(props, prop, props[prop] ?? provided.value);\n\n // TODO: Remove when defaultValue works\n internal.value = props[prop] ?? provided.value;\n watch(provided, v => {\n if (props[prop] == null) {\n internal.value = provided.value;\n }\n });\n return internal;\n}\nfunction createProvideFunction(state) {\n return props => {\n const current = useProvided(props, 'locale', state.current);\n const fallback = useProvided(props, 'fallback', state.fallback);\n const messages = useProvided(props, 'messages', state.messages);\n return {\n name: 'vuetify',\n current,\n fallback,\n messages,\n t: createTranslateFunction(current, fallback, messages),\n n: createNumberFunction(current, fallback),\n provide: createProvideFunction({\n current,\n fallback,\n messages\n })\n };\n };\n}\nexport function createVuetifyAdapter(options) {\n const current = shallowRef(options?.locale ?? 'en');\n const fallback = shallowRef(options?.fallback ?? 'en');\n const messages = ref({\n en,\n ...options?.messages\n });\n return {\n name: 'vuetify',\n current,\n fallback,\n messages,\n t: createTranslateFunction(current, fallback, messages),\n n: createNumberFunction(current, fallback),\n provide: createProvideFunction({\n current,\n fallback,\n messages\n })\n };\n}\n//# sourceMappingURL=vuetify.mjs.map","// Utilities\nimport { computed, inject, provide, ref } from 'vue';\nimport { createVuetifyAdapter } from \"../locale/adapters/vuetify.mjs\"; // Types\nexport const LocaleSymbol = Symbol.for('vuetify:locale');\nfunction isLocaleInstance(obj) {\n return obj.name != null;\n}\nexport function createLocale(options) {\n const i18n = options?.adapter && isLocaleInstance(options?.adapter) ? options?.adapter : createVuetifyAdapter(options);\n const rtl = createRtl(i18n, options);\n return {\n ...i18n,\n ...rtl\n };\n}\nexport function useLocale() {\n const locale = inject(LocaleSymbol);\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance');\n return locale;\n}\nexport function provideLocale(props) {\n const locale = inject(LocaleSymbol);\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance');\n const i18n = locale.provide(props);\n const rtl = provideRtl(i18n, locale.rtl, props);\n const data = {\n ...i18n,\n ...rtl\n };\n provide(LocaleSymbol, data);\n return data;\n}\n\n// RTL\n\nexport const RtlSymbol = Symbol.for('vuetify:rtl');\nfunction genDefaults() {\n return {\n af: false,\n ar: true,\n bg: false,\n ca: false,\n ckb: false,\n cs: false,\n de: false,\n el: false,\n en: false,\n es: false,\n et: false,\n fa: true,\n fi: false,\n fr: false,\n hr: false,\n hu: false,\n he: true,\n id: false,\n it: false,\n ja: false,\n km: false,\n ko: false,\n lv: false,\n lt: false,\n nl: false,\n no: false,\n pl: false,\n pt: false,\n ro: false,\n ru: false,\n sk: false,\n sl: false,\n srCyrl: false,\n srLatn: false,\n sv: false,\n th: false,\n tr: false,\n az: false,\n uk: false,\n vi: false,\n zhHans: false,\n zhHant: false\n };\n}\nexport function createRtl(i18n, options) {\n const rtl = ref(options?.rtl ?? genDefaults());\n const isRtl = computed(() => rtl.value[i18n.current.value] ?? false);\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)\n };\n}\nexport function provideRtl(locale, rtl, props) {\n const isRtl = computed(() => props.rtl ?? rtl.value[locale.current.value] ?? false);\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)\n };\n}\nexport function useRtl() {\n const locale = inject(LocaleSymbol);\n if (!locale) throw new Error('[Vuetify] Could not find injected rtl instance');\n return {\n isRtl: locale.isRtl,\n rtlClasses: locale.rtlClasses\n };\n}\n//# sourceMappingURL=locale.mjs.map","// Composables\nimport { useToggleScope } from \"./toggleScope.mjs\"; // Utilities\nimport { computed, ref, toRaw, watch } from 'vue';\nimport { getCurrentInstance, toKebabCase } from \"../util/index.mjs\"; // Types\n// Composables\nexport function useProxiedModel(props, prop, defaultValue) {\n let transformIn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : v => v;\n let transformOut = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : v => v;\n const vm = getCurrentInstance('useProxiedModel');\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue);\n const kebabProp = toKebabCase(prop);\n const checkKebab = kebabProp !== prop;\n const isControlled = checkKebab ? computed(() => {\n void props[prop];\n return !!((vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) && (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`)));\n }) : computed(() => {\n void props[prop];\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`));\n });\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val;\n });\n });\n const model = computed({\n get() {\n const externalValue = props[prop];\n return transformIn(isControlled.value ? externalValue : internal.value);\n },\n set(internalValue) {\n const newValue = transformOut(internalValue);\n const value = toRaw(isControlled.value ? props[prop] : internal.value);\n if (value === newValue || transformIn(value) === internalValue) {\n return;\n }\n internal.value = newValue;\n vm?.emit(`update:${prop}`, newValue);\n }\n });\n Object.defineProperty(model, 'externalValue', {\n get: () => isControlled.value ? props[prop] : internal.value\n });\n return model;\n}\n//# sourceMappingURL=proxiedModel.mjs.map","// Utilities\nimport { computed, nextTick, onScopeDispose, reactive, resolveDynamicComponent, toRef } from 'vue';\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from \"../util/index.mjs\"; // Types\nexport function useRoute() {\n const vm = getCurrentInstance('useRoute');\n return computed(() => vm?.proxy?.$route);\n}\nexport function useRouter() {\n return getCurrentInstance('useRouter')?.proxy?.$router;\n}\nexport function useLink(props, attrs) {\n const RouterLink = resolveDynamicComponent('RouterLink');\n const isLink = computed(() => !!(props.href || props.to));\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');\n });\n if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {\n const href = toRef(props, 'href');\n return {\n isLink,\n isClickable,\n href,\n linkProps: reactive({\n href\n })\n };\n }\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const linkProps = computed(() => ({\n ...props,\n to: toRef(() => props.to || '')\n }));\n const routerLink = RouterLink.useLink(linkProps.value);\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined);\n const route = useRoute();\n const isActive = computed(() => {\n if (!link.value) return false;\n if (!props.exact) return link.value.isActive?.value ?? false;\n if (!route.value) return link.value.isExactActive?.value ?? false;\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);\n });\n const href = computed(() => props.to ? link.value?.route.value.href : props.href);\n return {\n isLink,\n isClickable,\n isActive,\n route: link.value?.route,\n navigate: link.value?.navigate,\n href,\n linkProps: reactive({\n href,\n 'aria-current': computed(() => isActive.value ? 'page' : undefined)\n })\n };\n}\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object],\n exact: Boolean\n}, 'router');\nlet inTransition = false;\nexport function useBackButton(router, cb) {\n let popped = false;\n let removeBefore;\n let removeAfter;\n if (IN_BROWSER) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate);\n removeBefore = router?.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next());\n } else {\n popped ? cb(next) : next();\n }\n inTransition = true;\n });\n removeAfter = router?.afterEach(() => {\n inTransition = false;\n });\n });\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate);\n removeBefore?.();\n removeAfter?.();\n });\n }\n function onPopstate(e) {\n if (e.state?.replaced) return;\n popped = true;\n setTimeout(() => popped = false);\n }\n}\n//# sourceMappingURL=router.mjs.map","// Utilities\nimport { getCurrentInstance } from \"../util/index.mjs\";\nexport function useScopeId() {\n const vm = getCurrentInstance('useScopeId');\n const scopeId = vm.vnode.scopeId;\n return {\n scopeId: scopeId ? {\n [scopeId]: ''\n } : undefined\n };\n}\n//# sourceMappingURL=scopeId.mjs.map","// Utilities\nimport { computed, inject, provide, ref, watch, watchEffect } from 'vue';\nimport { createRange, darken, getCurrentInstance, getForeground, getLuma, IN_BROWSER, lighten, mergeDeep, parseColor, propsFactory, RGBtoHex } from \"../util/index.mjs\"; // Types\nexport const ThemeSymbol = Symbol.for('vuetify:theme');\nexport const makeThemeProps = propsFactory({\n theme: String\n}, 'theme');\nfunction genDefaults() {\n return {\n defaultTheme: 'light',\n variations: {\n colors: [],\n lighten: 0,\n darken: 0\n },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-bright': '#FFFFFF',\n 'surface-light': '#EEEEEE',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#1867C0',\n 'primary-darken-1': '#1F5592',\n secondary: '#48A9A6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00'\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000'\n }\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-bright': '#ccbfd6',\n 'surface-light': '#424242',\n 'surface-variant': '#a3a3a3',\n 'on-surface-variant': '#424242',\n primary: '#2196F3',\n 'primary-darken-1': '#277CC1',\n secondary: '#54B6B2',\n 'secondary-darken-1': '#48A9A6',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00'\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC'\n }\n }\n }\n };\n}\nfunction parseThemeOptions() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults();\n const defaults = genDefaults();\n if (!options) return {\n ...defaults,\n isDisabled: true\n };\n const themes = {};\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark' ? defaults.themes?.dark : defaults.themes?.light;\n themes[key] = mergeDeep(defaultTheme, theme);\n }\n return mergeDeep(defaults, {\n ...options,\n themes\n });\n}\n\n// Composables\nexport function createTheme(options) {\n const parsedOptions = parseThemeOptions(options);\n const name = ref(parsedOptions.defaultTheme);\n const themes = ref(parsedOptions.themes);\n const computedThemes = computed(() => {\n const acc = {};\n for (const [name, original] of Object.entries(themes.value)) {\n const theme = acc[name] = {\n ...original,\n colors: {\n ...original.colors\n }\n };\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name];\n if (!color) continue;\n for (const variation of ['lighten', 'darken']) {\n const fn = variation === 'lighten' ? lighten : darken;\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));\n }\n }\n }\n }\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;\n const onColor = `on-${color}`;\n const colorVal = parseColor(theme.colors[color]);\n theme.colors[onColor] = getForeground(colorVal);\n }\n }\n return acc;\n });\n const current = computed(() => computedThemes.value[name.value]);\n const styles = computed(() => {\n const lines = [];\n if (current.value?.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark']);\n }\n createCssClass(lines, ':root', genCssVariables(current.value));\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)]);\n }\n const bgLines = [];\n const fgLines = [];\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);\n } else {\n createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`]);\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`]);\n }\n }\n lines.push(...bgLines, ...fgLines);\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');\n });\n function getHead() {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false\n }]\n };\n }\n function install(app) {\n if (parsedOptions.isDisabled) return;\n const head = app._context.provides.usehead;\n if (head) {\n if (head.push) {\n const entry = head.push(getHead);\n if (IN_BROWSER) {\n watch(styles, () => {\n entry.patch(getHead);\n });\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead));\n watchEffect(() => head.updateDOM());\n } else {\n head.addHeadObjs(getHead());\n }\n }\n } else {\n let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;\n if (IN_BROWSER) {\n watch(styles, updateStyles, {\n immediate: true\n });\n } else {\n updateStyles();\n }\n function updateStyles() {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style');\n el.type = 'text/css';\n el.id = 'vuetify-theme-stylesheet';\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce);\n styleEl = el;\n document.head.appendChild(styleEl);\n }\n if (styleEl) styleEl.innerHTML = styles.value;\n }\n }\n }\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current\n }\n };\n}\nexport function provideTheme(props) {\n getCurrentInstance('provideTheme');\n const theme = inject(ThemeSymbol, null);\n if (!theme) throw new Error('Could not find Vuetify theme injection');\n const name = computed(() => {\n return props.theme ?? theme.name.value;\n });\n const current = computed(() => theme.themes.value[name.value]);\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);\n const newTheme = {\n ...theme,\n name,\n current,\n themeClasses\n };\n provide(ThemeSymbol, newTheme);\n return newTheme;\n}\nexport function useTheme() {\n getCurrentInstance('useTheme');\n const theme = inject(ThemeSymbol, null);\n if (!theme) throw new Error('Could not find Vuetify theme injection');\n return theme;\n}\nfunction createCssClass(lines, selector, content) {\n lines.push(`${selector} {\\n`, ...content.map(line => ` ${line};\\n`), '}\\n');\n}\nfunction genCssVariables(theme) {\n const lightOverlay = theme.dark ? 2 : 1;\n const darkOverlay = theme.dark ? 1 : 2;\n const variables = [];\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value);\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);\n }\n }\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;\n variables.push(`--v-${key}: ${rgb ?? value}`);\n }\n return variables;\n}\n//# sourceMappingURL=theme.mjs.map","// Utilities\nimport { effectScope, onScopeDispose, watch } from 'vue';\n\n// Types\n\nexport function useToggleScope(source, fn) {\n let scope;\n function start() {\n scope = effectScope();\n scope.run(() => fn.length ? fn(() => {\n scope?.stop();\n start();\n }) : fn());\n }\n watch(source, active => {\n if (active && !scope) {\n start();\n } else if (!active) {\n scope?.stop();\n scope = undefined;\n }\n }, {\n immediate: true\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n}\n//# sourceMappingURL=toggleScope.mjs.map","// Utilities\nimport { h, mergeProps, Transition, TransitionGroup } from 'vue';\nimport { propsFactory } from \"../util/index.mjs\"; // Types\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: [Boolean, String, Object],\n default: 'fade-transition',\n validator: val => val !== true\n }\n}, 'transition');\nexport const MaybeTransition = (props, _ref) => {\n let {\n slots\n } = _ref;\n const {\n transition,\n disabled,\n group,\n ...rest\n } = props;\n const {\n component = group ? TransitionGroup : Transition,\n ...customProps\n } = typeof transition === 'object' ? transition : {};\n return h(component, mergeProps(typeof transition === 'string' ? {\n name: disabled ? '' : transition\n } : customProps, typeof transition === 'string' ? {} : Object.fromEntries(Object.entries({\n disabled,\n group\n }).filter(_ref2 => {\n let [_, v] = _ref2;\n return v !== undefined;\n })), rest), slots);\n};\n//# sourceMappingURL=transition.mjs.map","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot(node) {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode;\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null;\n return document;\n }\n const root = node.getRootNode();\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({\n composed: true\n }) !== document) return null;\n return root;\n}\n//# sourceMappingURL=dom.mjs.map","// Utilities\nimport { attachedRoot } from \"../../util/index.mjs\"; // Types\nfunction defaultConditional() {\n return true;\n}\nfunction checkEvent(e, el, binding) {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false;\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === e.target) return false;\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = (typeof binding.value === 'object' && binding.value.include || (() => []))();\n // Add the root element for the component this directive was defined on\n elements.push(el);\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target));\n}\nfunction checkIsActive(e, binding) {\n const isActive = typeof binding.value === 'object' && binding.value.closeConditional || defaultConditional;\n return isActive(e);\n}\nfunction directive(e, el, binding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;\n\n // Clicks in the Shadow DOM change their target while using setTimeout, so the original target is saved here\n e.shadowTarget = e.target;\n el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e);\n }, 0);\n}\nfunction handleShadow(el, callback) {\n const root = attachedRoot(el);\n callback(document);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root);\n }\n}\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted(el, binding) {\n const onClick = e => directive(e, el, binding);\n const onMousedown = e => {\n el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);\n };\n handleShadow(el, app => {\n app.addEventListener('click', onClick, true);\n app.addEventListener('mousedown', onMousedown, true);\n });\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false\n };\n }\n el._clickOutside[binding.instance.$.uid] = {\n onClick,\n onMousedown\n };\n },\n beforeUnmount(el, binding) {\n if (!el._clickOutside) return;\n handleShadow(el, app => {\n if (!app || !el._clickOutside?.[binding.instance.$.uid]) return;\n const {\n onClick,\n onMousedown\n } = el._clickOutside[binding.instance.$.uid];\n app.removeEventListener('click', onClick, true);\n app.removeEventListener('mousedown', onMousedown, true);\n });\n delete el._clickOutside[binding.instance.$.uid];\n }\n};\nexport default ClickOutside;\n//# sourceMappingURL=index.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const modifiers = binding.modifiers || {};\n const value = binding.value;\n const {\n once,\n immediate,\n ...modifierKeys\n } = modifiers;\n const defaultValue = !Object.keys(modifierKeys).length;\n const {\n handler,\n options\n } = typeof value === 'object' ? value : {\n handler: value,\n options: {\n attributes: modifierKeys?.attr ?? defaultValue,\n characterData: modifierKeys?.char ?? defaultValue,\n childList: modifierKeys?.child ?? defaultValue,\n subtree: modifierKeys?.sub ?? defaultValue\n }\n };\n const observer = new MutationObserver(function () {\n let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let observer = arguments.length > 1 ? arguments[1] : undefined;\n handler?.(mutations, observer);\n if (once) unmounted(el, binding);\n });\n if (immediate) handler?.([], observer);\n el._mutate = Object(el._mutate);\n el._mutate[binding.instance.$.uid] = {\n observer\n };\n observer.observe(el, options);\n}\nfunction unmounted(el, binding) {\n if (!el._mutate?.[binding.instance.$.uid]) return;\n el._mutate[binding.instance.$.uid].observer.disconnect();\n delete el._mutate[binding.instance.$.uid];\n}\nexport const Mutate = {\n mounted,\n unmounted\n};\nexport default Mutate;\n//# sourceMappingURL=index.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const handler = binding.value;\n const options = {\n passive: !binding.modifiers?.active\n };\n window.addEventListener('resize', handler, options);\n el._onResize = Object(el._onResize);\n el._onResize[binding.instance.$.uid] = {\n handler,\n options\n };\n if (!binding.modifiers?.quiet) {\n handler();\n }\n}\nfunction unmounted(el, binding) {\n if (!el._onResize?.[binding.instance.$.uid]) return;\n const {\n handler,\n options\n } = el._onResize[binding.instance.$.uid];\n window.removeEventListener('resize', handler, options);\n delete el._onResize[binding.instance.$.uid];\n}\nexport const Resize = {\n mounted,\n unmounted\n};\nexport default Resize;\n//# sourceMappingURL=index.mjs.map","// Types\n\nfunction mounted(el, binding) {\n const {\n self = false\n } = binding.modifiers ?? {};\n const value = binding.value;\n const options = typeof value === 'object' && value.options || {\n passive: true\n };\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;\n const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;\n if (!target) return;\n target.addEventListener('scroll', handler, options);\n el._onScroll = Object(el._onScroll);\n el._onScroll[binding.instance.$.uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target\n };\n}\nfunction unmounted(el, binding) {\n if (!el._onScroll?.[binding.instance.$.uid]) return;\n const {\n handler,\n options,\n target = el\n } = el._onScroll[binding.instance.$.uid];\n target.removeEventListener('scroll', handler, options);\n delete el._onScroll[binding.instance.$.uid];\n}\nfunction updated(el, binding) {\n if (binding.value === binding.oldValue) return;\n unmounted(el, binding);\n mounted(el, binding);\n}\nexport const Scroll = {\n mounted,\n unmounted,\n updated\n};\nexport default Scroll;\n//# sourceMappingURL=index.mjs.map","// Utilities\nimport { h, mergeProps, render, resolveComponent } from 'vue';\nimport { consoleError, isObject } from \"../util/index.mjs\"; // Types\nexport function useDirectiveComponent(component, props) {\n const concreteComponent = typeof component === 'string' ? resolveComponent(component) : component;\n const hook = mountComponent(concreteComponent, props);\n return {\n mounted: hook,\n updated: hook,\n unmounted(el) {\n render(null, el);\n }\n };\n}\nfunction mountComponent(component, props) {\n return function (el, binding, vnode) {\n const _props = typeof props === 'function' ? props(binding) : props;\n const text = binding.value?.text ?? binding.value ?? _props?.text;\n const value = isObject(binding.value) ? binding.value : {};\n\n // Get the children from the props or directive value, or the element's children\n const children = () => text ?? el.textContent;\n\n // If vnode.ctx is the same as the instance, then we're bound to a plain element\n // and need to find the nearest parent component instance to inherit provides from\n const provides = (vnode.ctx === binding.instance.$ ? findComponentParent(vnode, binding.instance.$)?.provides : vnode.ctx?.provides) ?? binding.instance.$.provides;\n const node = h(component, mergeProps(_props, value), children);\n node.appContext = Object.assign(Object.create(null), binding.instance.$.appContext, {\n provides\n });\n render(node, el);\n };\n}\nfunction findComponentParent(vnode, root) {\n // Walk the tree from root until we find the child vnode\n const stack = new Set();\n const walk = children => {\n for (const child of children) {\n if (!child) continue;\n if (child === vnode || child.el && vnode.el && child.el === vnode.el) {\n return true;\n }\n stack.add(child);\n let result;\n if (child.suspense) {\n result = walk([child.ssContent]);\n } else if (Array.isArray(child.children)) {\n result = walk(child.children);\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree]);\n }\n if (result) {\n return result;\n }\n stack.delete(child);\n }\n return false;\n };\n if (!walk([root.subTree])) {\n consoleError('Could not find original vnode, component will not inherit provides');\n return root;\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse();\n for (const child of result) {\n if (child.component) {\n return child.component;\n }\n }\n return root;\n}\n//# sourceMappingURL=directiveComponent.mjs.map","// Components\nimport { VTooltip } from \"../../components/VTooltip/index.mjs\"; // Composables\nimport { useDirectiveComponent } from \"../../composables/directiveComponent.mjs\"; // Types\nexport const Tooltip = useDirectiveComponent(VTooltip, binding => {\n return {\n activator: 'parent',\n location: binding.arg?.replace('-', ' '),\n text: typeof binding.value === 'boolean' ? undefined : binding.value\n };\n});\nexport default Tooltip;\n//# sourceMappingURL=index.mjs.map","// Utilities\nimport { SUPPORTS_INTERSECTION } from \"../../util/index.mjs\"; // Types\nfunction mounted(el, binding) {\n if (!SUPPORTS_INTERSECTION) return;\n const modifiers = binding.modifiers || {};\n const value = binding.value;\n const {\n handler,\n options\n } = typeof value === 'object' ? value : {\n handler: value,\n options: {}\n };\n const observer = new IntersectionObserver(function () {\n let entries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let observer = arguments.length > 1 ? arguments[1] : undefined;\n const _observe = el._observe?.[binding.instance.$.uid];\n if (!_observe) return; // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting);\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (handler && (!modifiers.quiet || _observe.init) && (!modifiers.once || isIntersecting || _observe.init)) {\n handler(isIntersecting, entries, observer);\n }\n if (isIntersecting && modifiers.once) unmounted(el, binding);else _observe.init = true;\n }, options);\n el._observe = Object(el._observe);\n el._observe[binding.instance.$.uid] = {\n init: false,\n observer\n };\n observer.observe(el);\n}\nfunction unmounted(el, binding) {\n const observe = el._observe?.[binding.instance.$.uid];\n if (!observe) return;\n observe.observer.unobserve(el);\n delete el._observe[binding.instance.$.uid];\n}\nexport const Intersect = {\n mounted,\n unmounted\n};\nexport default Intersect;\n//# sourceMappingURL=index.mjs.map","// Styles\nimport \"./VRipple.css\";\n\n// Utilities\nimport { isObject, keyCodes } from \"../../util/index.mjs\"; // Types\nconst stopSymbol = Symbol('rippleStop');\nconst DELAY_RIPPLE = 80;\nfunction transform(el, value) {\n el.style.transform = value;\n el.style.webkitTransform = value;\n}\nfunction isTouchEvent(e) {\n return e.constructor.name === 'TouchEvent';\n}\nfunction isKeyboardEvent(e) {\n return e.constructor.name === 'KeyboardEvent';\n}\nconst calculate = function (e, el) {\n let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let localX = 0;\n let localY = 0;\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect();\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e;\n localX = target.clientX - offset.left;\n localY = target.clientY - offset.top;\n }\n let radius = 0;\n let scale = 0.3;\n if (el._ripple?.circle) {\n scale = 0.15;\n radius = el.clientWidth / 2;\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4;\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2;\n }\n const centerX = `${(el.clientWidth - radius * 2) / 2}px`;\n const centerY = `${(el.clientHeight - radius * 2) / 2}px`;\n const x = value.center ? centerX : `${localX - radius}px`;\n const y = value.center ? centerY : `${localY - radius}px`;\n return {\n radius,\n scale,\n x,\n y,\n centerX,\n centerY\n };\n};\nconst ripples = {\n /* eslint-disable max-statements */\n show(e, el) {\n let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!el?._ripple?.enabled) {\n return;\n }\n const container = document.createElement('span');\n const animation = document.createElement('span');\n container.appendChild(animation);\n container.className = 'v-ripple__container';\n if (value.class) {\n container.className += ` ${value.class}`;\n }\n const {\n radius,\n scale,\n x,\n y,\n centerX,\n centerY\n } = calculate(e, el, value);\n const size = `${radius * 2}px`;\n animation.className = 'v-ripple__animation';\n animation.style.width = size;\n animation.style.height = size;\n el.appendChild(container);\n const computed = window.getComputedStyle(el);\n if (computed && computed.position === 'static') {\n el.style.position = 'relative';\n el.dataset.previousPosition = 'static';\n }\n animation.classList.add('v-ripple__animation--enter');\n animation.classList.add('v-ripple__animation--visible');\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);\n animation.dataset.activated = String(performance.now());\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter');\n animation.classList.add('v-ripple__animation--in');\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);\n }, 0);\n },\n hide(el) {\n if (!el?._ripple?.enabled) return;\n const ripples = el.getElementsByClassName('v-ripple__animation');\n if (ripples.length === 0) return;\n const animation = ripples[ripples.length - 1];\n if (animation.dataset.isHiding) return;else animation.dataset.isHiding = 'true';\n const diff = performance.now() - Number(animation.dataset.activated);\n const delay = Math.max(250 - diff, 0);\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in');\n animation.classList.add('v-ripple__animation--out');\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation');\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition;\n delete el.dataset.previousPosition;\n }\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode);\n }, 300);\n }, delay);\n }\n};\nfunction isRippleEnabled(value) {\n return typeof value === 'undefined' || !!value;\n}\nfunction rippleShow(e) {\n const value = {};\n const element = e.currentTarget;\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return;\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true;\n if (isTouchEvent(e)) {\n element._ripple.touched = true;\n element._ripple.isTouch = true;\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return;\n }\n value.center = element._ripple.centered || isKeyboardEvent(e);\n if (element._ripple.class) {\n value.class = element._ripple.class;\n }\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return;\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value);\n };\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit();\n element._ripple.showTimerCommit = null;\n }\n }, DELAY_RIPPLE);\n } else {\n ripples.show(e, element, value);\n }\n}\nfunction rippleStop(e) {\n e[stopSymbol] = true;\n}\nfunction rippleHide(e) {\n const element = e.currentTarget;\n if (!element?._ripple) return;\n window.clearTimeout(element._ripple.showTimer);\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit();\n element._ripple.showTimerCommit = null;\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e);\n });\n return;\n }\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false;\n }\n });\n ripples.hide(element);\n}\nfunction rippleCancelShow(e) {\n const element = e.currentTarget;\n if (!element?._ripple) return;\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null;\n }\n window.clearTimeout(element._ripple.showTimer);\n}\nlet keyboardRipple = false;\nfunction keyboardRippleShow(e) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true;\n rippleShow(e);\n }\n}\nfunction keyboardRippleHide(e) {\n keyboardRipple = false;\n rippleHide(e);\n}\nfunction focusRippleHide(e) {\n if (keyboardRipple) {\n keyboardRipple = false;\n rippleHide(e);\n }\n}\nfunction updateRipple(el, binding, wasEnabled) {\n const {\n value,\n modifiers\n } = binding;\n const enabled = isRippleEnabled(value);\n if (!enabled) {\n ripples.hide(el);\n }\n el._ripple = el._ripple ?? {};\n el._ripple.enabled = enabled;\n el._ripple.centered = modifiers.center;\n el._ripple.circle = modifiers.circle;\n if (isObject(value) && value.class) {\n el._ripple.class = value.class;\n }\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, {\n passive: true\n });\n el.addEventListener('mousedown', rippleStop);\n return;\n }\n el.addEventListener('touchstart', rippleShow, {\n passive: true\n });\n el.addEventListener('touchend', rippleHide, {\n passive: true\n });\n el.addEventListener('touchmove', rippleCancelShow, {\n passive: true\n });\n el.addEventListener('touchcancel', rippleHide);\n el.addEventListener('mousedown', rippleShow);\n el.addEventListener('mouseup', rippleHide);\n el.addEventListener('mouseleave', rippleHide);\n el.addEventListener('keydown', keyboardRippleShow);\n el.addEventListener('keyup', keyboardRippleHide);\n el.addEventListener('blur', focusRippleHide);\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, {\n passive: true\n });\n } else if (!enabled && wasEnabled) {\n removeListeners(el);\n }\n}\nfunction removeListeners(el) {\n el.removeEventListener('mousedown', rippleShow);\n el.removeEventListener('touchstart', rippleShow);\n el.removeEventListener('touchend', rippleHide);\n el.removeEventListener('touchmove', rippleCancelShow);\n el.removeEventListener('touchcancel', rippleHide);\n el.removeEventListener('mouseup', rippleHide);\n el.removeEventListener('mouseleave', rippleHide);\n el.removeEventListener('keydown', keyboardRippleShow);\n el.removeEventListener('keyup', keyboardRippleHide);\n el.removeEventListener('dragstart', rippleHide);\n el.removeEventListener('blur', focusRippleHide);\n}\nfunction mounted(el, binding) {\n updateRipple(el, binding, false);\n}\nfunction unmounted(el) {\n delete el._ripple;\n removeListeners(el);\n}\nfunction updated(el, binding) {\n if (binding.value === binding.oldValue) {\n return;\n }\n const wasEnabled = isRippleEnabled(binding.oldValue);\n updateRipple(el, binding, wasEnabled);\n}\nexport const Ripple = {\n mounted,\n unmounted,\n updated\n};\nexport default Ripple;\n//# sourceMappingURL=index.mjs.map","// Utilities\nimport { keys } from \"../../util/index.mjs\"; // Types\nconst handleGesture = wrapper => {\n const {\n touchstartX,\n touchendX,\n touchstartY,\n touchendY\n } = wrapper;\n const dirRatio = 0.5;\n const minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\nfunction touchstart(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction touchend(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end?.({\n originalEvent: event,\n ...wrapper\n });\n handleGesture(wrapper);\n}\nfunction touchmove(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move?.({\n originalEvent: event,\n ...wrapper\n });\n}\nfunction createHandlers() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: e => touchstart(e, wrapper),\n touchend: e => touchend(e, wrapper),\n touchmove: e => touchmove(e, wrapper)\n };\n}\nfunction mounted(el, binding) {\n const value = binding.value;\n const target = value?.parent ? el.parentElement : el;\n const options = value?.options ?? {\n passive: true\n };\n const uid = binding.instance?.$.uid; // TODO: use custom uid generator\n\n if (!target || !uid) return;\n const handlers = createHandlers(binding.value);\n target._touchHandlers = target._touchHandlers ?? Object.create(null);\n target._touchHandlers[uid] = handlers;\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\nfunction unmounted(el, binding) {\n const target = binding.value?.parent ? el.parentElement : el;\n const uid = binding.instance?.$.uid;\n if (!target?._touchHandlers || !uid) return;\n const handlers = target._touchHandlers[uid];\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[uid];\n}\nexport const Touch = {\n mounted,\n unmounted\n};\nexport default Touch;\n//# sourceMappingURL=index.mjs.map","// Composables\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from \"./composables/date/date.mjs\";\nimport { createDefaults, DefaultsSymbol } from \"./composables/defaults.mjs\";\nimport { createDisplay, DisplaySymbol } from \"./composables/display.mjs\";\nimport { createGoTo, GoToSymbol } from \"./composables/goto.mjs\";\nimport { createIcons, IconSymbol } from \"./composables/icons.mjs\";\nimport { createLocale, LocaleSymbol } from \"./composables/locale.mjs\";\nimport { createTheme, ThemeSymbol } from \"./composables/theme.mjs\"; // Utilities\nimport { nextTick, reactive } from 'vue';\nimport { defineComponent, getUid, IN_BROWSER, mergeDeep } from \"./util/index.mjs\"; // Types\nexport * from \"./composables/index.mjs\";\nexport function createVuetify() {\n let vuetify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n blueprint,\n ...rest\n } = vuetify;\n const options = mergeDeep(blueprint, rest);\n const {\n aliases = {},\n components = {},\n directives = {}\n } = options;\n const defaults = createDefaults(options.defaults);\n const display = createDisplay(options.display, options.ssr);\n const theme = createTheme(options.theme);\n const icons = createIcons(options.icons);\n const locale = createLocale(options.locale);\n const date = createDate(options.date, locale);\n const goTo = createGoTo(options.goTo, locale);\n const install = app => {\n for (const key in directives) {\n app.directive(key, directives[key]);\n }\n for (const key in components) {\n app.component(key, components[key]);\n }\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name\n }));\n }\n theme.install(app);\n app.provide(DefaultsSymbol, defaults);\n app.provide(DisplaySymbol, display);\n app.provide(ThemeSymbol, theme);\n app.provide(IconSymbol, icons);\n app.provide(LocaleSymbol, locale);\n app.provide(DateOptionsSymbol, date.options);\n app.provide(DateAdapterSymbol, date.instance);\n app.provide(GoToSymbol, goTo);\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update();\n });\n } else {\n const {\n mount\n } = app;\n app.mount = function () {\n const vm = mount(...arguments);\n nextTick(() => display.update());\n app.mount = mount;\n return vm;\n };\n }\n }\n getUid.reset();\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify() {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol)\n });\n }\n }\n });\n }\n };\n return {\n install,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n goTo\n };\n}\nexport const version = \"3.7.4\";\ncreateVuetify.version = version;\n\n// Vue's inject() can only be used in setup\nfunction inject(key) {\n const vm = this.$;\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides;\n if (provides && key in provides) {\n return provides[key];\n }\n}\n//# sourceMappingURL=framework.mjs.map","// Composables\nimport { VClassIcon } from \"../composables/icons.mjs\"; // Utilities\nimport { h } from 'vue';\n\n// Types\n\nconst aliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle',\n // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle',\n // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper'\n};\nconst mdi = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: props => h(VClassIcon, {\n ...props,\n class: 'mdi'\n })\n};\nexport { aliases, mdi };\n//# sourceMappingURL=mdi.mjs.map","// Utilities\nimport { includes } from \"./helpers.mjs\";\nconst block = ['top', 'bottom'];\nconst inline = ['start', 'end', 'left', 'right'];\n/** Parse a raw anchor string into an object */\nexport function parseAnchor(anchor, isRtl) {\n let [side, align] = anchor.split(' ');\n if (!align) {\n align = includes(block, side) ? 'start' : includes(inline, side) ? 'top' : 'center';\n }\n return {\n side: toPhysical(side, isRtl),\n align: toPhysical(align, isRtl)\n };\n}\nexport function toPhysical(str, isRtl) {\n if (str === 'start') return isRtl ? 'right' : 'left';\n if (str === 'end') return isRtl ? 'left' : 'right';\n return str;\n}\nexport function flipSide(anchor) {\n return {\n side: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.side],\n align: anchor.align\n };\n}\nexport function flipAlign(anchor) {\n return {\n side: anchor.side,\n align: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.align]\n };\n}\nexport function flipCorner(anchor) {\n return {\n side: anchor.align,\n align: anchor.side\n };\n}\nexport function getAxis(anchor) {\n return includes(block, anchor.side) ? 'y' : 'x';\n}\n//# sourceMappingURL=anchor.mjs.map","// Utilities\nimport { Box } from \"./box.mjs\";\n/** @see https://stackoverflow.com/a/57876601/2074736 */\nexport function nullifyTransforms(el) {\n const rect = el.getBoundingClientRect();\n const style = getComputedStyle(el);\n const tx = style.transform;\n if (tx) {\n let ta, sx, sy, dx, dy;\n if (tx.startsWith('matrix3d(')) {\n ta = tx.slice(9, -1).split(/, /);\n sx = +ta[0];\n sy = +ta[5];\n dx = +ta[12];\n dy = +ta[13];\n } else if (tx.startsWith('matrix(')) {\n ta = tx.slice(7, -1).split(/, /);\n sx = +ta[0];\n sy = +ta[3];\n dx = +ta[4];\n dy = +ta[5];\n } else {\n return new Box(rect);\n }\n const to = style.transformOrigin;\n const x = rect.x - dx - (1 - sx) * parseFloat(to);\n const y = rect.y - dy - (1 - sy) * parseFloat(to.slice(to.indexOf(' ') + 1));\n const w = sx ? rect.width / sx : el.offsetWidth + 1;\n const h = sy ? rect.height / sy : el.offsetHeight + 1;\n return new Box({\n x,\n y,\n width: w,\n height: h\n });\n } else {\n return new Box(rect);\n }\n}\nexport function animate(el, keyframes, options) {\n if (typeof el.animate === 'undefined') return {\n finished: Promise.resolve()\n };\n let animation;\n try {\n animation = el.animate(keyframes, options);\n } catch (err) {\n return {\n finished: Promise.resolve()\n };\n }\n if (typeof animation.finished === 'undefined') {\n animation.finished = new Promise(resolve => {\n animation.onfinish = () => {\n resolve(animation);\n };\n });\n }\n return animation;\n}\n//# sourceMappingURL=animation.mjs.map","export class Box {\n constructor(_ref) {\n let {\n x,\n y,\n width,\n height\n } = _ref;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n get top() {\n return this.y;\n }\n get bottom() {\n return this.y + this.height;\n }\n get left() {\n return this.x;\n }\n get right() {\n return this.x + this.width;\n }\n}\nexport function getOverflow(a, b) {\n return {\n x: {\n before: Math.max(0, b.left - a.left),\n after: Math.max(0, a.right - b.right)\n },\n y: {\n before: Math.max(0, b.top - a.top),\n after: Math.max(0, a.bottom - b.bottom)\n }\n };\n}\nexport function getTargetBox(target) {\n if (Array.isArray(target)) {\n return new Box({\n x: target[0],\n y: target[1],\n width: 0,\n height: 0\n });\n } else {\n return target.getBoundingClientRect();\n }\n}\n//# sourceMappingURL=box.mjs.map","/**\n * WCAG 3.0 APCA perceptual contrast algorithm from https://github.com/Myndex/SAPC-APCA\n * @licence https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @see https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup\n */\n// Types\n\n// MAGICAL NUMBERS\n\n// sRGB Conversion to Relative Luminance (Y)\n\n// Transfer Curve (aka \"Gamma\") for sRGB linearization\n// Simple power curve vs piecewise described in docs\n// Essentially, 2.4 best models actual display\n// characteristics in combination with the total method\nconst mainTRC = 2.4;\nconst Rco = 0.2126729; // sRGB Red Coefficient (from matrix)\nconst Gco = 0.7151522; // sRGB Green Coefficient (from matrix)\nconst Bco = 0.0721750; // sRGB Blue Coefficient (from matrix)\n\n// For Finding Raw SAPC Contrast from Relative Luminance (Y)\n\n// Constants for SAPC Power Curve Exponents\n// One pair for normal text, and one for reverse\n// These are the \"beating heart\" of SAPC\nconst normBG = 0.55;\nconst normTXT = 0.58;\nconst revTXT = 0.57;\nconst revBG = 0.62;\n\n// For Clamping and Scaling Values\n\nconst blkThrs = 0.03; // Level that triggers the soft black clamp\nconst blkClmp = 1.45; // Exponent for the soft black clamp curve\nconst deltaYmin = 0.0005; // Lint trap\nconst scaleBoW = 1.25; // Scaling for dark text on light\nconst scaleWoB = 1.25; // Scaling for light text on dark\nconst loConThresh = 0.078; // Threshold for new simple offset scale\nconst loConFactor = 12.82051282051282; // = 1/0.078,\nconst loConOffset = 0.06; // The simple offset\nconst loClip = 0.001; // Output clip (lint trap #2)\n\nexport function APCAcontrast(text, background) {\n // Linearize sRGB\n const Rtxt = (text.r / 255) ** mainTRC;\n const Gtxt = (text.g / 255) ** mainTRC;\n const Btxt = (text.b / 255) ** mainTRC;\n const Rbg = (background.r / 255) ** mainTRC;\n const Gbg = (background.g / 255) ** mainTRC;\n const Bbg = (background.b / 255) ** mainTRC;\n\n // Apply the standard coefficients and sum to Y\n let Ytxt = Rtxt * Rco + Gtxt * Gco + Btxt * Bco;\n let Ybg = Rbg * Rco + Gbg * Gco + Bbg * Bco;\n\n // Soft clamp Y when near black.\n // Now clamping all colors to prevent crossover errors\n if (Ytxt <= blkThrs) Ytxt += (blkThrs - Ytxt) ** blkClmp;\n if (Ybg <= blkThrs) Ybg += (blkThrs - Ybg) ** blkClmp;\n\n // Return 0 Early for extremely low ∆Y (lint trap #1)\n if (Math.abs(Ybg - Ytxt) < deltaYmin) return 0.0;\n\n // SAPC CONTRAST\n\n let outputContrast; // For weighted final values\n if (Ybg > Ytxt) {\n // For normal polarity, black text on white\n // Calculate the SAPC contrast value and scale\n\n const SAPC = (Ybg ** normBG - Ytxt ** normTXT) * scaleBoW;\n\n // NEW! SAPC SmoothScale™\n // Low Contrast Smooth Scale Rollout to prevent polarity reversal\n // and also a low clip for very low contrasts (lint trap #2)\n // much of this is for very low contrasts, less than 10\n // therefore for most reversing needs, only loConOffset is important\n outputContrast = SAPC < loClip ? 0.0 : SAPC < loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC - loConOffset;\n } else {\n // For reverse polarity, light text on dark\n // WoB should always return negative value.\n\n const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;\n outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;\n }\n return outputContrast * 100;\n}\n//# sourceMappingURL=APCA.mjs.map","// Types\n\nconst delta = 0.20689655172413793; // 6÷29\n\nconst cielabForwardTransform = t => t > delta ** 3 ? Math.cbrt(t) : t / (3 * delta ** 2) + 4 / 29;\nconst cielabReverseTransform = t => t > delta ? t ** 3 : 3 * delta ** 2 * (t - 4 / 29);\nexport function fromXYZ(xyz) {\n const transform = cielabForwardTransform;\n const transformedY = transform(xyz[1]);\n return [116 * transformedY - 16, 500 * (transform(xyz[0] / 0.95047) - transformedY), 200 * (transformedY - transform(xyz[2] / 1.08883))];\n}\nexport function toXYZ(lab) {\n const transform = cielabReverseTransform;\n const Ln = (lab[0] + 16) / 116;\n return [transform(Ln + lab[1] / 500) * 0.95047, transform(Ln), transform(Ln - lab[2] / 200) * 1.08883];\n}\n//# sourceMappingURL=transformCIELAB.mjs.map","// Utilities\nimport { clamp } from \"../helpers.mjs\"; // Types\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.2040, 1.0570]];\n\n// Forward gamma adjust\nconst srgbForwardTransform = C => C <= 0.0031308 ? C * 12.92 : 1.055 * C ** (1 / 2.4) - 0.055;\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [[0.4124, 0.3576, 0.1805], [0.2126, 0.7152, 0.0722], [0.0193, 0.1192, 0.9505]];\n\n// Reverse gamma adjust\nconst srgbReverseTransform = C => C <= 0.04045 ? C / 12.92 : ((C + 0.055) / 1.055) ** 2.4;\nexport function fromXYZ(xyz) {\n const rgb = Array(3);\n const transform = srgbForwardTransform;\n const matrix = srgbForwardMatrix;\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n // Rescale back to [0, 255]\n rgb[i] = Math.round(clamp(transform(matrix[i][0] * xyz[0] + matrix[i][1] * xyz[1] + matrix[i][2] * xyz[2])) * 255);\n }\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2]\n };\n}\nexport function toXYZ(_ref) {\n let {\n r,\n g,\n b\n } = _ref;\n const xyz = [0, 0, 0];\n const transform = srgbReverseTransform;\n const matrix = srgbReverseMatrix;\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n r = transform(r / 255);\n g = transform(g / 255);\n b = transform(b / 255);\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b;\n }\n return xyz;\n}\n//# sourceMappingURL=transformSRGB.mjs.map","// Utilities\nimport { APCAcontrast } from \"./color/APCA.mjs\";\nimport { consoleWarn } from \"./console.mjs\";\nimport { chunk, has, padEnd } from \"./helpers.mjs\";\nimport * as CIELAB from \"./color/transformCIELAB.mjs\";\nimport * as sRGB from \"./color/transformSRGB.mjs\"; // Types\nexport function isCssColor(color) {\n return !!color && /^(#|var\\(--|(rgb|hsl)a?\\()/.test(color);\n}\nexport function isParsableColor(color) {\n return isCssColor(color) && !/^((rgb|hsl)a?\\()?var\\(--/.test(color);\n}\nconst cssColorRe = /^(?(?:rgb|hsl)a?)\\((?.+)\\)/;\nconst mappers = {\n rgb: (r, g, b, a) => ({\n r,\n g,\n b,\n a\n }),\n rgba: (r, g, b, a) => ({\n r,\n g,\n b,\n a\n }),\n hsl: (h, s, l, a) => HSLtoRGB({\n h,\n s,\n l,\n a\n }),\n hsla: (h, s, l, a) => HSLtoRGB({\n h,\n s,\n l,\n a\n }),\n hsv: (h, s, v, a) => HSVtoRGB({\n h,\n s,\n v,\n a\n }),\n hsva: (h, s, v, a) => HSVtoRGB({\n h,\n s,\n v,\n a\n })\n};\nexport function parseColor(color) {\n if (typeof color === 'number') {\n if (isNaN(color) || color < 0 || color > 0xFFFFFF) {\n // int can't have opacity\n consoleWarn(`'${color}' is not a valid hex color`);\n }\n return {\n r: (color & 0xFF0000) >> 16,\n g: (color & 0xFF00) >> 8,\n b: color & 0xFF\n };\n } else if (typeof color === 'string' && cssColorRe.test(color)) {\n const {\n groups\n } = color.match(cssColorRe);\n const {\n fn,\n values\n } = groups;\n const realValues = values.split(/,\\s*/).map(v => {\n if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {\n return parseFloat(v) / 100;\n } else {\n return parseFloat(v);\n }\n });\n return mappers[fn](...realValues);\n } else if (typeof color === 'string') {\n let hex = color.startsWith('#') ? color.slice(1) : color;\n if ([3, 4].includes(hex.length)) {\n hex = hex.split('').map(char => char + char).join('');\n } else if (![6, 8].includes(hex.length)) {\n consoleWarn(`'${color}' is not a valid hex(a) color`);\n }\n const int = parseInt(hex, 16);\n if (isNaN(int) || int < 0 || int > 0xFFFFFFFF) {\n consoleWarn(`'${color}' is not a valid hex(a) color`);\n }\n return HexToRGB(hex);\n } else if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n return color;\n } else if (has(color, ['h', 's', 'l'])) {\n return HSVtoRGB(HSLtoHSV(color));\n } else if (has(color, ['h', 's', 'v'])) {\n return HSVtoRGB(color);\n }\n }\n throw new TypeError(`Invalid color: ${color == null ? color : String(color) || color.constructor.name}\\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);\n}\nexport function RGBToInt(color) {\n return (color.r << 16) + (color.g << 8) + color.b;\n}\nexport function classToHex(color, colors, currentTheme) {\n const [colorName, colorModifier] = color.toString().trim().replace('-', '').split(' ', 2);\n let hexColor = '';\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier];\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base;\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName];\n }\n return hexColor;\n}\n\n/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function HSVtoRGB(hsva) {\n const {\n h,\n s,\n v,\n a\n } = hsva;\n const f = n => {\n const k = (n + h / 60) % 6;\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n };\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255));\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n a\n };\n}\nexport function HSLtoRGB(hsla) {\n return HSVtoRGB(HSLtoHSV(hsla));\n}\n\n/** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function RGBtoHSV(rgba) {\n if (!rgba) return {\n h: 0,\n s: 1,\n v: 1,\n a: 1\n };\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + (g - b) / (max - min));\n } else if (max === g) {\n h = 60 * (2 + (b - r) / (max - min));\n } else if (max === b) {\n h = 60 * (4 + (r - g) / (max - min));\n }\n }\n if (h < 0) h = h + 360;\n const s = max === 0 ? 0 : (max - min) / max;\n const hsv = [h, s, max];\n return {\n h: hsv[0],\n s: hsv[1],\n v: hsv[2],\n a: rgba.a\n };\n}\nexport function HSVtoHSL(hsva) {\n const {\n h,\n s,\n v,\n a\n } = hsva;\n const l = v - v * s / 2;\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l);\n return {\n h,\n s: sprime,\n l,\n a\n };\n}\nexport function HSLtoHSV(hsl) {\n const {\n h,\n s,\n l,\n a\n } = hsl;\n const v = l + s * Math.min(l, 1 - l);\n const sprime = v === 0 ? 0 : 2 - 2 * l / v;\n return {\n h,\n s: sprime,\n v,\n a\n };\n}\nexport function RGBtoCSS(_ref) {\n let {\n r,\n g,\n b,\n a\n } = _ref;\n return a === undefined ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`;\n}\nexport function HSVtoCSS(hsva) {\n return RGBtoCSS(HSVtoRGB(hsva));\n}\nfunction toHex(v) {\n const h = Math.round(v).toString(16);\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase();\n}\nexport function RGBtoHex(_ref2) {\n let {\n r,\n g,\n b,\n a\n } = _ref2;\n return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : ''].join('')}`;\n}\nexport function HexToRGB(hex) {\n hex = parseHex(hex);\n let [r, g, b, a] = chunk(hex, 2).map(c => parseInt(c, 16));\n a = a === undefined ? a : a / 255;\n return {\n r,\n g,\n b,\n a\n };\n}\nexport function HexToHSV(hex) {\n const rgb = HexToRGB(hex);\n return RGBtoHSV(rgb);\n}\nexport function HSVtoHex(hsva) {\n return RGBtoHex(HSVtoRGB(hsva));\n}\nexport function parseHex(hex) {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n hex = hex.replace(/([^0-9a-f])/gi, 'F');\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('');\n }\n if (hex.length !== 6) {\n hex = padEnd(padEnd(hex, 6), 8, 'F');\n }\n return hex;\n}\nexport function parseGradient(gradient, colors, currentTheme) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x;\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGB(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',');\n });\n}\nexport function lighten(value, amount) {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value));\n lab[0] = lab[0] + amount * 10;\n return sRGB.fromXYZ(CIELAB.toXYZ(lab));\n}\nexport function darken(value, amount) {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value));\n lab[0] = lab[0] - amount * 10;\n return sRGB.fromXYZ(CIELAB.toXYZ(lab));\n}\n\n/**\n * Calculate the relative luminance of a given color\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nexport function getLuma(color) {\n const rgb = parseColor(color);\n return sRGB.toXYZ(rgb)[1];\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n */\nexport function getContrast(first, second) {\n const l1 = getLuma(first);\n const l2 = getLuma(second);\n const light = Math.max(l1, l2);\n const dark = Math.min(l1, l2);\n return (light + 0.05) / (dark + 0.05);\n}\nexport function getForeground(color) {\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), parseColor(color)));\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), parseColor(color)));\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n return whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000';\n}\n//# sourceMappingURL=colorUtils.mjs.map","/* eslint-disable no-console */\n\n// Utilities\nimport { warn } from 'vue';\nexport function consoleWarn(message) {\n warn(`Vuetify: ${message}`);\n}\nexport function consoleError(message) {\n warn(`Vuetify error: ${message}`);\n}\nexport function deprecate(original, replacement) {\n replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;\n warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);\n}\nexport function breaking(original, replacement) {\n // warn(`[Vuetify BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`)\n}\nexport function removed(original) {\n // warn(`[Vuetify REMOVED] '${original}' has been removed. You can safely omit it.`)\n}\n//# sourceMappingURL=console.mjs.map","// Composables\nimport { injectDefaults, internalUseDefaults } from \"../composables/defaults.mjs\"; // Utilities\nimport { defineComponent as _defineComponent // eslint-disable-line no-restricted-imports\n} from 'vue';\nimport { consoleWarn } from \"./console.mjs\";\nimport { pick } from \"./helpers.mjs\";\nimport { propsFactory } from \"./propsFactory.mjs\"; // Types\n// No props\n// Object Props\n// Implementation\nexport function defineComponent(options) {\n options._setup = options._setup ?? options.setup;\n if (!options.name) {\n consoleWarn('The component is missing an explicit name, unable to generate default prop value');\n return options;\n }\n if (options._setup) {\n options.props = propsFactory(options.props ?? {}, options.name)();\n const propKeys = Object.keys(options.props).filter(key => key !== 'class' && key !== 'style');\n options.filterProps = function filterProps(props) {\n return pick(props, propKeys);\n };\n options.props._as = String;\n options.setup = function setup(props, ctx) {\n const defaults = injectDefaults();\n\n // Skip props proxy if defaults are not provided\n if (!defaults.value) return options._setup(props, ctx);\n const {\n props: _props,\n provideSubDefaults\n } = internalUseDefaults(props, props._as ?? options.name, defaults);\n const setupBindings = options._setup(_props, ctx);\n provideSubDefaults();\n return setupBindings;\n };\n }\n return options;\n}\n\n// No argument - simple default slot\n\n// Generic constructor argument - generic props and slots\n\n// Slots argument - simple slots\n\n// Implementation\nexport function genericComponent() {\n let exposeDefaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n return options => (exposeDefaults ? defineComponent : _defineComponent)(options);\n}\nexport function defineFunctionalComponent(props, render) {\n render.props = props;\n return render;\n}\n\n// Adds a filterProps method to the component options\n\n// https://github.com/vuejs/core/pull/10557\n\n// not a vue Component\n//# sourceMappingURL=defineComponent.mjs.map","export const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving\n//# sourceMappingURL=easing.mjs.map","// Utilities\nimport { getCurrentInstance as _getCurrentInstance } from 'vue';\nimport { toKebabCase } from \"./helpers.mjs\"; // Types\nexport function getCurrentInstance(name, message) {\n const vm = _getCurrentInstance();\n if (!vm) {\n throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);\n }\n return vm;\n}\nexport function getCurrentInstanceName() {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';\n const vm = getCurrentInstance(name).type;\n return toKebabCase(vm?.aliasName || vm?.name);\n}\nlet _uid = 0;\nlet _map = new WeakMap();\nexport function getUid() {\n const vm = getCurrentInstance('getUid');\n if (_map.has(vm)) return _map.get(vm);else {\n const uid = _uid++;\n _map.set(vm, uid);\n return uid;\n }\n}\ngetUid.reset = () => {\n _uid = 0;\n _map = new WeakMap();\n};\n//# sourceMappingURL=getCurrentInstance.mjs.map","export function getScrollParent(el) {\n let includeHidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n while (el) {\n if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el;\n el = el.parentElement;\n }\n return document.scrollingElement;\n}\nexport function getScrollParents(el, stopAt) {\n const elements = [];\n if (stopAt && el && !stopAt.contains(el)) return elements;\n while (el) {\n if (hasScrollbar(el)) elements.push(el);\n if (el === stopAt) break;\n el = el.parentElement;\n }\n return elements;\n}\nexport function hasScrollbar(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;\n}\nfunction isPotentiallyScrollable(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n return ['scroll', 'auto'].includes(style.overflowY);\n}\n//# sourceMappingURL=getScrollParent.mjs.map","export const IN_BROWSER = typeof window !== 'undefined';\nexport const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;\nexport const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);\nexport const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;\n//# sourceMappingURL=globals.mjs.map","function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n// Utilities\nimport { capitalize, Comment, computed, Fragment, isVNode, reactive, readonly, shallowRef, toRefs, unref, watchEffect } from 'vue';\nimport { IN_BROWSER } from \"./globals.mjs\"; // Types\nexport function getNestedValue(obj, path, fallback) {\n const last = path.length - 1;\n if (last < 0) return obj === undefined ? fallback : obj;\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback;\n }\n obj = obj[path[i]];\n }\n if (obj == null) return fallback;\n return obj[path[last]] === undefined ? fallback : obj[path[last]];\n}\nexport function deepEqual(a, b) {\n if (a === b) return true;\n if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n // If the values are Date, compare them as timestamps\n return false;\n }\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false;\n }\n const props = Object.keys(a);\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false;\n }\n return props.every(p => deepEqual(a[p], b[p]));\n}\nexport function getObjectValueByPath(obj, path, fallback) {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback;\n if (obj[path] !== undefined) return obj[path];\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback);\n}\nexport function getPropertyFromItem(item, property, fallback) {\n if (property === true) return item === undefined ? fallback : item;\n if (property == null || typeof property === 'boolean') return fallback;\n if (item !== Object(item)) {\n if (typeof property !== 'function') return fallback;\n const value = property(item, fallback);\n return typeof value === 'undefined' ? fallback : value;\n }\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback);\n if (Array.isArray(property)) return getNestedValue(item, property, fallback);\n if (typeof property !== 'function') return fallback;\n const value = property(item, fallback);\n return typeof value === 'undefined' ? fallback : value;\n}\nexport function createRange(length) {\n let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return Array.from({\n length\n }, (v, k) => start + k);\n}\nexport function getZIndex(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0;\n const index = +window.getComputedStyle(el).getPropertyValue('z-index');\n if (!index) return getZIndex(el.parentNode);\n return index;\n}\nexport function convertToUnit(str) {\n let unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'px';\n if (str == null || str === '') {\n return undefined;\n } else if (isNaN(+str)) {\n return String(str);\n } else if (!isFinite(+str)) {\n return undefined;\n } else {\n return `${Number(str)}${unit}`;\n }\n}\nexport function isObject(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n}\nexport function isPlainObject(obj) {\n let proto;\n return obj !== null && typeof obj === 'object' && ((proto = Object.getPrototypeOf(obj)) === Object.prototype || proto === null);\n}\nexport function refElement(obj) {\n if (obj && '$el' in obj) {\n const el = obj.$el;\n if (el?.nodeType === Node.TEXT_NODE) {\n // Multi-root component, use the first element\n return el.nextElementSibling;\n }\n return el;\n }\n return obj;\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16\n});\nexport const keyValues = Object.freeze({\n enter: 'Enter',\n tab: 'Tab',\n delete: 'Delete',\n esc: 'Escape',\n space: 'Space',\n up: 'ArrowUp',\n down: 'ArrowDown',\n left: 'ArrowLeft',\n right: 'ArrowRight',\n end: 'End',\n home: 'Home',\n del: 'Delete',\n backspace: 'Backspace',\n insert: 'Insert',\n pageup: 'PageUp',\n pagedown: 'PageDown',\n shift: 'Shift'\n});\nexport function keys(o) {\n return Object.keys(o);\n}\nexport function has(obj, key) {\n return key.every(k => obj.hasOwnProperty(k));\n}\n// Array of keys\nexport function pick(obj, paths) {\n const found = {};\n const keys = new Set(Object.keys(obj));\n for (const path of paths) {\n if (keys.has(path)) {\n found[path] = obj[path];\n }\n }\n return found;\n}\n\n// Array of keys\n\n// Array of keys or RegExp to test keys against\n\nexport function pickWithRest(obj, paths, exclude) {\n const found = Object.create(null);\n const rest = Object.create(null);\n for (const key in obj) {\n if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {\n found[key] = obj[key];\n } else {\n rest[key] = obj[key];\n }\n }\n return [found, rest];\n}\nexport function omit(obj, exclude) {\n const clone = {\n ...obj\n };\n exclude.forEach(prop => delete clone[prop]);\n return clone;\n}\nexport function only(obj, include) {\n const clone = {};\n include.forEach(prop => clone[prop] = obj[prop]);\n return clone;\n}\nconst onRE = /^on[^a-z]/;\nexport const isOn = key => onRE.test(key);\nconst bubblingEvents = ['onAfterscriptexecute', 'onAnimationcancel', 'onAnimationend', 'onAnimationiteration', 'onAnimationstart', 'onAuxclick', 'onBeforeinput', 'onBeforescriptexecute', 'onChange', 'onClick', 'onCompositionend', 'onCompositionstart', 'onCompositionupdate', 'onContextmenu', 'onCopy', 'onCut', 'onDblclick', 'onFocusin', 'onFocusout', 'onFullscreenchange', 'onFullscreenerror', 'onGesturechange', 'onGestureend', 'onGesturestart', 'onGotpointercapture', 'onInput', 'onKeydown', 'onKeypress', 'onKeyup', 'onLostpointercapture', 'onMousedown', 'onMousemove', 'onMouseout', 'onMouseover', 'onMouseup', 'onMousewheel', 'onPaste', 'onPointercancel', 'onPointerdown', 'onPointerenter', 'onPointerleave', 'onPointermove', 'onPointerout', 'onPointerover', 'onPointerup', 'onReset', 'onSelect', 'onSubmit', 'onTouchcancel', 'onTouchend', 'onTouchmove', 'onTouchstart', 'onTransitioncancel', 'onTransitionend', 'onTransitionrun', 'onTransitionstart', 'onWheel'];\nconst compositionIgnoreKeys = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft', 'Enter', 'Escape', 'Tab', ' '];\nexport function isComposingIgnoreKey(e) {\n return e.isComposing && compositionIgnoreKeys.includes(e.key);\n}\n\n/**\n * Filter attributes that should be applied to\n * the root element of an input component. Remaining\n * attributes should be passed to the element inside.\n */\nexport function filterInputAttrs(attrs) {\n const [events, props] = pickWithRest(attrs, [onRE]);\n const inputEvents = omit(events, bubblingEvents);\n const [rootAttrs, inputAttrs] = pickWithRest(props, ['class', 'style', 'id', /^data-/]);\n Object.assign(rootAttrs, events);\n Object.assign(inputAttrs, inputEvents);\n return [rootAttrs, inputAttrs];\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff(a, b) {\n const diff = [];\n for (let i = 0; i < b.length; i++) {\n if (!a.includes(b[i])) diff.push(b[i]);\n }\n return diff;\n}\nexport function wrapInArray(v) {\n return v == null ? [] : Array.isArray(v) ? v : [v];\n}\nexport function defaultFilter(value, search, item) {\n return value != null && search != null && typeof value !== 'boolean' && value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1;\n}\nexport function debounce(fn, delay) {\n let timeoutId = 0;\n const wrap = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), unref(delay));\n };\n wrap.clear = () => {\n clearTimeout(timeoutId);\n };\n wrap.immediate = fn;\n return wrap;\n}\nexport function throttle(fn, limit) {\n let throttling = false;\n return function () {\n if (!throttling) {\n throttling = true;\n setTimeout(() => throttling = false, limit);\n return fn(...arguments);\n }\n };\n}\nexport function clamp(value) {\n let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n return Math.max(min, Math.min(max, value));\n}\nexport function getDecimals(value) {\n const trimmedStr = value.toString().trim();\n return trimmedStr.includes('.') ? trimmedStr.length - trimmedStr.indexOf('.') - 1 : 0;\n}\nexport function padEnd(str, length) {\n let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';\n return str + char.repeat(Math.max(0, length - str.length));\n}\nexport function padStart(str, length) {\n let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';\n return char.repeat(Math.max(0, length - str.length)) + str;\n}\nexport function chunk(str) {\n let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n const chunked = [];\n let index = 0;\n while (index < str.length) {\n chunked.push(str.substr(index, size));\n index += size;\n }\n return chunked;\n}\nexport function chunkArray(array) {\n let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return Array.from({\n length: Math.ceil(array.length / size)\n }, (v, i) => array.slice(i * size, i * size + size));\n}\nexport function humanReadableFileSize(bytes) {\n let base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n if (bytes < base) {\n return `${bytes} B`;\n }\n const prefix = base === 1024 ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G'];\n let unit = -1;\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base;\n ++unit;\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`;\n}\nexport function mergeDeep() {\n let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let arrayFn = arguments.length > 2 ? arguments[2] : undefined;\n const out = {};\n for (const key in source) {\n out[key] = source[key];\n }\n for (const key in target) {\n const sourceProperty = source[key];\n const targetProperty = target[key];\n\n // Only continue deep merging if\n // both properties are plain objects\n if (isPlainObject(sourceProperty) && isPlainObject(targetProperty)) {\n out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn);\n continue;\n }\n if (arrayFn && Array.isArray(sourceProperty) && Array.isArray(targetProperty)) {\n out[key] = arrayFn(sourceProperty, targetProperty);\n continue;\n }\n out[key] = targetProperty;\n }\n return out;\n}\nexport function flattenFragments(nodes) {\n return nodes.map(node => {\n if (node.type === Fragment) {\n return flattenFragments(node.children);\n } else {\n return node;\n }\n }).flat();\n}\nexport function toKebabCase() {\n let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str);\n const kebab = str.replace(/[^a-z]/gi, '-').replace(/\\B([A-Z])/g, '-$1').toLowerCase();\n toKebabCase.cache.set(str, kebab);\n return kebab;\n}\ntoKebabCase.cache = new Map();\nexport function findChildrenWithProvide(key, vnode) {\n if (!vnode || typeof vnode !== 'object') return [];\n if (Array.isArray(vnode)) {\n return vnode.map(child => findChildrenWithProvide(key, child)).flat(1);\n } else if (vnode.suspense) {\n return findChildrenWithProvide(key, vnode.ssContent);\n } else if (Array.isArray(vnode.children)) {\n return vnode.children.map(child => findChildrenWithProvide(key, child)).flat(1);\n } else if (vnode.component) {\n if (Object.getOwnPropertySymbols(vnode.component.provides).includes(key)) {\n return [vnode.component];\n } else if (vnode.component.subTree) {\n return findChildrenWithProvide(key, vnode.component.subTree).flat(1);\n }\n }\n return [];\n}\nvar _arr = /*#__PURE__*/new WeakMap();\nvar _pointer = /*#__PURE__*/new WeakMap();\nexport class CircularBuffer {\n constructor(size) {\n _classPrivateFieldInitSpec(this, _arr, []);\n _classPrivateFieldInitSpec(this, _pointer, 0);\n this.size = size;\n }\n push(val) {\n _classPrivateFieldGet(_arr, this)[_classPrivateFieldGet(_pointer, this)] = val;\n _classPrivateFieldSet(_pointer, this, (_classPrivateFieldGet(_pointer, this) + 1) % this.size);\n }\n values() {\n return _classPrivateFieldGet(_arr, this).slice(_classPrivateFieldGet(_pointer, this)).concat(_classPrivateFieldGet(_arr, this).slice(0, _classPrivateFieldGet(_pointer, this)));\n }\n}\nexport function getEventCoordinates(e) {\n if ('touches' in e) {\n return {\n clientX: e.touches[0].clientX,\n clientY: e.touches[0].clientY\n };\n }\n return {\n clientX: e.clientX,\n clientY: e.clientY\n };\n}\n\n// Only allow a single return type\n\n/**\n * Convert a computed ref to a record of refs.\n * The getter function must always return an object with the same keys.\n */\n\nexport function destructComputed(getter) {\n const refs = reactive({});\n const base = computed(getter);\n watchEffect(() => {\n for (const key in base.value) {\n refs[key] = base.value[key];\n }\n }, {\n flush: 'sync'\n });\n return toRefs(refs);\n}\n\n/** Array.includes but value can be any type */\nexport function includes(arr, val) {\n return arr.includes(val);\n}\nexport function eventName(propName) {\n return propName[2].toLowerCase() + propName.slice(3);\n}\nexport const EventProp = () => [Function, Array];\nexport function hasEvent(props, name) {\n name = 'on' + capitalize(name);\n return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);\n}\nexport function callEvent(handler) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n if (Array.isArray(handler)) {\n for (const h of handler) {\n h(...args);\n }\n } else if (typeof handler === 'function') {\n handler(...args);\n }\n}\nexport function focusableChildren(el) {\n let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const targets = ['button', '[href]', 'input:not([type=\"hidden\"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}${filterByTabIndex ? ':not([tabindex=\"-1\"])' : ''}:not([disabled])`).join(', ');\n return [...el.querySelectorAll(targets)];\n}\nexport function getNextElement(elements, location, condition) {\n let _el;\n let idx = elements.indexOf(document.activeElement);\n const inc = location === 'next' ? 1 : -1;\n do {\n idx += inc;\n _el = elements[idx];\n } while ((!_el || _el.offsetParent == null || !(condition?.(_el) ?? true)) && idx < elements.length && idx >= 0);\n return _el;\n}\nexport function focusChild(el, location) {\n const focusable = focusableChildren(el);\n if (!location) {\n if (el === document.activeElement || !el.contains(document.activeElement)) {\n focusable[0]?.focus();\n }\n } else if (location === 'first') {\n focusable[0]?.focus();\n } else if (location === 'last') {\n focusable.at(-1)?.focus();\n } else if (typeof location === 'number') {\n focusable[location]?.focus();\n } else {\n const _el = getNextElement(focusable, location);\n if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');\n }\n}\nexport function isEmpty(val) {\n return val === null || val === undefined || typeof val === 'string' && val.trim() === '';\n}\nexport function noop() {}\n\n/** Returns null if the selector is not supported or we can't check */\nexport function matchesSelector(el, selector) {\n const supportsSelector = IN_BROWSER && typeof CSS !== 'undefined' && typeof CSS.supports !== 'undefined' && CSS.supports(`selector(${selector})`);\n if (!supportsSelector) return null;\n try {\n return !!el && el.matches(selector);\n } catch (err) {\n return null;\n }\n}\nexport function ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n return child.type !== Fragment || ensureValidVNode(child.children);\n }) ? vnodes : null;\n}\nexport function defer(timeout, cb) {\n if (!IN_BROWSER || timeout === 0) {\n cb();\n return () => {};\n }\n const timeoutId = window.setTimeout(cb, timeout);\n return () => window.clearTimeout(timeoutId);\n}\nexport function eagerComputed(fn, options) {\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n flush: 'sync',\n ...options\n });\n return readonly(result);\n}\nexport function isClickInsideElement(event, targetDiv) {\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const divRect = targetDiv.getBoundingClientRect();\n const divLeft = divRect.left;\n const divTop = divRect.top;\n const divRight = divRect.right;\n const divBottom = divRect.bottom;\n return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;\n}\nexport function templateRef() {\n const el = shallowRef();\n const fn = target => {\n el.value = target;\n };\n Object.defineProperty(fn, 'value', {\n enumerable: true,\n get: () => el.value,\n set: val => el.value = val\n });\n Object.defineProperty(fn, 'el', {\n enumerable: true,\n get: () => refElement(el.value)\n });\n return fn;\n}\nexport function checkPrintable(e) {\n const isPrintableChar = e.key.length === 1;\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;\n return isPrintableChar && noModifier;\n}\n//# sourceMappingURL=helpers.mjs.map","// Types\n// eslint-disable-line vue/prefer-import-from-vue\n\n/**\n * Creates a factory function for props definitions.\n * This is used to define props in a composable then override\n * default values in an implementing component.\n *\n * @example Simplified signature\n * (props: Props) => (defaults?: Record) => Props\n *\n * @example Usage\n * const makeProps = propsFactory({\n * foo: String,\n * })\n *\n * defineComponent({\n * props: {\n * ...makeProps({\n * foo: 'a',\n * }),\n * },\n * setup (props) {\n * // would be \"string | undefined\", now \"string\" because a default has been provided\n * props.foo\n * },\n * }\n */\n\nexport function propsFactory(props, source) {\n return defaults => {\n return Object.keys(props).reduce((obj, prop) => {\n const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop]);\n const definition = isObjectDefinition ? props[prop] : {\n type: props[prop]\n };\n if (defaults && prop in defaults) {\n obj[prop] = {\n ...definition,\n default: defaults[prop]\n };\n } else {\n obj[prop] = definition;\n }\n if (source && !obj[prop].source) {\n obj[prop].source = source;\n }\n return obj;\n }, {});\n };\n}\n\n/**\n * Like `Partial` but doesn't care what the value is\n */\n\n// Copied from Vue\n//# sourceMappingURL=propsFactory.mjs.map","// Utilities\nimport { getCurrentInstance } from \"./getCurrentInstance.mjs\"; // Types\nexport function useRender(render) {\n const vm = getCurrentInstance('useRender');\n vm.render = render;\n}\n//# sourceMappingURL=useRender.mjs.map"],"names":["module","exports","it","isObject","core","version","global","exec","hasOwnProperty","dP","anObject","bitmap","value","cof","Constructor","name","forbiddenField","aFunction","toString","MATCH","ctx","Function","document","ITERATOR","done","META","pIE","f","Object","getOwnPropertySymbols","has","propertyIsEnumerable","DESCRIPTORS","$parseFloat","$parseInt","redefine","def","shared","toInteger","$export","id","store","classof","TO_PRIMITIVE","DateProto","Date","prototype","init","$iterators","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","key","_assertThisInitialized","self","ReferenceError","getDevtoolsGlobalHook","HOOK_SETUP","supported","hasBrowserEnv","window","VERSION","HttpStatusCode","_typeof","obj","Symbol","iterator","constructor","objectConstructor","o","allowArrayLike","call","next","bind","Array","isArray","TypeError","object","enumerableOnly","keys","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","n","all","Map","on","t","e","get","set","off","splice","indexOf","emit","slice","map","extend","src","noExtend","forEach","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","getWindow","win","classesToTokens","classes","trim","split","c","deleteProps","nextTick","delay","now","el","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","m41","parseFloat","m42","isNode","node","HTMLElement","nodeType","to","arguments","undefined","nextSource","keysArray","nextIndex","len","nextKey","desc","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","assignedElements","matches","elementIsChildOfSlot","slot","elementsQueue","elementToCheck","shift","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","tag","classList","add","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementTransitionEnd","fireCallBack","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","getSupport","calcDevice","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","major","minor","num","Number","isWebView","test","isSafariBrowser","getBrowser","Resize","observer","animationFrame","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","observerUpdate","attributes","childList","isElement","characterData","observeParents","containerParents","hostEl","observeSlideChildren","destroy","disconnect","eventsEmitter","events","handler","priority","eventsListeners","method","event","once","onceHandler","__emitterProxy","_len","args","_key","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","unshift","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","remove","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","slideSelector","closest","lazyEl","lazyPreloaderClass","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionDuration","transitionDelay","transitionEmit","direction","step","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","isInitialVirtual","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","indexAsNumber","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","slidesToAdd","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndex","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","newSlideTranslate","diff","touchEventsData","startTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","loopFixed","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isTouchEvent","proceed","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","detachEvents","events$1","isGridEnabled","breakpointsBase","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","removeClasses","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","res","slideSlots","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","m","Virtual","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","tempDOM","innerHTML","force","beforeInit","forceActiveIndex","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","domSlidesAssigned","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","targetElContainsTarget","rtlFactor","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","disableOnInteraction","stop","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetIsButton","pagination","clickable","isHidden","toggle","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","getMoveDirection","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","enableDraggable","disableDraggable","swiperEl","dragClass","draggable","scrollbarDisabledClass","Parallax","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","currentScale","currentRotate","elements","parallaxEl","parallaxDuration","_swiper","Zoom","zoom","limitToOriginalSize","maxRatio","panOnMouseMove","containerClass","zoomedSlideClass","isScaling","isPanningWithMouse","mousePanStart","mousePanSensitivity","fakeGestureTouched","fakeGestureMoved","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","distance","getMaxRatio","naturalWidth","imageMaxRatio","getScaleOrigin","getSlideSelector","eventWithinSlide","eventWithinZoomContainer","onGestureStart","scaleStart","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","preventTouchMove","isMouseEvent","isMousePan","onMouseMove","scaledWidth","scaledHeight","scaleRatio","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","DOMMatrix","newX","newY","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","in","out","Controller","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","by","isFinite","inverse","setControlledTransition","removeSpline","controlElements","controlElement","onControllerSwiper","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","hasClickablePagination","updatePagination","initNavEl","wrapperId","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","ariaLabelMessage","paginationEl","History","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","activeSlideHash","setHash","Autoplay","raf","timeLeft","waitForTransition","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","getSlideDelay","currentSlideDelay","run","delayForce","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","lastMoveEvent","pop","velocityEvent","minimumVelocity","momentumVelocityRatio","momentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","momentumBounceRatio","needsLoopFix","momentumBounce","j","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","onInit","onUpdate","appendElement","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","getSlide","transitionEndTarget","eventTriggered","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","shadowContainer","EffectFlip","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","prototypeGroup","protoMethod","paramsList","needsNavigation","needsPagination","needsScrollbar","attrToProp","attrName","l","updateSwiper","changedParams","scrollbarEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","appendChild","nextButtonSvg","prevButtonSvg","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","attr","moduleParam","mParam","startsWith","parentObjName","subObjName","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","SwiperContainer","super","attachShadow","mode","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkExists","linkEl","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","attributeChangedCallback","prevValue","observedAttributes","attrs","param","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","isBrowser","isRouteComponent","component","isESModule","__esModule","toStringTag","default","applyToParams","fn","noop","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeURI","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","decodeURIComponent","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","currentLocation","query","searchString","hashPos","searchPos","resolveRelativePath","fullPath","stringifyURL","stringifyQuery","stripBase","isSameRouteLocation","aLastIndex","matched","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","aliasOf","isSameRouteLocationParamsValue","isEquivalentArray","every","fromSegments","toSegments","lastToSegment","toPosition","segment","START_LOCATION_NORMALIZED","meta","redirectedFrom","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","docRect","elRect","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","delete","createBaseLocation","createCurrentLocation","slicePos","pathFromHash","useHistoryListeners","historyState","listeners","teardowns","pauseState","popStateHandler","fromState","listener","forward","unknown","pauseListeners","listen","teardown","beforeUnloadListener","buildState","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","error","createWebHistory","historyNavigation","historyListeners","triggerListeners","routerHistory","isRouteLocation","route","isRouteName","NavigationFailureSymbol","NavigationFailureType","createRouterError","Error","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","sensitive","strict","end","REGEX_CHARS_RE","tokensToParser","segments","extraOptions","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","re","RegExp","subPattern","endsWith","stringify","avoidDuplicatedSlash","compareScoreArray","comparePathParserScore","aScore","bScore","comp","isLastScoreNegative","last","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","buffer","previousState","tokens","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","alias","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","mergeOptions","normalizedRecords","aliases","components","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","isMatchable","insertMatcher","matcherRef","getRoutes","findInsertionIndex","resolve","paramsFromLocation","k","concat","parentMatcher","mergeMetaFields","clearRoutes","clear","normalized","redirect","beforeEnter","normalizeRecordProps","instances","leaveGuards","Set","updateGuards","enterCallbacks","propsObject","reduce","partialOptions","lower","upper","mid","sortOrder","insertionAncestor","getInsertionAncestor","lastIndexOf","ancestor","hasLeadingIM","searchParams","searchParam","eqPos","currentValue","values","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","handlers","list","guardToPromiseFn","guard","runWithContext","enterCallbackArray","Promise","reject","valid","guardReturn","guardCall","then","catch","extractComponentsGuards","guardType","guards","rawComponent","__vccOpts","componentPromise","resolved","resolvedComponent","mods","useLink","router","currentRoute","activeRecordIndex","routeMatched","currentMatched","parentRecordPath","getOriginalPath","includesParams","isExactActive","navigate","guardEvent","viewTransition","startViewTransition","preferSingleVNode","vnodes","RouterLinkImpl","compatConfig","MODE","required","Boolean","activeClass","exactActiveClass","ariaCurrentValue","setup","slots","link","elClass","getLinkClass","linkActiveClass","linkExactActiveClass","h","class","RouterLink","defaultPrevented","currentTarget","outer","inner","innerValue","outerValue","some","propClass","globalClass","defaultClass","RouterViewImpl","inheritAttrs","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","instance","oldInstance","oldName","flush","currentName","ViewComponent","normalizeSlot","Component","routePropsOption","routeProps","onVnodeUnmounted","vnode","isUnmounted","ref","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","scrollBehavior","scrollRestoration","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","matcherLocation","targetParams","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","targetLocation","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","app","installedApps","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","reverse","canceledNavigationCheck","runGuardQueue","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","info","listening","ready","readyHandlers","errorListeners","isReady","started","beforeEach","beforeResolve","afterEach","onError","install","config","globalProperties","$router","reactiveRoute","provide","unmountApp","unmount","promise","recordFrom","recordTo","VMenuSymbol","for","elementToViewport","getOffset","anchorToPoint","anchor","align","isFixedPosition","offsetParent","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","propsFactory","locationStrategy","validator","useLocationStrategies","contentStyles","updateLocation","getIntrinsicSize","isRtl","contentBox","right","activatorFixed","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","minWidth","minHeight","maxWidth","maxHeight","Infinity","contentEl","targetBox","scrollParents","getScrollParent","viewportMargin","viewport","rect","scrollBox","bottom","placement","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","hasOverflowX","before","after","hasOverflowY","newPlacement","flip","newOverflows","pixelRound","pixelCeil","newTarget","newContentEl","oldTarget","oldContentEl","immediate","result","devicePixelRatio","clean","requestNewFrame","cb","frame","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","useScrollStrategies","scope","async","active","bindScroll","scrollElements","contained","scrollbarWidth","scrollableParent","removeProperty","slow","ric","performance","requestIdleCallback","cancelIdleCallback","WeakMap","bindProps","_handler","unbindProps","makeActivatorProps","activator","activatorProps","openOnClick","openOnHover","openOnFocus","closeOnContentClick","useActivator","isTop","vm","getCurrentInstance","activatorEl","isHovered","isFocused","firstEnter","runOpenDelay","runCloseDelay","cursorTarget","availableEvents","onMouseenter","onMouseleave","onFocus","onBlur","activatorEvents","contentEvents","onFocusin","onFocusout","menu","closeParents","scrimEvents","activatorRef","targetRef","getTarget","_useActivator","bindActivatorProps","getActivator","_props","unbindActivatorProps","Node","ELEMENT_NODE","oldVal","proxy","$el","hasAttribute","StackSymbol","globalStack","useStack","disableGlobalStack","createStackEntry","stack","activeChildren","_zIndex","lastZIndex","at","uid","idx","globalTop","_isTop","localTop","stackStyles","useTeleport","teleportTarget","_target","targetElement","container","Scrim","modelValue","color","rest","backgroundColorClasses","backgroundColorStyles","makeVOverlayProps","absolute","closeOnBack","contentClass","contentProps","noClickAnimation","persistent","scrim","VOverlay","directives","ClickOutside","_disableGlobalStack","emits","afterEnter","afterLeave","scrimEl","model","themeClasses","rtlClasses","hasContent","onAfterLeave","_onAfterLeave","scrimColor","rootNode","ShadowRoot","dimensionStyles","isMounted","scopeId","onClickOutside","animateClick","closeConditional","MouseEvent","shadowTarget","onKeydown","focus","easing","onAfterEnter","scrollParent","scrollingElement","useRender","include","makeVTooltipProps","eager","VTooltip","overlay","overlayProps","filterProps","$event","forwardRefs","useResizeObserver","resizeRef","oldValue","VuetifyLayoutKey","VuetifyLayoutItemKey","ROOT_ZINDEX","makeLayoutProps","overlaps","fullHeight","makeLayoutItemProps","useLayout","layout","getLayoutItem","mainRect","mainStyles","useLayoutItem","isKeptAlive","layoutItemStyles","layoutItemScrimStyles","unregister","layoutRect","generateLayers","layoutSizes","activeItems","previousLayer","layers","layer","createLayout","parentLayout","rootZIndex","registered","priorities","disabledTransitions","computedOverlaps","overlap","topPosition","bottomPosition","topAmount","bottomAmount","uniquePriorities","items","transitionsEnabled","rootVm","layoutSize","elementSize","disableTransitions","instanceIndex","isOppositeHorizontal","isOppositeVertical","unit","layoutClasses","layoutStyles","layoutRef","makeVAppProps","VApp","theme","makeTagProps","makeVToolbarTitleProps","VToolbarTitle","hasText","makeTransitionProps","group","hideOnLeave","leaveAbsolute","createCssTransition","functions","onBeforeEnter","onLeave","_transitionInitialStyles","css","createJavascriptTransition","expandedParentClass","sizeProperty","offsetProperty","_parent","_initialStyle","onEnter","initialStyle","resetStyles","onEnterCancelled","onLeaveCancelled","makeVDialogTransitionProps","VDialogTransition","pointerEvents","visibility","sx","sy","getDimensions","animation","getChildren","finished","onBeforeLeave","els","elBox","anchorSide","anchorOffset","tsx","tsy","maxs","asa","VFabTransition","VDialogBottomTransition","VDialogTopTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition","makeVDefaultsProviderProps","scoped","VDefaultsProvider","useAspectStyles","aspectStyles","aspectRatio","paddingBottom","makeVResponsiveProps","inline","VResponsive","additional","makeRoundedProps","rounded","tile","useRounded","roundedClasses","makeVImgProps","alt","cover","gradient","lazySrc","rootMargin","sizes","crossorigin","referrerpolicy","srcset","VImg","intersect","loadstart","load","currentSrc","naturalHeight","normalisedSrc","aspect","isIntersecting","lazyImg","pollForSize","getSrc","img","timer","poll","imgHeight","imgWidth","containClasses","__image","objectPosition","sources","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","responsiveProps","makeBorderProps","border","useBorder","borderClasses","makeElevationProps","elevation","useElevation","elevationClasses","allowedDensities","makeVToolbarProps","collapse","density","extended","extensionHeight","floating","title","VToolbar","isExtended","extension","contentHeight","VBtn","variant","hasTitle","hasImage","VTabs","makeScrollProps","scrollTarget","scrollThreshold","useScroll","canScroll","previousScroll","previousScrollHeight","currentScroll","savedScroll","currentThreshold","isScrollActive","isScrollingUp","scrollRatio","pageYOffset","currentScrollHeight","Window","scrollHeight","useSsrBoot","ssrBootStyles","makeVAppBarProps","VAppBar","vToolbarRef","fullyHide","inverted","elevate","fadeImage","canHide","isCollapsed","isFlat","toolbarProps","makeDensityProps","useDensity","densityClasses","allowedVariants","genOverlays","isClickable","makeVariantProps","useVariant","variantClasses","colorClasses","colorStyles","makeVBtnGroupProps","baseColor","divided","VBtnGroup","makeGroupProps","multiple","mandatory","selectedClass","makeGroupItemProps","useGroupItem","injectKey","isSelected","isFirst","isLast","select","useGroup","selected","getIds","arr","getValues","groupVm","unwrapped","useIndexAsValue","forceMandatoryValue","internalValue","currentId","currentIndex","newItem","getItemIndex","ids","itemByIndex","itemIndex","VBtnToggleSymbol","makeVBtnToggleProps","VBtnToggle","btnGroupProps","predefinedSizes","makeSizeProps","useSize","sizeClasses","sizeStyles","makeVIconProps","icon","VIcon","slotIcon","iconData","textColorClasses","textColorStyles","slotValue","hasClick","onClickOnce","fontSize","useIntersectionObserver","intersectionRef","IntersectionObserver","entry","makeVProgressCircularProps","bgColor","indeterminate","VProgressCircular","MAGIC_RADIUS_CONSTANT","CIRCUMFERENCE","underlayColorClasses","underlayColorStyles","normalizedValue","diameter","strokeWidth","strokeDashOffset","oppositeMap","makeLocationProps","useLocation","opposite","locationStyles","makeVProgressLinearProps","bgOpacity","bufferValue","bufferColor","bufferOpacity","stream","striped","roundedBar","VProgressLinear","bufferColorClasses","bufferColorStyles","barColorClasses","barColorStyles","normalizedBuffer","isReversed","isForcedColorsModeActive","handleClick","borderTop","bar","makeLoaderProps","loading","useLoader","loaderClasses","LoaderSlot","positionValues","makePositionProps","usePosition","positionClasses","useSelectLink","isLink","makeVBtnProps","activeColor","symbol","prependIcon","appendIcon","readonly","slim","stacked","ripple","variantProps","showColor","isDisabled","isElevated","valueAttr","Tag","hasPrepend","hasAppend","hasIcon","linkProps","loader","makeVAppBarNavIconProps","VAppBarNavIcon","VAppBarTitle","createSimpleFunctional","klass","VAlertTitle","allowedTypes","makeVAlertProps","borderColor","closable","closeIcon","closeLabel","prominent","VAlert","closeProps","hasClose","makeVAvatarProps","VAvatar","makeVLabelProps","VLabel","VSelectionControlGroupSymbol","makeSelectionControlGroupProps","defaultsTarget","falseIcon","trueIcon","valueComparator","makeVSelectionControlGroupProps","VSelectionControlGroup","updateHandlers","forceUpdate","onForceUpdate","makeVSelectionControlProps","trueValue","falseValue","useSelectionControl","isMultiple","newVal","VSelectionControl","Ripple","isFocusVisible","input","isInteractive","onClickLabel","onInput","checked","rootAttrs","inputAttrs","inputNode","makeVCheckboxBtnProps","indeterminateIcon","VCheckboxBtn","onChange","controlProps","calculateUpdatedTarget","selectedElement","containerElement","containerSize","getOffsetSize","getScrollPosition","childrenSize","childrenStartPosition","getOffsetPosition","additionalOffset","calculateCenteredTarget","containerOffsetSize","childrenOffsetPosition","childrenOffsetSize","getScrollSize","getClientSize","scrollWidth","VSlideGroupSymbol","makeVSlideGroupProps","centerActive","nextIcon","prevIcon","showArrows","mobile","VSlideGroup","displayClasses","isOverflowing","scrollOffset","contentSize","containerRef","containerRect","contentRef","goTo","goToOptions","firstSelectedIndex","lastSelectedIndex","scrollToChildren","scrollSize","containerWidth","horizontal","ignoreFocusEvent","relatedTarget","onFocusAffixes","toFocus","firstElementChild","lastElementChild","focusable","preventScroll","offsetStep","slotProps","hasAffixes","hasPrev","hasNext","clientSize","scrollSizeMax","VChipGroupSymbol","makeVChipGroupProps","VChipGroup","VChip","slideGroupProps","makeVChipProps","appendAvatar","filterIcon","pill","prependAvatar","onKeyDown","hasAppendMedia","hasFilter","hasPrependMedia","hasColor","ListKey","createList","updateHasPrepend","useList","independentActiveStrategy","strategy","activate","activated","independentSingleActiveStrategy","parentStrategy","singleSelected","leafActiveStrategy","_ref3","leafSingleActiveStrategy","_ref4","singleOpenStrategy","open","opened","newOpened","multipleOpenStrategy","listOpenStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","_ref5","classicSelectStrategy","_ref6","original","childrenIds","everySelected","cid","noneSelected","_ref7","VNestedSymbol","emptyNested","openOnSelect","activatable","selectable","selectedValues","getPath","makeNestedProps","activeStrategy","selectStrategy","openStrategy","useNested","nodeIds","parentId","isGroup","newPath","newSelected","newActivated","useNestedItem","uidSymbol","computedId","isOpen","isActivated","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator","VListGroupActivator","defineComponent","makeVListGroupProps","collapseIcon","expandIcon","fluid","subgroup","VListGroup","_id","toggleIcon","activatorDefaults","VListItem","makeVListItemSubtitleProps","VListItemSubtitle","VListItemTitle","makeVListItemProps","lines","nav","subtitle","roundedProps","lineClasses","hasSubtitle","VListItemAction","makeVListSubheaderProps","inset","VListSubheader","makeVDividerProps","thickness","vertical","VDivider","dividerStyles","makeVListChildrenProps","returnObject","VListChildren","itemProps","subheader","slotsWithItem","listGroupProps","listItemProps","header","makeItemsProps","itemTitle","itemValue","itemChildren","transformItem","transformItems","useItems","hasNullItem","transformIn","transformOut","isPrimitive","itemType","useListItems","makeVListProps","VList","onMousedown","makeVMenuProps","submenu","closeDelay","openDelay","VMenu","openChildren","onFocusIn","HTMLTextAreaElement","HTMLInputElement","nextElement","tabIndex","onActivatorKeydown","makeVCounterProps","VCounter","functional","counter","makeVFieldLabelProps","VFieldLabel","useInputIcon","InputIcon","localeKey","prependInner","appendInner","makeFocusProps","focused","useFocus","focusClasses","makeVFieldProps","appendInnerIcon","clearable","clearIcon","centerAffix","dirty","persistentClear","prependInnerIcon","singleLine","VField","hasLabel","messagesId","labelRef","floatingLabelRef","controlRef","isPlainOrUnderlined","targetRect","targetWidth","targetStyle","onKeydownClear","isOutlined","hasClear","filterFieldProps","makeVMessagesProps","messages","VMessages","FormKey","makeFormProps","fastFail","validateOn","createForm","isReadonly","isValidating","errors","validate","results","itemErrorMessages","errorMessages","resetValidation","invalid","isValid","deep","useForm","makeValidationProps","maxErrors","rules","validationValue","useValidation","validationModel","form","internalErrorMessages","isPristine","isDirty","invalidInput","validationClasses","silent","rule","unwatch","makeVInputProps","hideDetails","hideSpinButtons","hint","persistentHint","VInput","hasMessages","hasDetails","details","activeTypes","makeVTextFieldProps","autofocus","counterValue","persistentPlaceholder","persistentCounter","modelModifiers","VTextField","Intersect","maxlength","onIntersect","vInputRef","vFieldRef","inputRef","onControlMousedown","onControlClick","onClear","caretPosition","selectionStart","selectionEnd","hasCounter","inputProps","fieldProps","fieldClass","makeVVirtualScrollItemProps","renderless","VVirtualScrollItem","itemRef","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","useVirtual","first","paddingTop","markerRef","markerOffset","viewportHeight","hasInitialRender","offsets","updateTime","targetScrollIndex","getSize","updateOffsets","calculateVisibleItems","scrollToIndex","handleItemResize","prevHeight","prevMinHeight","calculateOffset","calculateIndex","binaryClosest","lastScrollTop","scrollVelocity","scrollTime","scrollDeltaT","handleScrollend","_calculateVisibleItems","startPx","endPx","topOverflow","bottomOverflow","bufferOverflow","computedItems","high","low","makeVVirtualScrollProps","VVirtualScroll","handleListeners","useScrolling","listRef","textFieldRef","scrollTimeout","onListScroll","finishScrolling","onListKeydown","onScrollPassive","makeSelectProps","chips","closableChips","closeText","openText","hideNoData","hideSelected","listProps","menuIcon","menuProps","noDataText","openOnClear","itemColor","makeVSelectProps","VSelect","ue","vTextFieldRef","vMenuRef","vVirtualScrollRef","_menu","transformed","selection","keyboardLookupLastTime","keyboardLookupPrefix","displayItems","menuDisabled","computedMenuProps","listEvents","onMousedownControl","KEYBOARD_LOOKUP_THRESHOLD","onModelUpdate","hasChips","chip","hasList","textFieldProps","externalValue","onChipClose","hasSlot","defaultFilter","toLocaleLowerCase","makeFilterProps","customFilter","customKeyFilter","filterKeys","filterMode","noFilter","filterItems","customFiltersLength","customMatches","defaultMatches","keyFilter","defaultMatchesLength","customMatchesLength","useFilter","filteredItems","filteredMatches","transformedItems","getMatches","_query","strQuery","originalItems","_filteredItems","_filteredMatches","highlightResult","makeVAutocompleteProps","autoSelectFirst","clearOnSelect","VAutocomplete","listHasFocus","selectionIndex","filteredItem","hasSelectionSlot","highlightFirst","selectFirst","onMousedownMenuIcon","originalSelectionIndex","setSelectionRange","onUpdateModelValue","isSelecting","makeVBadgeProps","bordered","content","dot","textColor","VBadge","badgeAttrs","badge","makeVBannerActionsProps","VBannerActions","VBannerText","makeVBannerProps","avatar","VBanner","actions","makeVBottomNavigationProps","grow","VBottomNavigation","makeVDialogProps","fullscreen","retainFocus","scrollable","VDialog","firstElement","lastElement","tabindex","makeVBottomSheetProps","VBottomSheet","dialogProps","makeVBreadcrumbsDividerProps","VBreadcrumbsDivider","makeVBreadcrumbsItemProps","VBreadcrumbsItem","makeVBreadcrumbsProps","VBreadcrumbs","VCardActions","makeVCardSubtitleProps","VCardSubtitle","VCardTitle","makeCardItemProps","VCardItem","makeVCardTextProps","VCardText","makeVCardProps","hover","VCard","hasHeader","hasCardItem","VWindowSymbol","VWindowGroupSymbol","makeVWindowProps","continuous","VWindow","Touch","rootRef","isRtlReverse","transitionCount","transitionHeight","itemsLength","canMoveBack","canMoveForward","arrows","prevProps","nextProps","touchOptions","makeVCarouselProps","cycle","delimiterIcon","hideDelimiters","hideDelimiterBackground","interval","verticalDelimiters","VCarousel","windowRef","slideTimeout","startTimeout","restartTimeout","windowProps","makeVWindowItemProps","reverseTransition","VWindowItem","groupItem","isTransitioning","hasTransition","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnterTransition","makeVCarouselItemProps","VCarouselItem","imgProps","windowItemProps","makeVCheckboxProps","VCheckbox","controlAttrs","checkboxProps","VCode","makeVColorPickerCanvasProps","dotSize","VColorPickerCanvas","hue","isInteracting","canvasRef","canvasWidth","canvasHeight","_dotPosition","dotPosition","dotStyles","radius","updateDotPosition","handleMouseDown","handleMouseMove","handleMouseUp","coords","updateCanvas","canvas","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","stripAlpha","extractColor","hex","converted","nullColor","rgba","inputs","getValue","getColor","g","rgb","hsla","hsl","hexa","modes","VColorPickerInput","makeVColorPickerEditProps","VColorPickerEdit","enabledModes","mi","VSliderSymbol","getPosition","makeSliderProps","thumbColor","thumbLabel","thumbSize","showTicks","ticks","tickSize","trackColor","trackFillColor","useSteps","decimals","roundValue","clamped","toFixed","useSlider","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","indexFromEnd","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","trackStart","trackLength","clickOffset","clickPos","handleStop","handleStart","moveListenerOptions","onSliderMouseUp","onSliderTouchend","onSliderTouchstart","onSliderMousedown","percentage","parsedTicks","hasLabels","makeVSliderThumbProps","VSliderThumb","slider","elevationProps","pageup","pagedown","home","down","up","keyValues","relevantKeys","multipliers","parseKeydown","_step","increase","positionPercentage","circle","makeVSliderTrackProps","VSliderTrack","trackFillColorClasses","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","tick","directionValue","makeVSliderProps","VSlider","thumbContainerRef","roundedValue","trackStop","makeVColorPickerPreviewProps","hideAlpha","VColorPickerPreview","abortController","AbortController","openEyeDropper","eyeDropper","EyeDropper","signal","colorHexValue","sRGBHex","abort","background","red","lighten5","lighten4","lighten3","lighten2","lighten1","darken1","darken2","darken3","darken4","accent1","accent2","accent3","accent4","pink","purple","deepPurple","indigo","blue","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","blueGrey","grey","shades","black","white","transparent","makeVColorPickerSwatchesProps","swatches","parseDefaultColors","colors","VColorPickerSwatches","swatch","hsva","makeVSheetProps","VSheet","makeVColorPickerProps","hideCanvas","hideSliders","hideInputs","showSwatches","swatchesMaxHeight","VColorPicker","currentColor","externalChange","updateColor","sheetProps","makeVComboboxProps","delimiters","VCombobox","cleared","_search","makeVConfirmEditProps","cancelText","okText","VConfirmEdit","cancel","save","internalModel","structuredClone","actionsUsed","makeDataTableExpandProps","expandOnClick","showExpand","expanded","VDataTableExpandedKey","provideExpanded","expand","newExpanded","isExpanded","toggleExpand","useExpanded","makeDataTableGroupProps","groupBy","VDataTableGroupSymbol","createGroupBy","provideGroupBy","disableSort","sortBy","sortByWithGroups","isGroupOpen","toggleGroup","extractRows","dive","useGroupBy","groupItemsByProperty","groupItems","groupedItems","flattenItems","flatItems","useGroupedItems","useOptions","page","itemsPerPage","oldOptions","makeDataTablePaginateProps","VDataTablePaginationSymbol","createPagination","providePagination","startIndex","pageCount","setItemsPerPage","nextPage","prevPage","setPage","usePagination","usePaginatedItems","paginatedItems","singleSelectStrategy","showSelectAll","allSelected","selectAll","pageSelectStrategy","currentPage","allSelectStrategy","allItems","_ref8","makeDataTableSelectProps","showSelect","VDataTableSelectionSymbol","provideSelection","_ref9","allSelectable","currentPageSelectable","isSomeSelected","toggleSelect","someSelected","useSelection","makeDataTableSortProps","customKeySort","multiSort","mustSort","VDataTableSortSymbol","createSort","provideSort","toggleSort","newSortBy","isSorted","useSort","useSortedItems","locale","sortedItems","sortItems","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","usage","hasCustomResult","sortKey","sortA","sortB","sortARaw","sortBRaw","customResult","compare","makeDataIteratorItemsProps","itemSelectable","useDataIteratorItems","makeVDataIteratorProps","VDataIterator","paginatedItemsWithoutGroups","footer","useRefs","refs","updateRef","makeVPaginationProps","totalVisible","firstIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","VPagination","maxButtons","firstItem","totalWidth","itemWidth","getMax","minButtons","range","MAX_SAFE_INTEGER","even","middle","rangeLength","rangeStart","setValue","VPaginationBtn","prevDisabled","nextDisabled","updateFocus","makeVDataTableFooterProps","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","showCurrentPage","VDataTableFooter","option","paginationProps","VDataTableColumn","fixed","fixedOffset","lastFixed","noPadding","nowrap","makeDataTableHeaderProps","headers","VDataTableHeadersSymbol","defaultHeader","sortable","defaultActionHeader","priorityQueue","queue","enqueue","added","count","whole","dequeue","extractLeaves","columns","extractKeys","getDefaultItem","getDepth","parseFixedColumns","seenFixed","setFixed","parentFixed","setFixedOffset","maxDepth","currentDepth","rowSize","fraction","rowspan","colspan","pow","convertToInternalHeaders","internalHeaders","defaultItem","internalItem","createHeaders","filterFunctions","_headers","parsed","flatHeaders","sortRaw","useHeaders","makeVDataTableHeadersProps","sortAscIcon","sortDescIcon","headerProps","VDataTableHeaders","getFixedStyles","getSortIcon","headerCellClasses","VDataTableHeaderCell","columnSlotName","columnSlotProps","VDataTableMobileHeaderCell","showSelectColumn","makeVDataTableGroupHeaderRowProps","VDataTableGroupHeaderRow","selectGroup","makeVDataTableRowProps","cellProps","onContextmenu","onDblclick","VDataTableRow","slotName","headerSlotName","columnCellProps","displayValue","getPrefixedEventHandlers","getData","acc","makeVDataTableRowsProps","loadingText","rowProps","VDataTableRows","itemSlotProps","makeVTableProps","fixedHeader","fixedFooter","VTable","wrapper","makeDataTableItemsProps","itemColumns","useDataTableItems","makeDataTableProps","hideDefaultBody","hideDefaultFooter","hideDefaultHeader","makeVDataTableProps","VDataTable","internalItems","dataTableFooterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","colgroup","thead","tbody","tfoot","makeVDataTableVirtualProps","VDataTableVirtual","makeVDataTableServerProps","VDataTableServer","itemsWithoutGroups","VSpacer","makeVDatePickerControlsProps","modeIcon","viewMode","VDatePickerControls","disableMonth","disableYear","disablePrev","disableNext","onClickPrev","onClickNext","onClickYear","onClickMonth","makeVDatePickerHeaderProps","VDatePickerHeader","onClickAppend","makeCalendarProps","allowedDates","month","showAdjacentMonths","year","weekdays","weeksInMonth","firstDayOfWeek","useCalendar","adapter","date","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","day","weeks","getWeekArray","days","daysInMonth","lastDay","week","addDays","genDays","today","toJsDate","getDay","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","endOfMonth","isSame","formatted","format","isWeekStart","isWeekEnd","isToday","localized","daysInWeek","startOfWeek","weekNumbers","isAfter","d","makeVDatePickerMonthProps","hideWeekdays","showWeek","VDatePickerMonth","daysRef","rangeStop","isReverse","atMax","onRangeClick","_value","startOfDay","isBefore","endOfDay","getDiff","datesInRange","nextDate","onMultipleClick","getWeekdays","weekDay","makeVDatePickerMonthsProps","VDatePickerMonths","months","getNextMonth","btnProps","makeVDatePickerYearsProps","VDatePickerYears","years","yearRef","scrollIntoView","VPickerTitle","makeVPickerProps","landscape","hideHeader","VPicker","makeVDatePickerProps","VDatePicker","isReversing","setDate","headerTransition","minDate","maxDate","targets","_date","onUpdateYear","onUpdateMonth","onClickDate","arrBefore","arrAfter","newMonth","newYear","pickerProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","makeVEmptyStateProps","actionText","justify","headline","textWidth","VEmptyState","onClickAction","hasActions","hasHeadline","hasMedia","media","VExpansionPanelSymbol","makeVExpansionPanelTextProps","VExpansionPanelText","expansionPanel","makeVExpansionPanelTitleProps","hideActions","VExpansionPanelTitle","makeVExpansionPanelProps","VExpansionPanel","selectedIndices","isBeforeSelected","selectedIndex","isAfterSelected","expansionPanelTitleProps","expansionPanelTextProps","makeVExpansionPanelsProps","VExpansionPanels","variantClass","makeVFabProps","appear","VFab","hasPosition","orientation","vFabRef","makeVFileInputProps","counterSizeString","counterString","hideInput","showSize","VFileInput","files","totalBytes","bytes","totalBytesReadable","fileNames","file","fileCount","onClickPrepend","hasModelReset","makeVFooterProps","VFooter","makeVFormProps","VForm","submit","formRef","onReset","onSubmit","_e","finally","makeVContainerProps","VContainer","breakpointProps","offsetProps","offsetKey","orderProps","orderKey","propMap","col","breakpointClass","ALIGN_SELF_VALUES","makeVColProps","alignSelf","str","VCol","hasColClasses","ALIGNMENT","SPACE","makeRowProps","prefixKey","ALIGN_VALUES","alignValidator","alignProps","JUSTIFY_VALUES","justifyValidator","justifyProps","ALIGN_CONTENT_VALUES","alignContentValidator","alignContentProps","alignContent","classMap","makeVRowProps","dense","noGutters","VRow","makeVHoverProps","VHover","isHovering","makeVInfiniteScrollProps","loadMoreText","emptyText","VInfiniteScrollIntersect","VInfiniteScroll","rootEl","startStatus","endStatus","setScrollAmount","getScrollAmount","getContainerSize","setStatus","status","getStatus","previousScrollSize","handleIntersect","_isIntersecting","intersecting","renderSide","empty","hasStartIntersect","hasEndIntersect","intersectMode","VItemGroupSymbol","makeVItemGroupProps","VItemGroup","VItem","VKbd","makeVLayoutProps","VLayout","makeVLayoutItemProps","VLayoutItem","makeVLazyProps","VLazy","VListImg","makeVListItemActionProps","makeVListItemMediaProps","VListItemMedia","makeVLocaleProviderProps","fallbackLocale","VLocaleProvider","makeVMainProps","VMain","useSticky","isSticky","isStuck","stuckPosition","stickyStyles","layoutTop","bodyScroll","HORIZON","HISTORY","kineticEnergyToVelocity","work","sqrt2","calculateImpulseVelocity","samples","vprev","vcurr","useVelocity","addMovement","timeStamp","endTouch","getVelocity","newest","absX","absY","oops","useTouch","isTemporary","touchless","onTouchstart","onTouchmove","onTouchend","maybeDragging","isDragging","dragProgress","pos","getProgress","limit","touchZone","inTouchZone","inElement","dx","dy","thresholdMet","vx","vy","dragStyles","locations","makeVNavigationDrawerProps","disableResizeWatcher","disableRouteWatcher","expandOnHover","permanent","rail","railWidth","temporary","VNavigationDrawer","isPersistent","scrimStyles","VNoSsr","show","makeVOtpInputProps","focusAll","VOtpInput","finish","fields","focusIndex","isValidNumber","onPaste","clipboardText","clipboardData","makeVParallaxProps","VParallax","displayHeight","Document","scrollPos","sizeScale","makeVRadioProps","VRadio","makeVRadioGroupProps","VRadioGroup","makeVRangeSliderProps","VRangeSlider","startThumbRef","stopThumbRef","stopOffset","makeVRatingProps","itemAriaLabel","emptyIcon","fullIcon","halfIncrements","itemLabels","itemLabelPosition","VRating","rating","increments","flatMap","hoverIndex","itemState","isFilled","isFullIcon","eventState","VRatingItem","showStar","createLabel","labelProps","rootTypes","article","card","heading","ossein","paragraph","sentences","table","genBone","genBones","bone","genStructure","mapBones","bones","makeVSkeletonLoaderProps","boilerplate","VSkeletonLoader","isLoading","loadingProps","ariaLive","VSlideGroupItem","slideGroupItem","useCountdown","milliseconds","clearInterval","setInterval","elapsed","makeVSnackbarProps","multiLine","VSnackbar","countdown","timerRef","hasLayout","activeTimeout","onPointerenter","onPointerleave","locationClasses","loc","makeLineProps","autoDraw","autoDrawDuration","autoDrawEasing","gradientDirection","labels","labelSize","lineWidth","padding","showLabels","smooth","makeVBarlineProps","autoLineWidth","VBarline","boundary","genBars","totalValues","maxValue","minValue","gridX","gridY","horizonY","parsedLabels","bars","gradientData","textAnchor","dominantBaseline","isCollinear","checkCollinear","getDistance","isTooCloseForRadius","radiusForPoint","moveTo","p0","p1","p2","vector","unitVector","makeVTrendlineProps","VTrendline","lastLength","genPoints","genPath","pathRef","getTotalLength","strokeDasharray","strokeDashoffset","makeVSparklineProps","VSparkline","totalHeight","lineProps","makeVSpeedDialProps","VSpeedDial","menuRef","VStepperSymbol","makeVStepperActionsProps","prevText","nextText","VStepperActions","prevSlotProps","nextSlotProps","VStepperHeader","makeStepperItemProps","completeIcon","editable","editIcon","errorIcon","makeVStepperItemProps","VStepperItem","canEdit","hasError","hasCompleted","makeVStepperWindowProps","VStepperWindow","_model","makeVStepperWindowItemProps","VStepperWindowItem","makeStepperProps","altLabels","nonLinear","makeVStepperProps","VStepper","_items","hasWindow","makeVSwitchProps","VSwitch","loaderColor","onTrackClick","thumb","makeVSystemBarProps","VSystemBar","VTabsSymbol","makeVTabProps","sliderColor","hideSlider","VTab","sliderColorClasses","sliderColorStyles","sliderEl","updateSlider","prevBox","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","initialScale","sigma","backgroundColor","makeVTabsWindowProps","VTabsWindow","makeVTabsWindowItemProps","VTabsWindowItem","parseItems","makeVTabsProps","alignTabs","fixedTabs","tab","makeVTextareaProps","autoGrow","noResize","maxRows","VTextarea","controlHeight","textareaRef","sizerRef","calculateInputHeight","fieldStyle","lineHeight","makeVThemeProviderProps","withBackground","VThemeProvider","makeVTimelineDividerProps","dotColor","fillDot","hideDot","iconColor","lineColor","VTimelineDivider","lineColorClasses","lineColorStyles","makeVTimelineItemProps","hideOpposite","lineInset","VTimelineItem","dotRef","makeVTimelineProps","lineThickness","truncateLine","VTimeline","sideClasses","truncateClasses","makeVToolbarItemsProps","VToolbarItems","VValidation","validation","useColor","caretColor","useTextColor","useBackgroundColor","makeComponentProps","firstDay","AD","AE","AF","AG","AI","AL","AM","AN","AR","AS","AT","AU","AX","AZ","BA","BD","BE","BG","BH","BM","BN","BR","BS","BT","BW","BY","BZ","CA","CH","CL","CM","CN","CO","CR","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ES","ET","FI","FJ","FO","FR","GB","GE","GF","GP","GR","GT","GU","HK","HN","HR","HU","ID","IE","IL","IN","IQ","IR","IS","IT","JM","JO","JP","KE","KG","KH","KR","KW","KZ","LA","LB","LI","LK","LT","LU","LV","LY","MC","MD","ME","MH","MK","MM","MN","MO","MQ","MT","MV","MX","MY","MZ","NI","NL","NO","NP","NZ","OM","PA","PE","PH","PK","PL","PR","PT","PY","QA","RE","RO","RS","RU","SA","SD","SE","SG","SI","SK","SM","SV","SY","TH","TJ","TM","TR","TT","TW","UA","UM","US","UY","UZ","VA","VE","VI","VN","WS","XK","YE","ZA","ZW","currentWeek","firstDayOfMonth","lastDayOfMonth","firstDayWeekIndex","lastDayWeekIndex","adjacentDay","getDate","getFullYear","endOfWeek","parseLocalDate","parts","_YYYMMDD","sundayJanuarySecond2000","daysFromSunday","weekday","DateTimeFormat","formatString","formats","newDate","customFormat","NumberFormat","hour","hour12","minute","second","timeZone","timeZoneName","parseISO","addMinutes","setMinutes","getMinutes","addHours","setHours","getHours","addWeeks","addMonths","getPreviousMonth","endOfYear","isWithinRange","comparing","isAfterDay","isEqual","isSameYear","setFullYear","VuetifyDateAdapter","DateOptionsSymbol","DateAdapterSymbol","createDate","_options","af","bg","ca","ckb","cs","de","en","et","fa","fi","hr","hu","he","ja","ko","lv","lt","nl","no","pl","pt","ro","ru","sk","sl","srCyrl","srLatn","sv","th","tr","az","uk","vi","zhHans","zhHant","createInstance","useDate","getWeek","d1w1","tv","diffTime","diffDays","injectSelf","provides","DefaultsSymbol","createDefaults","injectDefaults","provideDefaults","injectedDefaults","providedDefaults","properties","propIsDefined","internalUseDefaults","__name","componentDefaults","_as","Proxy","Reflect","_subcomponentDefaults","provideSubDefaults","injected","subComponents","fromEntries","makeDelayProps","useDelay","clearDelay","runDelay","isOpening","makeDimensionProps","useDimension","DisplaySymbol","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","parseDisplayOptions","getClientWidth","ssr","getClientHeight","getPlatform","cordova","electron","chrome","edge","firefox","opera","mac","linux","createDisplay","breakpointValue","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","makeDisplayProps","useDisplay","Refs","getDescriptor","currentObj","getPrototypeOf","setupState","childRefs","GoToSymbol","genDefaults","patterns","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getContainer","totalOffset","createGoTo","ease","layoutOffset","clampTarget","startLocation","currentTime","timeElapsed","useGoTo","goToInstance","containerHeight","useHydration","IconValue","IconSymbol","makeIconProps","VComponentIcon","Icon","VSvgIcon","VLigatureIcon","VClassIcon","svg","createIcons","sets","defaultSet","mdi","vuetify","useIcon","icons","iconAlias","iconSetName","setName","iconName","iconSet","makeLazyProps","useLazy","dismiss","confirmEdit","ok","dataIterator","noResultsText","dataTable","sortDescending","sortAscending","sortNone","activateNone","activateDescending","activateAscending","dataFooter","itemsPerPageAll","firstPage","lastPage","dateRangeInput","datePicker","itemsSelected","carousel","delimiter","calendar","moreEvents","prependAction","appendAction","otp","fileInput","counterSize","timePicker","am","pm","previous","stepper","infiniteScroll","loadMore","LANG_PREFIX","createTranslateFunction","fallback","shortKey","currentLocale","createNumberFunction","numberFormat","useProvided","provided","createProvideFunction","createVuetifyAdapter","LocaleSymbol","isLocaleInstance","createLocale","i18n","createRtl","useLocale","provideLocale","provideRtl","ar","es","fr","km","useRtl","useProxiedModel","defaultValue","kebabProp","checkKebab","isControlled","useRoute","$route","useRouter","routerLink","makeRouterProps","inTransition","useBackButton","removeBefore","removeAfter","popped","onPopstate","useScopeId","ThemeSymbol","makeThemeProps","defaultTheme","variations","lighten","darken","themes","light","dark","surface","primary","secondary","success","warning","variables","parseThemeOptions","createTheme","parsedOptions","computedThemes","variation","onColor","colorVal","createCssClass","genCssVariables","themeName","bgLines","fgLines","getHead","nonce","cspNonce","head","_context","usehead","patch","addHeadObjs","updateDOM","styleEl","updateStyles","provideTheme","newTheme","useTheme","line","lightOverlay","darkOverlay","useToggleScope","source","MaybeTransition","customProps","attachedRoot","composed","defaultConditional","checkEvent","binding","checkIsActive","directive","_clickOutside","lastMousedownWasOutside","handleShadow","$","beforeUnmount","modifiers","modifierKeys","subtree","sub","unmounted","_mutate","Mutate","_onResize","quiet","arg","_onScroll","updated","Scroll","useDirectiveComponent","concreteComponent","hook","mountComponent","findComponentParent","appContext","create","walk","suspense","ssContent","subTree","Tooltip","_observe","stopSymbol","DELAY_RIPPLE","isKeyboardEvent","calculate","localX","localY","_ripple","centerX","centerY","ripples","computed","dataset","previousPosition","getElementsByClassName","isHiding","removeChild","isRippleEnabled","rippleShow","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","removeListeners","handleGesture","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","touchstart","touchend","touchmove","touchmoveX","touchmoveY","move","createHandlers","_touchHandlers","createVuetify","blueprint","aliasName","$nuxt","mixin","$vuetify","inject","checkboxOn","checkboxOff","checkboxIndeterminate","sortAsc","sortDesc","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","unfold","plus","minus","treeviewCollapse","treeviewExpand","parseAnchor","toPhysical","flipSide","flipAlign","flipCorner","getAxis","nullifyTransforms","ta","w","keyframes","onfinish","Box","getOverflow","getTargetBox","mainTRC","Rco","Gco","Bco","normBG","normTXT","revTXT","revBG","blkThrs","blkClmp","deltaYmin","scaleBoW","scaleWoB","loConThresh","loConFactor","loConOffset","loClip","APCAcontrast","Rtxt","Gtxt","Btxt","Rbg","Gbg","Bbg","outputContrast","Ytxt","Ybg","SAPC","cielabForwardTransform","cbrt","cielabReverseTransform","fromXYZ","xyz","transformedY","toXYZ","lab","Ln","srgbForwardMatrix","srgbForwardTransform","C","srgbReverseMatrix","srgbReverseTransform","isCssColor","isParsableColor","cssColorRe","mappers","HSLtoRGB","hsv","HSVtoRGB","parseColor","realValues","int","HexToRGB","HSLtoHSV","RGBtoHSV","HSVtoHSL","sprime","RGBtoCSS","HSVtoCSS","toHex","RGBtoHex","parseHex","HexToHSV","HSVtoHex","getLuma","getContrast","l1","l2","getForeground","blackContrast","whiteContrast","consoleWarn","consoleError","deprecate","replacement","_setup","propKeys","setupBindings","genericComponent","exposeDefaults","defineFunctionalComponent","standardEasing","deceleratedEasing","acceleratedEasing","getCurrentInstanceName","_uid","_map","getUid","includeHidden","isPotentiallyScrollable","hasScrollbar","getScrollParents","stopAt","overflowY","IN_BROWSER","SUPPORTS_INTERSECTION","SUPPORTS_TOUCH","maxTouchPoints","SUPPORTS_EYE_DROPPER","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_classPrivateFieldSet","_assertClassBrand","_classPrivateFieldGet","getNestedValue","deepEqual","getObjectValueByPath","getPropertyFromItem","createRange","convertToUnit","isPlainObject","proto","refElement","TEXT_NODE","keyCodes","freeze","esc","del","backspace","insert","pick","pickWithRest","exclude","omit","clone","only","onRE","isOn","bubblingEvents","compositionIgnoreKeys","isComposingIgnoreKey","isComposing","filterInputAttrs","inputEvents","wrapInArray","debounce","timeoutId","wrap","clamp","getDecimals","trimmedStr","padEnd","padStart","chunk","chunked","humanReadableFileSize","mergeDeep","arrayFn","sourceProperty","targetProperty","flattenFragments","nodes","toKebabCase","kebab","findChildrenWithProvide","_arr","_pointer","CircularBuffer","getEventCoordinates","destructComputed","getter","EventProp","hasEvent","callEvent","focusableChildren","filterByTabIndex","getNextElement","_el","inc","focusChild","isEmpty","matchesSelector","supportsSelector","CSS","supports","ensureValidVNode","defer","isClickInsideElement","targetDiv","mouseX","mouseY","divRect","divLeft","divTop","divRight","divBottom","templateRef","checkPrintable","isPrintableChar","noModifier","isObjectDefinition","definition"],"sourceRoot":""}